随着嵌入式应用程序变得越来越复杂,单片机裸机开发已经无法满足工程师对于复杂程序的需求。于是具有多任务调度和实时响应特性的RTOS便越来越受工程师们青睐。瑞萨RA系列MCU兼容FreeRTOS系统,开发环境e2 studio完美支持FreeRTOS,无需额外手动移植。以下介绍如何用瑞萨e2 studio创建RA系列MCU的FreeRTOS工程。
对于不熟悉瑞萨的FSP开发环境的工程师们,此文章能够很好帮助大家了解RA系列的FreeRTOS并快速创建FreeRTOS工程,详细步骤如下:
1
创建工程
按正常步骤创建RA工程时,选择FreeRTOS。

2
FreeRTOS的FSP配置
2.1
在Stack中创建任务,并命名为Task1和Task2,内存管理默认为静态内存分配。

2.2
FreeRTOS通用项Common设置简单说明。
注: 多个任务时,所有任务公用Common的设置。如task1和task2,在task1页面设置完Common后,无需再在task2页面设置。
2.2.1 Common->General:

2.2.2 Common -> Memory Allocation, Optional Functions:
内存分配:如果选择了动态内存管理,则需Enable Support Dynamic Allocation,同时在New Stack –> RTOS中添加heap x(1~5),FreeRTOS在创建任务、信号量、队列等时候会使用heap_x.c中的内存申请函数来申请内存。这些内存就是从Total Heap Size中申请的。
API函数:可enable或disable相应的FreeRTOS API函数。

2.3
任务中添加外设、队列、信号量等

2.4
配置好定时器后,点Generate Project Content生产底层代码。
本例程实现简单的LED灯闪烁,定时器0和定时器1的周期分别配置为300ms和800ms。定时器和LED管脚的配置方法,就不在此做详细说明了。
3
FreeRTOS底层代码介绍
3.1
代码生成,文件夹目录如下

3.2
用户无需手动调用API函数创建任务,FSP生成的main函数里会分别调用task1_create()和task2_create()创建任务,创建完成后执行vTaskStartScheduler ()启动任务调度。

3.3
在任务中task1_entry.c和task2_entry.c添加用户初始化和应用代码。
带FreeRTOS的工程里,生成的main函数里不会调用hal_entry.c,而是直接创建任务后,执行任务切换,进入任务函数task1_entry.c和task2_entry.c。

更多内容欢迎查看:

1
END
1
-
mcu
+关注
关注
147文章
19110浏览量
403230 -
瑞萨
+关注
关注
38文章
22516浏览量
91164
发布评论请先 登录
【RA-Eco-RA4M2开发板评测】+ FreeRTOS多任务初探
如何在 i.MX8QM 上将 FlexCAN 与 FreeRTOS 任务(信号量或任务通知)一起使用?
Freertos 任务视图显示运行时值,但配置后百分比错误,为什么?
【瑞萨FPB-RA6E2试用】【瑞萨RA × Zephyr开发板评测】+线程创建及测试
【瑞萨FPB-RA6E2试用】环境配置及基础任务代码示例
FreeRTOS 空闲任务
FreeRTOS任务调度及优先级问题
【RA4E2开发板评测】电压检测器 FreeRTOS显示量程0-3300 mV
【RA-Eco-RA6M4开发板评测】2、移植FreeRTOS_CLI和添加自定义指令
【RA4L1-SENSOR】电压检测器第一个程序增加 FreeRTOS显示量程0-3300 mV和量程0-15000mV]
【RA4L1-SENSOR】4、移植FreeRTOS-CLI
【RA4L1-SENSOR】04 用FreeRTOS重构工程
详解FreeRTOS与SAFERTOS的区别
RA FreeRTOS任务创建
评论