在 VSCode 上使用 CMake 开发 STM32CubeMX 项目
本文发布于 2024 年 3 月,距今已超过两年,文中内容可能已经过时,请注意甄别。
本文提供了一种在 VSCode 上基于 CMake 开发 STM32CubeMX 项目的方案,配置了 Clangd 以获得更好的静态检查,并使用 Ninja 加快编译速度。本文的 CMake 配置文件能从 STM32CubeMX 生成的 Makefile 中读取编译参数,能自动同步 CubeMX 中的更改,也能在 CubeMX 重新生成项目时保留自定义选项。本文中的配置文件理论上适用于 Windows, Linux 和 macOS. 由于芯片相关信息是从 Makefile 中读取的, 本文的配置文件理论上适用于所有 STM32CubeMX 支持的 MCU.
需要安装的软件
不需要 Keil!
需要安装以下编译和调试工具, 并将其添加到系统 PATH 中. 在 Windows 上推荐使用 Scoop. Scoop 能自动下载安装这些工具 (需要好的网络连接), 并将其添加到 PATH.
gcc-arm-none-eabiopenocdcmakellvm(提供 clangd 和 clang-format)ninja(加快编译速度)
可以使用 scoop install 这些软件包的最新版本, 安装后建议重启所有打开的 VSCode 窗口以应用更改. 只需在 PowerShell 中运行以下命令即可安装所有软件包:
1 | # 如果你还没有安装 Scoop |
另外还需要安装以下来自 ST 的软件
- STM32CubeMX
- STM32CubeProgrammer (取代 ST-Link Utility, 提供烧录需要的驱动程序)
还需要以下 VSCode 插件. 使用下列的配置文件打开项目后, 会自动提示安装.
ms-vscode.cpptoolsllvm-vs-code-extensions.vscode-clangdms-vscode.cmake-toolsmarus25.cortex-debug
使用方法
使用 STM32CubeMX 正常地创建并配置项目, 需要如图选择 Makefile 类型的项目, 然后点击 Generate Code 生成项目

打开生成的项目, 将 代码仓库 中的
CMakeLists.txt和.vscode文件夹放置在与ioc文件相同的目录用 VSCode 打开文件夹, 并用 CMake 插件配置 (Configure) 项目.

提示选择 Kit 时, 由于配置文件中已指定使用
gcc-arm-none-eabi, 直接选择[Unspecified]. (请确保编译器已在 PATH 中, 使用 Scoop 安装会自动添加 PATH)
首次配置后, 重新启动或者刷新 VSCode, clangd 应当已经能正常工作, 能正确的找到系统头文件

按这个编译

这个选项已配置成编译并下载

按这个编译,下载并调试

如果需要新增源文件或动态库,可以直接在
CMakeLists.txt中添加,不会在 CubeMX 重新生成时被覆盖. 添加后需重新配置 (Configure) 项目. 上方的CMakeLists.txt中有一个在 Cortex M7 设备上使用 CMSIS-DSP 库的例子.

如果 OpenOCD 烧录失败, 可尝试用 STM32CubeProgrammer 更新 ST-Link 固件版本.








