目录
如果这篇文章能帮助到你,请点个赞鼓励一下吧ξ( ✿>◡❛)~
1、相信你已经下载好了STM32CubeMX软件
2、在STM32CubeMX中下载FreeRTOS支持包
打开Help —— Manage embedded Software Packages Manager
点击STMicroelectronics——X-CUBE_FREERTOS,在里面勾选合适FreeRTOS的版本,安装
3、在项目中添加FreeRTOS系统
Interface的选项栏中有两个选项,CMSIS_V1和CMSIS_V2。
CMSIS_V1基于CMSIS-ROTS v1,是低版本,体积更小,适合硬件资源有限的应用场景,仅支持静态对象创建,提供基础功能(任务、信号量、队列等),可以部署在Cortex-M0/M3/M4等ARM核心。
CMSIS_V2基于CMSIS-ROTS v2,可以看作是V1的升级版本,支持动态对象创建,在运行时分配内存,它的函数命名也更统一,扩展支持Cortex-M0+/M7/A5/A7/A9等ARM核心。
下表是两者的联系和区别:
特性 |
CMSIS_V1 |
CMSIS_V2 |
标准版本 |
基于 CMSIS-RTOS v1 |
基于 CMSIS-RTOS v2(现称 CMSIS-RTOS2) |
功能扩展 |
提供基础功能(任务、信号量、队列等) |
新增高级功能(动态内存分配、内存池、事件标志组等) |
对象创建方式 |
仅支持静态对象创建(需预分配内存) |
支持动态对象创建(运行时分配内存) |
API 设计 |
函数命名风格较分散(如 osSignalSet、osMutexWait) |
API 命名更统一(如 osEventFlagsSet、osSemaphoreAcquire) |
处理器架构支持 |
仅支持 Cortex-M0/M3/M4 等 |
扩展支持 Cortex-M0+/M7/A5/A7/A9 等 |
多实例支持 |
仅支持单个 RTOS 实例 |
支持多个 RTOS 实例 |
兼容性 |
向下兼容 FreeRTOS 基础功能 |
向前兼容 CMSIS-RTOS v1 的部分 API(需额外适配) |
4、进行Project Manager设置
其中:
STM32CubeMX中的这个选项可以减小生成代码的体积,只配置使用到的库文件到项目中去
STM32CubeMX中的这个选项可以显示.c文件关联到的.h文件中,帮助我们更加直观的了解项目文件构成。
5、修改系统时钟源
将系统时基时钟源由SysTick(系统滴答)切换为TIMx(通用定时器),这样做有多种原因:
1、因为FreeRTOS支持多种硬件平台,SysTick并非所有平台的标准配置,使用通用定时器可以保持良好的跨平台兼容性;
2、SysTick可能被其他系统内核功能占用,FreeRTOS使用SysTick的过程中,有可能导致冲突和调试问题;
3、FreeRTOS早些版本没有要求使用SysTick,为了向下兼容,高版本保留了这一约定。