STM32的一个基于FreeRTOS的多任务程序
1、FreeRTOS原理
作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能等,可基本满足较小系统的需要。FreeRTOS内核支持优先级调度算法,每个任务可根据重要程度的不同被赋予一定的优先级,CPU总是让处于就绪态的、优先级最高的任务先运行。FreeRT0S内核同时支持轮换调度算法,系统允许不同的任务使用相同的优先级,在没有更高优先级任务就绪的情况下,同一优先级的任务共享CPU的使用时间。
2、上机实验作业内容
学习FreeRTOS原理,在STM32下完成一个基于FreeRTOS的多任务程序,执行3个周期性task,具体任务不限,但建议如下:task1,每间隔500ms闪烁(变化)一次LED;task2,每间隔2000ms,向串口发送一次指令数据“helloworld!";task3,每间隔5000ms,从AHT20采集一次温湿度数据(不考虑硬件情况,仅写出整个多任务框架模拟代码)
3、FreeRTOS移植
本人使用的是野火SRM32F103指南者的开发板,有关的资料、源程序代码和软件皆来自野火的官网。
我个人是直接使用的野火的官方教程中的例程源码
注意要将该文件夹放在无中文目录中,否则工程编译可能会出现问题。
直接打开该工程
在该代码上修改部分即可(由于task3暂时尚不能硬件实现,故可忽略,只写两个task)
添加任务2
完成代码修改后进如下等操作
(本人使用的是ST-Link连接线,需要预先安装其驱动程序)
接着进行编译等操作
实验结果如下所示
输入stop stm32!以停止程序
4、小结
在本次实验过程中遇到了一些问题,如出现Flash Download failed - “Cortex-M3”
在通过网络寻求帮助的前提下成功解决了问题