STM32 FreeRTOS 基本工程创建

18 次浏览

1、创建STM32工程

在VS Code中打开STM32CubeMX软件新建工程

1)选择芯片型号,如STM32F103ZET6

2)配置RCC,选择外部晶振。【HSE】选择【Crystal/Ceramic Resonator】

3)配置SYS,打开SW调试接口。【Debug】选择【Serial Wire】

4)配置USART1,作为代码测试打印接口。【Mode】选择【Asynchronous】

5)配置时钟树,点击【Clock Configuration】,【PLL Source】选择时钟源【HSE】,【HCLK】中输入目标时钟频率如“72Mhz”。按回车键后自动计算分频和倍频

6)配置工程文件,点击【Project Manager】,【Project】中分别输入【工程文件名称】和【工程文件目录】。在【Toolchain/IED】中选择【CMake】(重要)

7)【Code Generator】中选择【Copy only the necessary library files】。【Generated files】中增加勾选【Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral】。

8)点击右上角【GENERATE CODE】自动生成代码

2、在STM32工程基础上创建FreeRTOS工程

1)在【Middleware】中选择【FreeRTOS】,接口类型选择【CMSIS_V2】,它是 ARM 官方的统一接口标准,方便与其他 CMSIS 软件组件兼容。 

2)在【FreeRTOS】→【Advanced Settings】中,启用【USE_NEWLIB_REENTRANT】选项。该选项保证 newlib 库函数在多任务环境下是线程安全的,避免不同任务使用标准库函数时出现数据冲突。 

3)在【SYS】中的【Timebase Source】选择【TIM 6】,启用 FreeRTOS 后,SysTick 会被 RTOS 内核占用用于任务调度,因此需要将 HAL 的时基源切换到 TIM6。这样既能保证 RTOS 的正常调度,又能继续使用 HAL 的延时功能。TIM6功能比较简单,没有信号输出,主要用于内部计时。

4)点击右上角【GENERATE CODE】自动生成代码

3、任务调度统计需开启的宏定义

RECORD_STACK_HIGH_ADDRESS Enabled
GENERATE_RUN_TIME_STATS Enabled
USE_STATS_FORMATTING_FUNCTIONS Enabled

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部