进行FreeRTOS开发的第一步是开发环境的搭建,这个就不再赘述了。
需要的开发工具有:STM32CubeMX,Keil5。另外需要安装的调试工具为:ST-link,CH341的USB转串口工具。
1:打开CubeMax,创建一个MCU的project。

2:因为我使用的是STM32F407ZGT6,在左侧Commercial Part Number中输入STM32F407ZGT6,右侧会展示对应的MCU列表,选择正确的版本双击。

3:配置pin脚
本次使用LED1为例进行说明,查阅底板原理图LED1对应的pin为PF10。

在CubeMax中输入PF10,对应的pin脚会高亮闪烁。

PF10配置为GPIO_Output

为了方便理解PF10重命名为LED1。

配置SYS:Debug为Serial Wire,Timebase Source为TIM1。

配置GPIO:LED1在上电时应该是熄灭状态,根据二极管的单向导电性,只有LED1对应的管脚被拉高时二极管才属于截止状态,所以对应的GPIO out level应该配置为High


配置RCC:使能外部晶振

配置时钟树:根据核心板原理图,配置了一个8MHz的外部晶振。

根据外部晶振配置时钟树。

至此STM32相关的配置已经完成。
4:配置FreeRTOS

配置一个名称为LedTask的任务,处理函数为led_task。

5:配置工程名称为LedTest,开发工具选择MDK-ARM,版本选择V5.32,这个根据自己的环境按照实际配置即可。

选择生成.c和.h文件。

选择右上角的GENERATE CODE生成代码,完成后选择Close直接关闭即可。

在CubeMax工程的MDK-ARM目录双击打开LedTest即可启动对应的Keil工程。

6:启动Keil
通过CubeMax生成的代码都存在于freertos.c中,实现一个每隔500ms LED1闪烁一次的逻辑。

