对于stm32一些ram和flash相对大一些的mcu,增加一个实时操作系统,会使程序控制更加灵活。本文阐述一下通过CubeMx自动添加FreeRtos的方法,和使用visualgdb加载CubeMx生成项目的方法。
一、软件环境
1、CubeMx 5.2.0
2、VisualStudio2017
3、VisuualGDB 5.4R3
二、步骤
1、用CubeMx创建一个项目,因为手头的板子是野火挑战者Stm32F429开发板,所以cpu型号选择Stm32f429igtx。
2、配置RCC,选择外部晶振
3、配置Clock
4、 设置系统时钟源,不要用Systick,最好使用一个定时器。这里我们选择Timer2作为系统时钟源。
5、在中间件中添加FreeRtos
在FreeRtosTasks and Queues界面已经自动建立了一个默认Task了。我们点击Add按钮,添加三个自定义Task。
到此FreeRtos已经添加完了,为了观察效果,我们设置一下Led灯的GPIO
6、在Project Manager内配置输出工程代码格式
其实,选择STM32CubeMxIDE、SW4STM32、TrueStudio、makefile都可以,因为这四种IDE都使用的是arm-gcc编译器。
点击
生成项目代码。
/
7、用VisualStudio新建一个空白解决方案
8、在空白解决方案里添加一个嵌入式工程,点击确定
9、在工程向导中如下选择,然后点击下一步
10、输入mcu型号 stm32f429ig,浮点数支持选择硬件支持,点击下一步
11、选择CubeMx生成项目代码的目录,切记VisualStudio项目目录,不能和CubeMx生成的工程目录重名。点击下一步。
12、配置Debug选项,根据实际情况选择,因为我用的是CMSIS-DAP仿真器,所以做如下选择;点击完成。
VisualGDB就会把CubeMx生成的项目代码自动复制到,工程目录下,并且在工程中自动添加所有源文件(.c;.cpp;.asm)文件。但是,头文件的包含路径,则需要我们自己添加。
13、右键点击项目图标,弹出菜单,选择 VisualGDB Project Properties,弹出界面
14、在 弹出界面中,我们选择 Embedded framework标签,将两个VirsualGDB自动添加的模块去掉,然后点击 apply按钮
15、在 弹出界面中,选择 makefile setings标签,并修改Preprocessor macros 和 Include directories 两项。点击 OK按钮。
因为我的 MCU 是 STM32F429IGTx,所以在Preprocessor macros 添加 STM32F4xx 宏,注意大小写。把工程目录内所有头文件的文件夹路径,都添加到 Include directories 下。
到此,CubeMx 生成的带有FreeRtos系统的程序框架,就已经完全导入到 VirsualGDB中了,我们按下F7编译一下,
观察编译输出,完全正确。
16、测试FreeRtos
在 main.c 定义几个宏
分别修改 StartTask02,StartTask03,StartTask04 代码如下
重新编译一下程序,点击F5运行,VisualGDB 就会自动把程序下载到开发板,并且运行