随着嵌入式应用程序变得越来越复杂,单片机裸机开发已经无法满足工程师对于复杂程序的需求。于是具有多任务调度和实时响应特性的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文章
18605浏览量
386978 -
瑞萨
+关注
关注
36文章
22429浏览量
89748
发布评论请先 登录
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的任务中发送事件队列是有什么限制吗?
详解FreeRTOS与SAFERTOS的区别

RA FreeRTOS任务创建
评论