MacOS 使用 VSCode 和 CMake 进行 STM32 开发配置指南
在 macOS 环境下使用 VSCode 配合 CMake 进行 STM32 开发的完整流程。内容包括安装 Homebrew 及必要工具链(GCC、OpenOCD、STLink 等),配置 VSCode 插件(C/C++、CMake Tools、Cortex-Debug),设置 CMake 构建脚本与编译任务,以及配置断点调试环境。旨在提供一套跨平台的嵌入式开发解决方案。

在 macOS 环境下使用 VSCode 配合 CMake 进行 STM32 开发的完整流程。内容包括安装 Homebrew 及必要工具链(GCC、OpenOCD、STLink 等),配置 VSCode 插件(C/C++、CMake Tools、Cortex-Debug),设置 CMake 构建脚本与编译任务,以及配置断点调试环境。旨在提供一套跨平台的嵌入式开发解决方案。

| 功能 | VS Code | Keil5 |
|---|---|---|
| 智能补全 | ⭐⭐⭐⭐⭐(clangd) | ⭐⭐ |
| 代码跳转 | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 多光标/重构 | ✅ | ❌ |
| Git 集成 | 原生支持 | 很弱 |
| 查找/替换 | 极强 | 一般 |
对于 Mac 用户来说,Keil5 仅支持 Windows 版本是一个主要痛点。
执行命令:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
brew install --cask gcc-arm-embedded
brew install open-ocd
brew install stlink
brew install cmake
brew install ninja
arm-none-eabi-gcc --version
openocd -version
st-info --version
cmake -version
ninja --version
将 STM32 开发板通过转接头连接到 Mac 上,Mac 对 Stlink 是免驱的。
sudo st-info --probe
不加上 sudo 可能会看不到信息,没问题的话会输出包括开发板在内的连接信息。
至此基本的依赖环境就已经完全搭建好了。
下载地址:https://code.visualstudio.com 在 Mac 上下载完成后直接拖入到应用程序中即可。
在 VSCode 中安装以下插件:
打开一个工程模板(这里以 STM32F103C8T6 最小工程模板为例)。 注意:如果你会用 STM32CubeMX,那么这个开发环境是完全可以直接编译 MX 生成的项目的,只不过需要自己修改一些路径。如果是新手或者不熟练的就不要用 MX 了,建议手动管理目录以保持清爽。
输入以下命令使用 Ninja 构建输出目录:
cmake -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE=toolchain-arm-none-eabi.cmake
接下来的编译结果
.elf、.bin、.hex 等文件都会存放在这个目录中。
在 .vscode 目录中我已经把编译和下载这两个操作写成了任务 Build STM32、Flash STM32:
类似 Keil 中的编译和下载这两个按钮,因此这里可以直接调用这两个任务。VSCode 任务的调用方式是
Cmd+Shift+B,先编译项目:
编译成功是这样的:
此时
build 目录下已经有了 output.elf 文件,这个就是要 Flash 到板子里的文件。
继续按下 Cmd+Shift+B,然后选择 Flash STM32,结果如下所示:
出现 Verified OK 就说明烧录成功了。
VSCode 中的断点调试比 Keil 更好用,主要依赖 Cortex-Debug 这个插件以及 .vscode/launch.json 文件,以下是 launch.json 文件示例:
{"version":"0.2.0","configurations":[{"name":"Debug via ST-Link","type":"cortex-debug","request":"launch","servertype":"openocd","cwd":"${workspaceFolder}","executable":"${workspaceFolder}/build/output.elf","device":"STM32F103c8t6","configFiles":["interface/stlink.cfg","target/stm32f1x.cfg"],"runToEntryPoint":"main","preLaunchTask":"Build STM32","showDevDebugOutput":"none"}]}
这个文件是通用的,当你更换不同开发板时只需要把对应的名称修改一下即可,下面是属性注解:
.elf 文件路径,烧录也是烧录这个,路径和名称一定要对。.elf 文件,这个就是为了生成这个文件。接下来就直接按下 Fn+F5 或者点击这个按钮,就可以进入断点调试了:
调试页面非常干净整洁,涉及到的变量也可以在左侧边栏实时显示,安装了 rtos 插件后还可以看到线程相关信息。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online