这次我们将用 CMake ,配合 STM32CubeMX,解锁更现代、更高效的 STM32 开发姿势。无论你是喜欢 VSCode 的自由,还是 CLion 的拥趸,我这篇 食用指南 都能带你从零搭建一套丝滑的开发环境。

懒人自取:https://github.com/RocksonLee/STM32-Template


第一步:食材准备(工具链下载与安装)

这一步是基础,很多人报错都是因为环境变量没配好!

我们需要下载并安装以下工具,并将它们添加到系统的 Path 环境变量中。

⚠️ 重点提示: 所有工具的解压/安装路径,绝对不能有空格,也不能有中文!

核心工具清单

  1. ARM GNU Toolchain (交叉编译器)
    把 C 代码编译成 STM32 能跑的机器码,和正常的mingw不同。下载 Windows ZIP 包或 exe,解压/安装。
    下载地址https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads (选 arm-none-eabi )。

  2. CMake (构建管家)
    生成构建脚本,管理依赖。下载 Windows msi 或 exe,一直 Next 安装。
    下载地址https://cmake.org/download/ (选 Windows x64 Installer)。

  3. Ninja (构建加速器)
    比 Mingw Make 快得多的构建工具。下载zip,解压。
    下载地址https://github.com/ninja-build/ninja/releases (下载 ninja-win.zip)。

  4. OpenOCD (调试与烧录)
    连接调试器(ST-Link/DAPLink)和芯片,用来烧录程序。下载zip,解压。
    下载地址https://github.com/xpack-dev-tools/openocd-xpack/releases (下载 win32-x64.zip)

  5. STM32CubeMX (代码生成)
    这你都不认识?
    下载地址https://www.st.com/en/development-tools/stm32cubemx.html

配置环境变量 (Path) —— 最关键一步!

装完别急着跑!必须把上述工具的 bin 目录加入系统 Path

  1. Win 键搜索“编辑系统环境变量”。

  2. 点击“环境变量” -> 在“系统变量”区域找到 Path -> 点击“编辑”。

在这里插入图片描述 在这里插入图片描述
  1. 新建并添加以下路径(请根据你的实际安装位置修改):
  • ...\Arm-GNU-Toolchain\bin
  • ...\CMake\bin
  • ...\Ninja (确保 ninja.exe 在这里)
  • ...\OpenOCD\bin

System Path

  1. 验证:打开 CMD,依次输入以下命令,有版本号输出才算成功:
  • arm-none-eabi-gcc -v
  • ninja --version
  • cmake --version
  • openocd -v

path confirm


第二步:底料制作(CubeMX 生成 CMake 工程)

  1. 打开 STM32CubeMX,配置好 RCC (HSE/LSE) 和 SYS (Debug Serial Wire)。

  2. Project Manager -> Project
    Toolchain / IDE:一定要选择 CMake

  3. Project Manager -> Code Generator
    勾选 Generate peripheral initialization as a pair of '.c/.h' files (代码更整洁)。

  4. 点击 GENERATE CODE


第三步:注入灵魂(OpenOCD 配置文件)

这是最关键的一步!为了让 VSCode 和 CLion 都能轻松识别调试器,我们在 工程根目录(即 CMakeLists.txt 同级目录)新建一个文件,命名为 openocd.cfg

将以下内容填入(以 DAPLink + STM32F4 为例):

# openocd.cfg

# 1. 选择接口 (调试器类型)
# 如果是 ST-Link,改为 source [find interface/stlink.cfg]
source [find interface/cmsis-dap.cfg]

# 2. 选择通信协议
transport select swd

# 3. 设置速度 (单位kHz,建议加上,太快可能不稳定)
adapter speed 5000

# 4. 选择目标芯片 (根据你的型号修改,如 stm32f1x.cfg)
source [find target/stm32f4x.cfg]

提示:如果你用的是 ST-Link,就把第 1 步换成 interface/stlink.cfg 即可。


第四步:VSCode 方案(轻量自由)

1. 准备工作在插件市场安装以下插件:

  • C/C++ Extension Pack
  • CMake Tools
  • Cortex-Debug (核心调试插件)

2. 用 VSCode 打开工程

选择预设 Debug,在工程根目录新建一个 .vscode 文件夹 。

在这里插入图片描述

3. 配置自动编译 (tasks.json)

为了实现“一键调试前自动编译”,在 .vscode 文件夹下新建 tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "cmake",
            "command": "build",
            "problemMatcher": "$gcc",
            "group": { "kind": "build", "isDefault": true },
            "detail": "CMake Build Task"
        }
    ]
}

4. 配置调试 (launch.json)

.vscode 文件夹下新建 launch.json。注意我们直接引用了根目录的 openocd.cfg,这样就不用写一堆复杂的路径了。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "STM32 Debug",
            "type": "cortex-debug",
            "request": "launch",
            "servertype": "openocd",
            "cwd": "${workspaceFolder}",
            
            /* 自动抓取 CMake 生成的 elf 文件 */
            "executable": "${command:cmake.launchTargetPath}", 
            
            "runToEntryPoint": "main",
            "device": "STM32F411", /* 替换你的具体型号 */
            
            /* 关键点:直接加载根目录的配置文件 */
            "configFiles": [
                "${workspaceFolder}/openocd.cfg"
            ],
            
            "preLaunchTask": "Build" /* 调试前先自动运行编译任务 */
        }
    ]
}

5. 检验成果

食用方法:按下 F5,VSCode 会自动编译 -> 烧录 -> 停在 main 函数。

vscode

第五步:CLion 方案(强大智能)

CLion 对 CMake 支持是原生的,配置更加简单傻瓜化。

1. 用 CLion 打开工程

用 CLion 打开工程根目录,调整 CMake 配置文件如图。
在这里插入图片描述

2. 配置工具链 (Settings -> Build -> Toolchains)

新建一个名为 STM32 的工具链:

  • C Compiler: 指向 arm-none-eabi-gcc.exe
  • C++ Compiler: 指向 arm-none-eabi-g++.exe
  • Debugger: 指向 arm-none-eabi-gdb.exe
  • Build Tool: 选择 Ninja

clion toolchain

3. 指定 OpenOCD (Settings -> Embedded Development)

  • OpenOCD Location: 指向你的 openocd.exe 路径。
  • Stm32CubeMX Location: 指向 STM32CubeMX.exe

clion embedded

4. 运行配置 (Run Configurations)

CLion 会自动识别 CMake 项目。我们需要调整一下“OpenOCD Download & Run”的配置:

  1. 点击右上角运行 -> Edit Configurations
  2. 左侧选择自动生成的 OpenOCD 配置(如果没有,点击左上角 + 新增 OpenOCD Download & Run)。
  3. 找到 Board config file 选项。
  4. 关键操作:点击右侧的文件夹图标,直接选择我们 步骤三 中创建的根目录下的 openocd.cfg 文件。

clion configuration

5. 检验成果

食用方法:点击右上角的绿色小虫子(Debug),CLion 会自动处理一切。

在这里插入图片描述


进阶技巧:开启上帝视角(配置 SVD 寄存器文件)

调试单片机光看变量怎么行?我们经常需要直接查看 GPIO、定时器、UART 等外设的寄存器状态。这就需要 SVD (System View Description) 文件,它能把冰冷的十六进制地址映射成可读的寄存器名称。

1. 获取 SVD 文件

虽然 Keil 的安装包里有,但我更推荐使用开源社区维护的版本,兼容性更好,且不需要安装庞大的 Keil。

  1. 找到你芯片对应的 .svd 文件(例如 STM32F407.svd)。
  2. 下载并把它丢到你的 工程根目录 下(和 CMakeLists.txt 在一起)。

2. VSCode 配置 (launch.json)

在 VSCode 中,我们需要在 launch.json 里显式指定这个文件的路径。Cortex-Debug 插件加载后,在调试栏的 “X PERIPHERALS” 窗口就能看到所有外设了。

打开 .vscode/launch.json,在 configurations 中添加一行 "svdFile"

{
    "configurations": [
        {
            "name": "STM32 Debug",
            // ... 其他配置保持不变 ...
            "device": "STM32F407",
            
            /* 【新增】指定 SVD 文件路径 */
            "svdFile": "${workspaceFolder}/STM32F407.svd",
            
            "configFiles": [ "${workspaceFolder}/openocd.cfg" ]
        }
    ]
}

3. CLion 配置 (可视化加载)CLion 的体验非常人性化,不需要改配置文件,直接在界面上点两下即可(也就是你截图里的那个位置)。

  1. 进入调试:点击右上角的小虫子开始调试。
  2. 打开外设视图:在底部的 Debug 面板中,切换到 “Peripherals” (外设) 标签页。
  3. 加载文件
  • 如果没有自动加载,界面中间会出现 “Load .svd file” (加载 .svd 文件) 的蓝色链接(如截图箭头所示)。
  • 点击它,选择你工程根目录下的 .svd 文件。

在这里插入图片描述

  1. 大功告成:现在你可以展开 GPIOA, TIM1 等外设,实时查看每一个寄存器的位(Bit)变化了!

避坑指南 (常见报错)

  1. 报错 Error connecting DP: cannot read IDR
  • 原因:线没接好,或者芯片没有供电。
  • 解决:检查杜邦线,确保 GND 均已连接;尝试按住 Reset 键再下载。
  1. VSCode 无法生成 build 文件夹
  • 原因:CMake 没有正确识别编译器 Kit。
  • 解决:按下 Ctrl+Shift+P -> 输入 CMake: Select a Kit -> 选择 [Scan for kits] -> 选中 GCC for arm-none-eabi
  1. OpenOCD 报错 Protocol error with Rcmd
  • 原因:VSCode 插件的时序问题。
  • 解决:在 launch.json 中尝试把 servertype 改为 external,然后手动在命令行运行 openocd 作为服务端。

结语

至此,你已经拥有了一套不输 Keil 的现代化嵌入式开发环境。代码补全、Git 管理、美观的界面……享受开发的乐趣吧!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐