开发环境:
IDE:MKD 5.38a
开发板:CPKCOR-RA8D1B开发板
MCU:R7FA8D1BHEC332AS00
1 前言
基于瑞萨的MCU移植FreeRTOS很简单,只需简单配置即可生成FreeRTOS的工程。笔者这里使用Renesas RA Smart Configurator和Keil5开发。
2 新建FreeRTOS工程
打开RA Smart Configurator,选择File->New->FSP Project,即可新建工程。
Figure 2-1 新建FSP Project工程
首先选择工程路径,笔者这里使用默认的路径。
Figure 2-2 工程路径选择
接下来配置FSP版本,MCU型号等信息,根据实际情况选择吧。
Figure 2-3 FSP 基本参数配置
然后就是选择安全策略,尽管RA8D1支持 TrustZone,但这里暂时不选。
Figure 2-4 选择是否支持 TrustZone
接下来选择RTOS的支持,FSP 5.1.0支持FreeRTOS、Threadx,这里选择FreeRTOS。
Figure 2-5 选择RTOS
接下来就是选择工程模板。
Figure 2-6 工程模板选择
接下来在新建一个空任务。点击“Stacks Configuration->New Thread”即可新建一个任务。
Figure 2-7 配置任务
Common是关于FreeRTOS的配置,Thread是新建线程的配置参数,这里只关注Thread的配置。
其中Symbol是任务句柄的名字,Name是任务入口的名字,Stack size为栈大小,Priority为任务优先级。Memory Allocation为内存分配方式,这里使用静态开辟。如果要是用动态开辟,需要把Common中的Memory Allocation中的Dynamic Allocation使能,并设置总的Heap Size,其他参数默认即可。
还需要配置下时钟,外部晶振是24MHz,因此需要修改下输入时钟的大小,MOSC默认是20MHz。主频的时钟为默认的 240 MHz,来源是MOSC的24MHz时钟,经过PLL倍频,流向系统时钟。详细请查看RA Smart Configurator文件的配置。
Figure 2-8 RA Smart Configurator时钟配置
这里将LED配置后为输出模式。
Figure 2-9 RA Smart Configurator配置GPIO
然后最后点右上角的 “Generate Project Content” 图标生成工程即可。
配置完成后就可生成工程了。
Figure 2-10 工程生成
最后,打开工程目录,信息如下。
Figure 2-11 工程目录
3 编译工程
打开软件,接口尝试编译工程。
Figure 3-1 MDK编译工程
如果没有报错与警告,说明生成工程成功。
Figure 3-2 编译Log信息
接下来就可以基于FreeRTOS进行开发了。
笔者这里以LED为例,任务函数如下。
#define GPIO_LED1 BSP_IO_PORT_10_PIN_01
/* LED_Thread entry function */
/* pvParameters contains TaskHandle_t */
void led_thread_entry(void * pvParameters)
{
FSP_PARAMETER_NOT_USED(pvParameters);
/* TODO: add your own code here */
while(1)
{
R_IOPORT_PinWrite(&g_ioport_ctrl, GPIO_LED1, BSP_IO_LEVEL_LOW);
vTaskDelay(500);
R_IOPORT_PinWrite(&g_ioport_ctrl, GPIO_LED1, BSP_IO_LEVEL_HIGH);
vTaskDelay(500);
}
}
重新编译后下载到板子中LED会不断闪烁。