目的:FreeRTOS利用cubemx移植过程较为简单,仅需要三步即可完成。
移植步骤
1. 配置时钟源
- 系统时钟源选择除系统时钟的任意一个,本文选择TIM4作为时钟源,因为FreeRTOS会占用系统时钟。
- 在FreeRTOS中我们的SysTick定时器被用于了我们的时钟基准,它用来实现我们的任务切换,我们的SysTick定时器每次触发我们的中断,因此系统的时钟源需要选择一个其它的定时器。
2.配置FreeRTOS
- CMSIS是一种接口标准,目的是屏蔽软硬件差异以提高软件的兼容性。
- RTOS v1使得软件能够在不同的实时操作系统下运行(屏蔽不同RTOS提供的API的差别),RTOS v2则是拓展了RTOS v1,兼容更多的CPU架构和实时操作系统。
- 因此我们在使用时可以根据实际情况选择,如果学习过程中使用STM32F1、F4等单片机时没必要选择RTOS v2,更高的兼容性背后时更加冗余的代码,理解起来比较困难。
3.创建任务
- 在Task and Queues中双击默认的任务,系统自动生成了一个名为defaultTask的任务,优先级为osPriorityNormal,占空间大小128words,任务的函数名为StartDefaultTask。
- 可以通过add来创建不同的任务。
注意事项
- 当芯片型号较小时,若自身的SRAM空间较小,在cubemx中默认的总堆栈空间较小,当任务较多时,会产生堆栈内存问题,此时会导致无法创建多个任务。
- 主要修改方式是增加总堆栈大小,注意总堆栈大小的可变化范围。
- 详细理解与说明:【问题】使用STM32CubeMX开发FreeRTOS只能添加3个任务——单片机操作系统的堆栈内存问题