1、使用STM32CubeMX在项目中添加FreeRTOS源码

发布于:2025-06-19 ⋅ 阅读:(17) ⋅ 点赞:(0)

目录

1、相信你已经下载好了STM32CubeMX软件

2、在STM32CubeMX中下载FreeRTOS支持包

3、在项目中添加FreeRTOS系统

4、进行Project Manager设置

5、修改系统时钟源

6、生成FreeRTOS项目代码

如果这篇文章能帮助到你,请点个赞鼓励一下吧ξ( ✿>◡❛)~


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 设计

函数命名风格较分散(如 osSignalSetosMutexWait

API 命名更统一(如 osEventFlagsSetosSemaphoreAcquire

处理器架构支持

仅支持 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,为了向下兼容,高版本保留了这一约定。

6、生成FreeRTOS项目代码


网站公告

今日签到

点亮在社区的每一天
去签到