一、实验目的
- 熟悉开发环境
- 在开发板上通过freeRTOS进行LED控制
二、实验环境
硬件:STM32开发板、CMSIS-DAP调试工具
软件:STM32CubeMX软件、ARM的IDE:Keil C51
三、实验内容
1.实验原理
freeRTOS是一种专门设计的嵌入式实时操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行,并且具有庞大的社区和生态。在STM32 CubeMX可以配置 freeRTOS 的一些重要的属性,包括是否支持抢占机制,freeRTOS 的 系统时钟速率,最大优先级数量,最小任务栈尺寸,最大任务名称长度等。本次实验需要通过freeRTOS进行LED控制,具体流程如下图图1所示:
图 1
2.实验代码
(1)freertos.c文件
如图2,在void MX_FREERTOS_Init(void)函数,即 FreeRTOS初始化函数中,定义并创建了三个线程:红色LED、绿色LED和蓝色LED。每个线程都有其优先级和堆栈大小。
图 2
(2)main.c文件
在main函数中使用了FreeRTOS实时操作系统,包括系统时钟配置、GPIO初始化、FreeRTOS对象的初始化和任务的创建与调度。
图 3
3.实验结果
如图5、图6、图7所示,可以看到开发板在程序的运行下依次由蓝灯变成红灯,再变成绿灯。
图 4
图 5
图 6
四、实验小结
本次实验通过freeRTOS进行对LED的控制,FreeRTOS提供了丰富的API和工具,使得嵌入式系统的开发更加高效和可靠,将程序分成更小的任务,使得每个任务能够有效执行。