
(一)裸机工程创建 使用STM32CubeMX创建裸机工程: 这里我是用的芯片是STM32F103RBT6,时钟主频为72MHz,配置时钟树: ![]() 配置调试串口1: ![]() 配置两个LED灯: ![]() 由于FreeRTOS使用系统嘀嗒定时器当作心跳,HAL库也使用了这个定时器当作超时计数用,FreeRTOS和HAL库不能同时使用SysTick定时器,所在在这里将HAL库的定时器改为其他的定时器,我改成了定时器4: ![]() 配置中断,注意这里一定要选择组4,也就是全部为抢占优先级: ![]() 输出工程: ![]() ![]() (二)移植FreeRTOS 解压FreeRTOS源码包有如下文件结构: ![]() 在Keil工程目录下新建FreeRTOS文件夹用于存放freertos的源码。 拷贝FreeRTOS/Source/文件夹内的以下文件,放入keil工程目录FreeRTOS文件夹内,效果如下图: ![]() 在Keil中将FreeRTOS源码加入到工程内: ![]() 打开stm32f1xx_it.c文件,在头部添加FreeRTOS的三个函数导入:
![]() 在函数SVC_Handler中添加函数调用: ![]() 在函数PendSV_Handler中添加函数调用: ![]() 在函数SysTick_Handler中添加函数调用: ![]() 新建一个名为FreeRTOSConfig.h的文件,这是FreeRTOS的配置文件,这里我贴一个我配置的:
修改main.c文件,添加头文件:
这里我创建了三个任务,任务一为led1灯每间隔500ms闪烁一次,任务二led2每间隔300ms闪烁一次,任务三为串口每隔1s打印一次helloworld。
到此,移植完毕! 总结:移植FreeRTOS还是相对简单的,主要是配置文件FreeRTOSConfig.h的配置,每个宏定义所代表的意思需要好好查阅! |
【下载有礼】STM32 Finder华为应用商店正式上线!移动选型工具助力开发效率升级
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命