STM32CubeMX
- STM32CubeMX这个页面里的
Tools&Software
包含开发工具与嵌入式工具两大部分.
![STM32CubeMX -devtools.png](/imgs/stmcubemx/STM32CubeMX -devtools.png)
![STM32CubeMX -Embedded.png](/imgs/stmcubemx/STM32CubeMX -Embedded.png)
![STM32CubeMX -Embedded.png](/imgs/stmcubemx/STM32CubeMX -Embedded1.png)
![STM32CubeMX -Embedded.png](/imgs/stmcubemx/STM32CubeMX -Embedded2.png)
开发工具
STM32CubeIDE
- STM32CubeIDE是的
ST
的官方IDE
工具,下载后会得到一个很大zip
包,解压后会有SetupSTM32CubeMX-5.4.0.app,SetupSTM32CubeMX-5.4.0.exe,SetupSTM32CubeMX-5.4.0.linux
三个项目,其中SetupSTM32CubeMX-5.4.0.linux
就是Linux
下的安装脚本,安装完成后,使用手册在安装目录下的help/UM1718.pdf
里,11~19 章是具体的示例教程.Linux 安装后运行截图如下: - 如上图所示,可以安装相应的嵌入式的软件,就是各种
MCU
的库文件,模版文件,也可以通过手动下载,如:STM32Cube MCU Package for STM32F7 series . - 也可以通过这里这种几只平台的发行版本包.
- Linux 下安装完成,它没有自动在系统菜单添加条目录.可以参照下面路径与文件格式新建一个用户菜单项.
1 | ~$ cat ~/.local/share/applications/stm32cubemx.desktop |
STSW-STM32095 Eclipse 插件
- 下载STSW-STM32095到本地,打开 Eclipse,进入
Help-->Installl New Software... --> 点击 Add --> 在Name里输入一个名字,--> 点击 Archive... --> 选择刚才下载的en.stsw-stm32095.zip --> 确定
进行安装. - 安装完成后,在 Eclipse 里可以通过右上角的图标打开
STM32CubeMX
的Perspective
, 也可以通过菜单栏Windows-->Perspective-->Open Perspective-->Other
选择STM32CubeMX
打开,打开的界面如同上面的STM32CubeIDE
原生界面.
STM32CubeMX 创建工程
创建基于 STM32F4-discovery 评估板的工程
- 在初次打开
STM32CubeMX
时可能会从通过网络去到ST
官网下载一些默认的BSP
支持文件,还有在新建项目时,如果本地没有相关的文件件,它也会自动去官网下载,所以联网是必须的.
新建工程
- 打开
File -> New Project -> Board Selector
,右边栏显示所有支持的板子型号,左边栏可以通过一些参数过滤,找到我们要匹配的板子型号.Type -> Discovery kit
,MCU/MPU Series -> STM32F4
,这里大概会列表 7 个候选板子,我选择最后一个,点击右上解Start Project
,它会联网下载一些文件,完成后就会打开一个配置界面.
配置 Pinout & Configuration
中间件 FreeRTOS,配置如下:
USB OTG,配置如下:
USB Device,配置如下:
GPIO,如果我这里要点亮某些板子上的 LED,在这里需要配置好相应的 GPIO 模式.配置如下:
USART2,串口通讯配置如下:
配置 Clock Configuration
注意,这里的时钟树配置与上面的
Pinout
配置会有相互影响,比如:各种复用功能之间的资源冲突, 这里需要根据手册去调整.
配置工程
- 在配置完成上述功能,可以打开
Project Manager
页面,主要配置的是Project
页面里的参数,注意Heap与Stack
的大小是否合适,比如Toolchain/IDE
这里有几个选项, 支持不同的厂商 IDE 如,IAR,MDK-ARM,TrueStudio 等, 我这边会选择SW4STM32
类型,使用 Eclipse 在 Linux 下导入它,应该还可以选择Makefile
类型,也可以通过 Eclipse 导入.至于Code Generator
页面里,保持默认选择Copy only the necessary library files
就可以了,不然会把工程文件搞大吗?完成后,点击右上角GENERATE CODE
生成代码,再完成之后,可以直接打开目录查看生成的代码.
安装 OpenSTM32 环境
在
Linux
环境下,我这里选择Eclipse
做为开发IDE
,但是要安装一个插件,请参考ST
官网SW4STM32.这里两种方式安装:- 1.下载 Linux 安装程序.
- 这里其实包含一个完整
Eclipse
与SystemWorkbench
的安装包,如果系统已经有Eclipse
了可以选择第二种安装方式(插件安装),独立安装如图:
- 这里其实包含一个完整
- 2.添加
Eclipse
插件源,从Eclipse 安装,Help-->Installl New Software... --> Add
,在 location 里输入http://ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.update-site-v2,点击 OK 新建一个更新站点.- 但是因为网络原因,通过
http://www.ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.update-site-v2/
安装会很慢,而且会断线.所以这里会先使用wget -r -np -nH -R -c http://www.ac6-tools.com/Eclipse-updates/org.openstm32.system-workbench.update-site-v2/
把它的网站目录下载到本地.进入到org.openstm32.system-workbench.update-site-v2
使用find . -iname "index.*"
清除这些无用的index.html
文件,还可以用此脚本清除一些旧版的 jar,减小体积.再通过Help-->Installl New Software... --> Add
创建一个 本地安装源 如openstm32 - file:/home/lcy/Downloads/Eclipse-updates/org.openstm32.system-workbench.update-site-v2/
就可以正常使用了. 更新后会出现: - External Tools # 这里出现版偏旧,可以参考使用 https://github.com/gnu-mcu-eclipse/eclipse-plugins
- ARM Compiler for MCU
- OpenOCD
- STLinkServer
- OpenSTM32 Tools
- STM32-Copro-MPU
- 但是因为网络原因,通过
- 这里就把上面三个大选项都选上安装.
- 1.下载 Linux 安装程序.
导入 STM32CubeMX 生成工程文件
- 打开 Eclipse,从
File -> Import...
,选择General
组下的Existing Projects into Workspace
,会打开导入工程对话框.根目录选择在STM32CubeMX --> Project Manager
里的工程配置页里工程生成路径,如图:
重命名生成的工程
- 右键
project->Properties
,进入到C/C++ Build -> Settings -> Build Artifact
指定交叉编译工具链
- 在右键
project->Properties
,进入到C/C++ Build -> Settings -> Tools Settings -> MCU Setings
里面的 path 值是${openstm32_compiler_path}
,这里出现找不到arm-none-eabi-gcc
的错误提示.把这个变量名换成它带的ARM Compiler for MCU
工具链的安装绝对路径就可以正常编译了.ARM Compiler for MCU
工具链默认是解压在插件路径里,也可以复制到其它的路径里.这里把上述path
里的变量改成/home/michael/IDE_DIR/Ac6/SystemWorkbench/plugins/fr.ac6.mcu.externaltools.arm-none.linux64_1.17.0.201812190825/tools/st-gnu-arm-gcc-7-2018-q2-update_gdb-5_4-2016q3/bin
后,成功编译.如下:
1 | ... |
测试流水灯代码
- 因为在
STM32CubeMX
加入了FreeRTOS
的模块,所以main.c
有一些系统相关的代码,下面只在main.c
里的while(1)
里,简单测板上的四个流水灯.
1 | // osKernelInitialize(); |
- 添加上述代码,重新编译,连接上开发板,选择工程右键
Run As -> Ac6 STM32 C/C++ Application
就会下载代码到开发板,会看四个 LED 轮流慢闪.也可以运行Debug As
单步调试每一条指令.
谢谢支持
- 微信二维码:
- 联系作者