CMake + VS Code + J-Link

以下是基于 VS Code + CMake + J-Link 开发 STM32 的完整教程。

用VS Code写代码,用RTT看数据,用J-Link烧录调试

一、安装 PC 端软件

核心工具包推荐 STM32CubeCLT ,它是 ST 官方提供的命令行工具集,一次性包含了 GCC-ARM 编译器、CMake、Ninja 和 OpenOCD。

下载页面:

bash 复制代码
https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
  1. STM32CubeMX 6.11.0 以上:支持直接生成 CMake 工程
  2. STM32CubeCLT 1.15.0 以上:包含 CMake、Ninja、GCC-ARM 工具链
  3. SEGGER J-Link 软件包:J-Link 驱动和 GDB Server,官网下载安装

安装后验证:

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

二、安装 VS Code 插件

插件 用途
ms-vscode.cpptools C/C++ 核心支持
ms-vscode.cmake-tools CMake 构建工具集成
twxs.cmake CMake 语法高亮
marus25.cortex-debug Cortex-M 调试核心,必须
dan-c-underwood.arm ARM 汇编高亮
zixuanwang.linkerscript 链接脚本高亮

一键安装命令:

bash 复制代码
code --install-extension ms-vscode.cpptools
code --install-extension ms-vscode.cmake-tools
code --install-extension twxs.cmake
code --install-extension marus25.cortex-debug
code --install-extension dan-c-underwood.arm
code --install-extension zixuanwang.linkerscript

三、用 CubeMX 生成 CMake 工程

  1. 打开 CubeMX,新建项目选择 MCU 型号
  2. 配置引脚、时钟树
  3. Project Manager → Toolchain / IDE 选择 CMake
  4. 建议 Code Generator 勾选 Generate peripheral initialization as a pair of .c/.h files per peripheral
  5. 点击 GENERATE CODE,生成包含 CMakeLists.txt 的工程

四、在 VS Code 中编译

  1. VS Code 打开生成的工程文件夹
  2. CMake Tools 插件自动检测 CMakeLists.txt,选择 arm-none-eabi-gcc 作为 Kit
  3. 点击底部状态栏 Build 按钮或按 F7 编译

终端编译:

bash 复制代码
cd build
ninja

在 .vscode/launch.json 中配置:

json 复制代码
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "J-Link Debug",
            "cwd": "${workspaceFolder}",
            "executable": "${workspaceFolder}/build/你的工程名.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "serverpath": "C:/Program Files/SEGGER/JLink/JLinkGDBServerCL.exe",
            "device": "STM32F407VG",      // 替换为实际型号
            "interface": "swd",
            "runToEntryPoint": "main",
            "armToolchainPath": "C:/Program Files (x86)/Arm GNU Toolchain/bin"
        }
    ]
}

serverpath 指向 J-Link GDB Server 的实际路径。如果连接多个 J-Link,添加 "serialNumber": "你的序列号"。

六、下载与仿真

  • 下载 :按 F5 启动调试,自动烧录 .elf 文件
  • 调试:断点、单步、查看变量/寄存器全部支持
  • SVD 文件 (可选):指定 svdFile 路径后可查看外设寄存器值

如需单独烧录 .bin:

bash 复制代码
JLinkExe -device STM32F407VG -if SWD -speed 4000 -CommanderScript download.jlink

download.jlink 内容:

复制代码
loadfile build/工程名.bin 0x08000000
r
g
exit

七、生成 .bin 文件

在根目录 CMakeLists.txt 末尾添加:

cmake 复制代码
add_custom_command(
    TARGET ${CMAKE_PROJECT_NAME} POST_BUILD
    COMMAND arm-none-eabi-objcopy -O binary $<TARGET_FILE:${CMAKE_PROJECT_NAME}> ${CMAKE_PROJECT_NAME}.bin
    COMMENT "Generating .bin file"
)
相关推荐
芯岭技术郦10 小时前
32 位 ARM® Cortex®-M0+ 内核MCU普冉MS32C001-C
单片机·嵌入式硬件
骑着毛驴数星星10 小时前
STM32 CAN波特率与采样点计算,基于HAL库
stm32·单片机·嵌入式硬件
zhangrelay11 小时前
Arduino-MEGA-ESP单片机理论课笔记02-硬件-2026
笔记·单片机·嵌入式硬件
艾芯微科技11 小时前
钰泰 ETA5055V330DD1E|SOT-223 3.3V LDO,低压差、大电流线性稳压选型分享
网络·单片机·嵌入式硬件·集成测试·51单片机
新晨单片机设计12 小时前
S023A-基于STM32单片机智能插座【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus·单片机智能插座
EatFans13 小时前
全栈自造 Status Deck(四):硬件终于到了,从点亮屏幕到跑通第一个 Demo
单片机·物联网
qq_4017004113 小时前
STM32 GPIO 精讲|推挽 / 开漏 / 上拉浮空,工程选型避坑
stm32·单片机·嵌入式硬件
创界工坊工作室14 小时前
19-基于单片机的宠物喂养控制系统设计
stm32·单片机·嵌入式硬件·proteus·宠物
兴通物联科技16 小时前
自助终端涉外证件核验选型:XT2010MRZ 嵌入式护照识别模块技术解析
单片机·嵌入式硬件·计算机视觉·硬件架构
myy-learn18 小时前
ARM-I2C 驱动优化与 LM75 温度传感器读取实践
arm开发·单片机·嵌入式硬件