Mac上使用VScode优雅开发STM32

作者:SkyXZ

CSDN:SkyXZ~-CSDN博客

博客园:SkyXZ - 博客园

​ 在大一的时候我加入了嵌入式实验室,那会儿大家都在哼次哼次的用STM32干嵌入式开发,那会只有我和一个学长是Macbook,为了跟上大家的步伐,和学长艰难的使用了Clion+STM32CubeMX+OpenOCD的方案完成了对Keil的替代(详见:https://www.cnblogs.com/SkyXZ/p/18384473,那会AI还没有彻底普及,大家都还是在古法编程,现在看这套方案其实很超前,而且让我早早的用上了Copilot),虽然现在已经转向做算法做视觉,但没想到毕设还是要重新拾起嵌入式开发了,正逢STM32CubeIDE为VSCode做了一系列插件,让我们可以优雅的在VSCode上开发嵌入式,正因如此Macbook在嵌入式领域终于不算旁门左道了,于是我觉得可以再出一期Blogs帮助手拿Macbook的朋友入门最基础的开发环境配置部分了(Windows的朋友也可以以这篇文章作为参考)

​ 这里插播一个小Tips适用于平时使用VSCode开发不同方向的朋友:我们可以使用VSCode的Profile功能实现不同开发的隔离,比如你要是个全才,你又会搞嵌入式,又搞AI,又搞JAVA等,那你就可以为自己不同的开发方向设置属于自己Profile文件,这样就可以一键切换开发的环境而不互相交融打架

一、环境准备

​ 要完成在MacOS上对STM32的开发,我们需要有以下几个软件,这几个软件都是免费且很好下载安装的,其中OpenOCDARM GNU Toolchain 以及CMake 在Mac上我们可以直接使用HomeBrew工具安装(什么!?你不知道HomeBrew???那请你移步这篇文章:https://www.cnblogs.com/SkyXZ/p/18385725),其他的软件大家可以直接自行去官网下载:

工具名称 推荐版本 作用说明 安装方式 (macOS)
VS Code 最新版 核心代码编辑器,配合 STM32 扩展使用 官网下载
STM32CubeMX ≥ 6.10 官方图形化配置工具,生成初始化代码 官网下载
CMake 最新版 跨平台构建系统,管理工程编译流程 brew install --formula cmake
ARM Toolchain 最新版 编译器(arm-none-eabi-gcc),将代码转为二进制 brew install --cask gcc-arm-embedded
OpenOCD 最新版 开源在线调试器,负责程序烧录与仿真 brew install openocd

​ 安装完成后可以在终端输入如下命令测试,正常的话输出如图所示:

bash 复制代码
arm-none-eabi-gcc --version
cmake --version
openocd --version

二、VSCode开发环境配置

​ 我们首先打开VSCode,在拓展列表输入"STM32Cube"我们就可以找到一连串的扩展,但是这里我们不需要全部下载,只需要下载"STM32CubeIDE for Visual Studio Code"插件即可,这一个插件可以理解为总成,下了这个插件其他的扩展包插件便会自动全部下载

​ 可以看到扩展下载完之后,会自动安装stlink的服务,因此我们也不需要额外安装STLink了

​ 当然,除此之外还有如下插件大家可以安装,对我们的开发非常有利,大家可以根据自己的需求下载

分类 插件名称 功能描述 推荐指数
核心套件 C/C++ (Microsoft) 官方核心工具,提供代码补全、跳转及基础调试功能。 ⭐⭐⭐⭐⭐
底层支持 ARM & DeviceTree 针对 ARM 汇编及设备树(DeviceTree)的语法高亮支持。 ⭐⭐⭐⭐
构建/调试 Cortex-Debug 嵌入式灵魂插件。支持 OpenOCD,实现丝滑的硬件断点调试。 ⭐⭐⭐⭐⭐
构建/调试 CMake Tools 与 CMake 构建系统深度集成,管理项目的编译与链接。 ⭐⭐⭐⭐⭐
代码质量 C/C++ Advanced Lint 实时静态代码扫描,在编译前发现潜在的语法错误或 Bug。 ⭐⭐⭐⭐
AI 辅助 TabNine AI 驱动的智能补全,大幅减少重复代码的敲击工作。 ⭐⭐⭐⭐
界面美化 One Dark Pro 经典的深色主题,配色舒适,适合长时间编码。 ⭐⭐⭐
界面美化 Material Icon Theme 为项目文件提供可视化图标,资源管理器结构更清晰。 ⭐⭐⭐
本地化 Chinese (Simplified) 官方汉化语言包,提供全中文的交互环境。 ⭐⭐⭐⭐⭐

三、STM32工程配置

​ STM32CubeIDE for Visual Studio Code 可以使用自带的 Create empty project 创建工程,但是我依旧建议大家使用STM32CubeMX创建工程,同时我们在这个插件里可以看到系统以及安装的一些绑定包

​ 我们打开STM32CubeMX来创建一个新的STM32工程,点击下图红框部分我们即可从选择芯片开始创建一个工程,然后在项目管理页面选择Cmake-GCC即可创建代码了

​ 点击右上角的"Generate Code"生成模版代码之后,我们即可用VSCode打开这个项目进行HAL库的开发,打开之后我们的主要界面的功能如下图所示:

​ 之后我们点击编译按钮系统就会帮我们编译好代码啦

​ 这时候,如果你使用的是ST-Link,那么在VSCode的调试界面(如下图的位置),你就可以看到下载器并直接完成代码的烧录了,但是由于我们使用的是DapLink无线下载器,因此我们还需要进行额外的配置

​ 这时候我们之前下载的OpenOCD就派上用场了,DAPLink / CMSIS-DAP走的是Arm的调试协议,我们前面已经使用HomeBrew成果安装了OpenOCD了,接下来我们可以在连上DapLink后在终端输入如下命令进行测试,如果能连上说明就没问题

bash 复制代码
openocd -f interface/cmsis-dap.cfg -f target/stm32f4x.cfg

​ 出现上图就代表DapLink链接成功,然后我们退出后在我们的项目里新建.vscode/tasks.json,然后将如下命令添加之后(建议大家去了解一下命令的含义,这样之后就可以自己随心搭配了)

json 复制代码
{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Build RM_Motor",
      "type": "shell",
      "command": "cmake",
      "args": [
        "--build",
        "${workspaceFolder}/build/Release"
      ],
      "problemMatcher": []
    },
    {
      "label": "DAPLink Flash",
      "type": "shell",
      "dependsOn": "Build RM_Motor",
      "command": "openocd",
      "args": [
        "-f",
        "interface/cmsis-dap.cfg",
        "-f",
        "target/stm32f4x.cfg",
        "-c",
        "program ${workspaceFolder}/build/Release/RM_Motor.elf verify reset exit"
      ],
      "problemMatcher": []
    }
  ]
}

​ 然后在VSCode里按Command + Shift + P然后输入Tasks: Run Task再选择DAPLink Flash即可看到如下的烧录Log

​ 如果想要支持断点调试的话,我们下载好Cortex-Debug插件,然后新建一个.vscode/launch.json文件:

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug STM32F407 with DAPLink",
      "type": "cortex-debug",
      "request": "launch",
      "cwd": "${workspaceFolder}",
      "executable": "${workspaceFolder}/build/Release/RM_Motor.elf",
      "servertype": "openocd",
      "serverpath": "/opt/homebrew/bin/openocd",
      "configFiles": [
        "interface/cmsis-dap.cfg",
        "target/stm32f4x.cfg"
      ],
      "searchDir": [
        "/opt/homebrew/share/openocd/scripts"
      ],
      "runToEntryPoint": "main",
      "preLaunchTask": "Build RM_Motor"
    }
  ]
}

​ 然后我们就可以使用VSCode的调试功能啦,但是如果出现如下报错,则说明Cortex-Debug 找不到 arm-none-eabi-gdb

​ 我们先用一下命令在终端找一下路径,然后没有就下载,找到了就在launch.json中添加一个 gdbPath

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Debug STM32F407 with DAPLink",
      "type": "cortex-debug",
      "request": "launch",
      "cwd": "${workspaceFolder}",
      "executable": "${workspaceFolder}/build/Release/RM_Motor.elf",
      "servertype": "openocd",
      "serverpath": "/opt/homebrew/bin/openocd",
      "gdbPath": "/Applications/STM32CubeCLT/GNU-tools-for-STM32/bin/arm-none-eabi-gdb",
      "configFiles": [
        "interface/cmsis-dap.cfg",
        "target/stm32f4x.cfg"
      ],
      "searchDir": [
        "/opt/homebrew/share/openocd/scripts"
      ],
      "runToEntryPoint": "main",
      "preLaunchTask": "Build RM_Motor"
    }
  ]
}
相关推荐
不会写程序的未来程序员15 天前
nvm 安装教程:Node.js 版本管理全攻略 (Win/Mac/Linux) + .nvmrc 实战
linux·macos·node.js·前端开发·环境配置·nvm
陈嘿萌1 个月前
4090显卡配置官方SegFormer运行环境(包含预训练权重下载、环境配置、代码修改、运行 | 验证 | 测试)
环境配置·模型训练·segfomer·预训练权重下载
脱脱克克2 个月前
OpenClaw 安装与配置全教程(Ubuntu 全新虚拟机版)
ubuntu·环境配置·openclaw
_OP_CHEN2 个月前
【MySQL数据库基础】(一)保姆级 MySQL 环境配置教程!CentOS 7+Ubuntu 双系统全覆盖
linux·数据库·sql·mysql·ubuntu·centos·环境配置
youcans_2 个月前
【跟我学YOLO】YOLO26(3)安装配置与快速使用
图像处理·yolo·目标检测·计算机视觉·环境配置
charlie1145141913 个月前
RK3568跑Arch Linux全路程指南(以正点原子的RK3568开发板为例子)
linux·嵌入式·rootfs·教程·环境配置·嵌入式linux·工程实践
charlie1145141913 个月前
SSH X11 转发排查与解决指南(Windows + Xming + Ubuntu)
arm开发·windows·笔记·ubuntu·ssh·个人开发·环境配置
charlie1145141913 个月前
RK3568跑Ubuntu 24.04全路程指南(以正点原子的RK3568开发板为例子)
linux·笔记·ubuntu·rootfs·教程·环境配置·rk3568
腾飞开源3 个月前
03_Dify 使用 Docker Compose 部署
环境配置·docker compose·dify·docker部署·容器化部署·ai开发平台·dify开源平台