STM32

示例工程

XWOS提供了比较多的STM32示例工程:


开发环境

XWOS的工具链

参考 XWTC安装指南


Rust开发环境

STM32支持使用Rust语言开发,参考 Rust开发环境指南


STM32CubeMX

STM32工程的 .ioc 文件需要使用 STM32CubeMX 打开并配置。


Vscode

需要安装 4.1 及以上版本的 XWTC ,其中包含的 Stlink-GdbServer 以及 Stm32CubeProgrammer 是在 Vscode 中调试代码的必备工具。

安装

  • 安装 vscode
  • 安装插件:
    • Cortex-Debug
    • C/C++
    • C/C++ Extension Pack
    • Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code

打开工程

XWOS提供的STM32示例代码均包括vscode配置,下载源码后只需在vscode打开工程根目录即可。

与工程配置相关的文件:

  • .vscode: 工程级vscode的配置
    • launch.json: 调试配置
    • tasks.json: 编译配置
  • .clang-format: 代码风格配置
  • Debugger/STM32xxx.svd: 外设寄存器信息,用于调试时查看外设寄存器的值

编译/清理

  • 编译:点击 快速访问 –> 运行任务 –> build
  • 清理:点击 快速访问 –> 运行任务 –> clean

Vscode-Task.png

启动调试

切换到 运行与调试 ,选择一项点击绿色箭头开始调试

  • 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
    • 执行操作:复位、下载、调试

Vscode-DebugCard.png

调试控制台

Vscode-DebugConsole.png

指令级单步调试

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

Vscode-InstructionStepDebugging.png


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 命令,设置方法如下:

Eclipse-BuilderSettings.png

调试

  • 菜单 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插件时,路径会变化导致找不到文件。

ExternalLoader.png

调试技巧

Cortex-M7有Data Cache,常会给调试带来困扰。 将下面的宏开关注释掉或定义改为 0 后可关闭Cache:

/* Board/cfg/board.h */

#define BRDCFG_DCACHE   1
#define BRDCFG_ICACHE   1
最后修改 August 4, 2026: feat: 更新STM32环境指南 (03a6ff0)