在 VSCode 上使用 CMake 开发 STM32CubeMX 项目
stm32 电子设计 指北 cmake vscode本文提供了一种在 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-eabi
openocd
cmake
llvm
(提供 clangd 和 clang-format)ninja
(加快编译速度)
可以使用 scoop install
这些软件包的最新版本, 安装后建议重启所有打开的 VSCode 窗口以应用更改. 只需在 PowerShell 中运行以下命令即可安装所有软件包:
1 | # 如果你还没有安装 Scoop |
另外还需要安装以下来自 ST 的软件
- STM32CubeMX
- STM32CubeProgrammer (取代 ST-Link Utility, 提供烧录需要的驱动程序)
还需要以下 VSCode 插件. 使用下列的配置文件打开项目后, 会自动提示安装.
ms-vscode.cpptools
llvm-vs-code-extensions.vscode-clangd
ms-vscode.cmake-tools
marus25.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 固件版本.