随着嵌入式应用程序变得越来越复杂,单片机裸机开发已经无法满足工程师对于复杂程序的需求。于是具有多任务调度和实时响应特性的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
+关注
关注
146文章
17397浏览量
353199 -
瑞萨
+关注
关注
36文章
22316浏览量
86969
原文标题:RA FreeRTOS任务创建
文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论