实验环境
1.野火STM32MINI开发板
2.keil5
实验目的
在STM32下完成一个基于FreeRTOS的多任务程序,执行3个周期性task,具体任务如下:
- task1,每间隔500ms闪烁(变化)一次LED;
- task2,每间隔2000ms,向串口发送一次指令数据“helloworld!";
- task3,每间隔5000ms,从AHT20采集一次温湿度数据(不考虑硬件情况,仅写出整个多任务框架模拟代码)。
实验步骤
1.FreeRTOS程序框架移植
FreeRTOS源码来源:
- 野火官方资料
- 官网下载: www.freertos.org
- 百度网盘下载:https://pan.baidu.com/share/init?surl=q2NweY7NgdVdHth5ayHbIQ
提取码:ab12
2.打开程序,查看main.c
3.找到任务句柄创建
添加我们要实现的任务句柄
4.找到任务句柄函数
修改为我们要的句柄函数
5.任务创建函数AppTaskCreate()
写入我们要创建的任务,并设置优先级
6.写入任务主体
LED1_Task任务主体
AHT20_Task任务主体
Helloworld_Task任务主体
一切修改完成后,用mcuisp烧录到开发板中,用野火串口调试助手显示结果
代码:
main函数:
int main(void)
{
BaseType_t xReturn = pdPASS;/* 定义一个创建信息返回值,默认为pdPASS */
/* 开发板硬件初始化 */
BSP_Init();
printf("这是一个[野火]-STM32全系列开发板-FreeRTOS-动态创建多任务实验!\r\n");
/* 创建AppTaskCreate任务 */
xReturn = xTaskCreate((TaskFunction_t )AppTaskCreate, /* 任务入口