STM32下基于FreeRTOS的多任务程序
文章目录
一、FreeRTOS的移植
FreeRTOS是一个热门的嵌入式设备用即时操作系统核心,已被经成功移植到35种不同的微控制器上。小巧且简易,整个核心代码可能只有3到4个C文件。
1、对文件FreeRTOSv9.0.0的操作
把FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_STM32F103_Keil目录下的FreeRTOSConfig.h放到source文件目录下:
把FreeRTOSv9.0.0\FreeRTOS\Source\portable\IAR目录下的ARM_CM3复制到keil文件目录下:
portable文件夹,我们只需要留下keil、MemMang和RVDS这三个文件夹,其他的都可以删除掉,完成以后如图所示:
2、任意打开一个工程文件,进行移植。
向工程分组中添加文件
打开基础工程,新建分组FreeRTOS_CORE和 FreeRTOS_PORTABLE,然向这两个分组中添加文件,如图所示:
3、添加相应的头文件路径
添加完FreeRTOS源码中的C文件以后还要添加FreeRTOS源码的头文件路径,如图:
至此,就配置完成可以写代码了。
二、基于FreeRTOS的多任务程序
任务:
task1,每间隔500ms闪烁(变化)一次LED;
task2,每间隔2000ms,向串口发送一次指令数据“helloworld!";
task3,每间隔5000ms,从AHT20采集一次温湿度数据(不考虑硬件情况,仅写出整个多任务框架模拟代码)。
1、打开工程,动态创建多任务
把main.c里的static void LED2_Task()函数的内容改为以下:
while (1)
{
printf("hello world!\n");
vTaskDelay(2000);
}
代码见图:
#include "FreeRTOS.h"
#include "task.h"
#include "bsp_led.h"
#include "bsp_usart.h"