RA FreeRTOS任务创建

描述

 

随着嵌入式应用程序变得越来越复杂,单片机裸机开发已经无法满足工程师对于复杂程序的需求。于是具有多任务调度和实时响应特性的RTOS便越来越受工程师们青睐。瑞萨RA系列MCU兼容FreeRTOS系统,开发环境e2 studio完美支持FreeRTOS,无需额外手动移植。以下介绍如何用瑞萨e2 studio创建RA系列MCU的FreeRTOS工程。

 

对于不熟悉瑞萨的FSP开发环境的工程师们,此文章能够很好帮助大家了解RA系列的FreeRTOS并快速创建FreeRTOS工程,详细步骤如下:

 

1

创建工程

 

按正常步骤创建RA工程时,选择FreeRTOS。

mcu

 

2

FreeRTOS的FSP配置

 

 

2.1

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

mcu

 

 

2.2

FreeRTOS通用项Common设置简单说明。

注: 多个任务时,所有任务公用Common的设置。如task1和task2,在task1页面设置完Common后,无需再在task2页面设置。

 

2.2.1 Common->General:

mcu

 

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函数。

mcu

 

 

2.3

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

mcu

 

 

2.4

配置好定时器后,点Generate Project Content生产底层代码。

本例程实现简单的LED灯闪烁,定时器0和定时器1的周期分别配置为300ms和800ms。定时器和LED管脚的配置方法,就不在此做详细说明了。

 

3

FreeRTOS底层代码介绍

 

 

3.1

代码生成,文件夹目录如下

mcu

 

 

3.2

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

mcu

 

 

3.3

在任务中task1_entry.c和task2_entry.c添加用户初始化和应用代码。

带FreeRTOS的工程里,生成的main函数里不会调用hal_entry.c,而是直接创建任务后,执行任务切换,进入任务函数task1_entry.c和task2_entry.c。

mcu

 

更多内容欢迎查看:

mcu

 

1

END

1

 


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分