STM32
2 分钟阅读
示例工程
XWOS提供了比较多的STM32示例工程:
- 微行电子
- WeActMiniStm32H750XWOS:微行电子MiniStm32H750开发板
- 正点原子
- AtkM100zStm32H750XWOS:正点原子M100Z-Stm32H750VBT6开发板
- AtkApolloH743XWOS:正点原子阿波罗STM32H743开发板
- ATKSTM32F103ZXWOS:正点原子F103核心板
- ATKSTM32F407ZXWOS:正点原子F407核心板
- 野火
- EmbedFireStm32H743XWOS:野火STM32H743-Pro开发板
- 反客
- FK429M1XWOS:反客STM32F429-M1开发板
- 常见最小系统
- STM32F072C8XWOS:STM32F072C8最小系统
- STM32F103C8XWOS:STM32F103C8最小系统
开发环境
XWOS的工具链
参考 XWTC安装指南
Rust开发环境
STM32支持使用Rust语言开发,参考 Rust开发环境指南 。
STM32CubeMX
STM32工程的 .ioc 文件需要使用 STM32CubeMX 打开并配置。
- URL:STM32CubeMX
Vscode
需要安装 4.1 及以上版本的 XWTC ,其中包含的
Stlink-GdbServer 以及 Stm32CubeProgrammer 是在 Vscode 中调试代码的必备工具。
安装
- 安装 vscode
- 安装插件:
Cortex-DebugC/C++C/C++ Extension PackChinese (Simplified) (简体中文) Language Pack for Visual Studio Code
打开工程
XWOS提供的STM32示例代码均包括vscode配置,下载源码后只需在vscode打开工程根目录即可。
与工程配置相关的文件:
.vscode: 工程级vscode的配置launch.json: 调试配置tasks.json: 编译配置
.clang-format: 代码风格配置Debugger/STM32xxx.svd: 外设寄存器信息,用于调试时查看外设寄存器的值
编译/清理
- 编译:点击
快速访问–>运行任务–>build - 清理:点击
快速访问–>运行任务–>clean

启动调试
切换到 运行与调试 ,选择一项点击绿色箭头开始调试
- Linux-STLink-Attach
- PC操作系统: Linux
- 调试器: STLink
- 执行操作:Attach到MCU,不进行复位
- Linux-STLink-Program
- PC操作系统: Linux
- 调试器: STLink
- 执行操作:复位、下载、调试
- Windows-STLink-Attach
- PC操作系统: Windows
- 调试器: STLink
- 执行操作:Attach到MCU,不进行复位
- Windows-STLink-Program
- PC操作系统: Windows
- 调试器: STLink
- 执行操作:复位、下载、调试

调试控制台

指令级单步调试
在 调用堆栈 中右键点击函数名,选择 打开反汇编视图 。
在 反汇编视图 内的单步调试即为 指令级单步调试 。

Eclipse STM32CubeIDE
对于比较新的电脑与操作系统,问题比较多,不推荐使用。
安装
- URL: STM32CubeIDE
- Ubuntu中需要安装JRE:
sudo apt install openjdk-11-jdk - Windows 11中也需要安装JRE8
STM32CubeID的Rust插件
注意不要选择最新版本的插件:
- 菜单:
"Help" -> "Install New Software..." -> "Add..." - 仓库:
http://mirrors.ustc.edu.cn/eclipse/corrosion/releases/1.2.3/ - 插件:
Corrosion: Rust edition in Eclipse IDE
导入工程
XWOS提供的STM32示例代码均包括STM32CubeIDE配置。 下载源码后需将源码放在STM32CubeIDE的工作目录内(即STM32CubeIDE启动时指定的目录)。
通过菜单 File –> Import… –> General –> Projects from Folder or Archive 浏览到根目录导入。
与工程配置相关的文件:
.project: Eclipse工程文件.cproject: EclipseCDT工程文件.settings: Eclipse工程设置Debugger: 调试配置
编译
有两种方法可以编译,两种方法结果产生一样:
- 打开终端,并将当前路径切换到工程的
Board目录,执行make命令。 - 在IDE中点击 编译 按钮。
已知问题
- 平台:Windows 11
- 问题现象:STM32CubeIDE中编译时,提示错误
make (e=3): 系统找不到指定的路径。 - 问题原因:STM32CubeIDE自带的
make命令版本不兼容。 - 解决方法:使用 XWTC 中提供的
make命令,设置方法如下:

调试
- 菜单 Run –> Debug Configurations…
- STLink-Attach.launch : 使用 STLink 不复位调试
- STLink-Program.launch : 使用 STLink 复位、下载、调试
- 若MCU的代码存储在外部XIP QSPI Flash上,还需要设置ExternalLoader。
ExternalLoader可以使用工程内部的workspace路径- 也可以拷贝到STM32CubeIDE内:
<STM32CubeIDE安装目录>/plugins/com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.linux64_2.2.500.202603051304/tools/bin/ExternalLoader。 缺点是每次STM32CubeIDE更新cubeprogrammer插件时,路径会变化导致找不到文件。

调试技巧
Cortex-M7有Data Cache,常会给调试带来困扰。
将下面的宏开关注释掉或定义改为 0 后可关闭Cache:
/* Board/cfg/board.h */
#define BRDCFG_DCACHE 1
#define BRDCFG_ICACHE 1