随着嵌入式应用程序变得越来越复杂,单片机裸机开发已经无法满足工程师对于复杂程序的需求。于是具有多任务调度和实时响应特性的RTOS便越来越受工程师们青睐。瑞萨RA系列MCU兼容FreeRTOS系统,开发环境e2 studio完美支持FreeRTOS,无需额外手动移植。以下介绍如何用瑞萨e2 studio创建RA系列MCU的FreeRTOS工程。
对于不熟悉瑞萨的FSP开发环境的工程师们,此文章能够很好帮助大家了解RA系列的FreeRTOS并快速创建FreeRTOS工程,详细步骤如下:
1
创建工程
按正常步骤创建RA工程时,选择FreeRTOS。
2
FreeRTOS的FSP配置
22.1 在Stack中创建任务,并命名为Task1和Task2,内存管理默认为静态内存分配。
22.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函数。
22.3 任务中添加外设、队列、信号量等
22.4 配置好定时器后,点Generate Project Content生产底层代码。
本例程实现简单的LED灯闪烁,定时器0和定时器1的周期分别配置为300ms和800ms。定时器和LED管脚的配置方法,就不在此做详细说明了。
3
FreeRTOS底层代码介绍
33.1 代码生成,文件夹目录如下
33.2 用户无需手动调用API函数创建任务,FSP生成的main函数里会分别调用task1_create()和task2_create()创建任务,创建完成后执行vTaskStartScheduler ()启动任务调度。
33.3 在任务中task1_entry.c和task2_entry.c添加用户初始化和应用代码。
带FreeRTOS的工程里,生成的main函数里不会调用hal_entry.c,而是直接创建任务后,执行任务切换,进入任务函数task1_entry.c和task2_entry.c。
1
全部0条评论
快来发表一下你的评论吧 !