开发工具配置篇:迎接新时代--使用vscode开发stm32
已经2026年了,你是否还在使用古老的keil5的调试呢?是否还在为keil5复制粘贴代码到聊天式ai再粘贴回来而烦恼呢?快快加入vscode开发stm32的大部队接受光荣的进化吧!
目录
- 开发工具配置篇:迎接新时代--使用vscode开发stm32
- 前言
- 所有依赖的软件百度网盘链接以及配套b站手把手讲解视频
- 一、下载cubemx以及对应stm32的hal库
- 二、下载vscode以及插件
- [stm32 for vscode](#stm32 for vscode)
- makefiel
- 三、stlink驱动安装
- [四、 配置开发环境](#四、 配置开发环境)
- 开始调试
- [stm32 svd文件](#stm32 svd文件)
本篇文章主要参考湖南大学robomaster跃鹿战队的电控开源部分
.Doc/VSCode+Ozone使用方法.md · HNUYueLuRM/basic_framework - Gitee.com
前言
本篇文章主要使用vscode + cubemx平替keil5,实现快速开发、实时可视化变量(全局)、可以查看寄存器内容、copilot辅助开发....
支持stlink,jlink,daplink调试器,暂时没有找到纯靠vscode的实时可视化参数波形图功能的插件
如果大家还有其他好用的方案欢迎讨论噢~
所有依赖的软件百度网盘链接以及配套b站手把手讲解视频
可能网络原因导致一些安装无法完成,所以这边提供所用到的所有包,根据需要安装即可
通过网盘分享的文件:all_in_one.zip
链接: https://pan.baidu.com/s/12brC2bPmu9wWa2h-VgIZmg?pwd=9xah 提取码: 9xah
--来自百度网盘超级会员v3的分享
b站视频链接
https://www.bilibili.com/video/BV1ZMfGBrEFy/?vd_source=f553a12b04c16a678ddc0064cc04563c
一、下载cubemx以及对应stm32的hal库
cubemx官网(需要简单的注册即可):
https://www.st.com/en/development-tools/stm32cubemx.html#get-software
下载完成之后点击

直接在搜索栏搜索你使用的stm32的型号,以f103作为例子

双击要选择的板子即可进入
其余详细的配置可以参考其他教程
主要注意的是:
sys的配置要配置成sw模式,不然会只能烧录一次

导出这边选择makefile

二、下载vscode以及插件
vscode官网:
https://www.st.com/en/development-tools/stm32cubemx.html#get-software
需要安装的vscdoe插件:
点击vscode左侧的这个图标

stm32 for vscode


点击install build tools

出现如上页面即代表安装成功(大约5~15分钟)
如果网络不好口语切换手机热点再次尝试
还不行就直接使用我的百度网盘分享的zip压缩包,建议放到d盘(如果有的话)
makefiel

三、stlink驱动安装
如果你之前没有使用过stlink,请根据如下链接完成stlink驱动的安装
STSW-LINK009 | Software - 意法半导体
根据自己的电脑配置双击以下两个exe中的一个

四、 配置开发环境
配置环境变量
-
在vscode找到最左边的四个方块图标,这里是我们安装拓展的地方
点击之后找到stm32 for vscode

-
打开详情页面-->点击右下角蓝色的缓存文字,打开缓存文件夹

缓存文件夹如下

-
进入@开头的文件夹,如下,我们为了方便,把该文件夹下面所有的东西迁移到D盘(如果有的话),在D盘目录下新建一个文件夹叫stm32tools,把文件全部放进去

迁移路径如下图(因为这个演示的机器没有分d盘,我就放到c盘了)

-
接下来按下win键,在搜索栏搜索环境
点击编辑系统环境变量

点击最下面的环境变量(N)

双击path

点击右边的新建即可新建变量,ctrl+v粘贴三个bin的路径(如下图,根据自己的文件位置来

配置完成之后win + r
在弹出的窗口输入cmd,回车
粘贴如下指令运行
cmd
arm-none-eabi-gcc -v
如果出现类似下图输出,就代表成功

-
打开vscode 进入到项目文件夹(前面创建的cubemx项目文件夹)
-
ctrl + ,打开设置,搜索stm32 for vscode

点击在settings.json中编辑,完善如下路径

settings.json(根据自己的路径配置)
json{ "stm32-for-vscode.openOCDPath": "C:\\stm32tools\\openocd\\0.12.0-7.1\\.content\\bin\\openocd.EXE", "stm32-for-vscode.makePath": "C:\\stm32tools\\windows-build-tools\\4.4.1-3.1\\.content\\bin\\make.EXE", "stm32-for-vscode.armToolchainPath": "C:\\stm32tools\\arm-none-eabi-gcc\\14.2.1-1.1.1\\.content\\bin", "makefile.configureOnOpen": true, "cortex-debug.stm32cubeprogrammer": "", "cortex-debug.openocdPath": "C:\\stm32tools\\openocd\\0.12.0-7.1\\.content\\bin\\openocd.EXE", "cortex-debug.armToolchainPath": "C:\\stm32tools\\arm-none-eabi-gcc\\14.2.1-1.1.1\\.content\\bin", } -
ctrl + ~
在终端输入make -j12 测试看看能否成功编译,如下图即代表成功编译

关于launch.json文件
在左边栏找到这个图标
点击一下里面的创建launch文件
就可以在目录的.vscode文件夹下找到

我们直接复制下面我修改好的stlink的代码(daplink、jlink湖大开源的gitee仓库已经提供)
json
{
// 启动调试的快捷键是F5
"version": "0.2.0",
"configurations": [
// 使用dap-link(如无线调试器时的参考配置)
{
"name": "STlink",
"cwd": "${workspaceRoot}",
"executable": "${workspaceRoot}\\build\\first.elf", // 要下载到调试器的文件,花括号中的是vscode两个预定义的参数
"request": "launch",
"type": "cortex-debug",
//使用J-link GDB Server时必须;其他GBD Server时可选(有可能帮助自动选择SVD文件)
//支持的设备见 https://www.segger.com/downloads/supported-devices.php
//svd文件,有这个文件才能查看寄存器的值,每个单片机都不同。可以在以下地址找到https://github.com/modm-io/cmsis-svd-stm32
//该项目的根目录已经提供了C型开发板使用的外设svd文件
"svdFile": "./STM32F103.svd",
"servertype": "openocd", //使用的GDB Server
"configFiles": [
"openocd_stlink.cfg", // 配置文件已经在根目录提供,若要修改以此类推,openocd的路径下的share/scripts中有各种写好的配置文件
],
"runToEntryPoint": "main", // 调试时在main函数入口停下
"preLaunchTask": "build task",//先运行Build任务编译项目,取消注释即可使用
"liveWatch": {
"enabled": true,
"samplesPerSecond": 4
}
},
],
}
配置完成之后在vscode的左侧debug图标即可看到更改配置的stlink的配置

关于tasks.json文件
位置与launch文件一样,没有就新建一个
json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"label": "build task", // 任务标签
"type": "shell", // 任务类型,因为要调用mingw32-make,是在终端(CMD)里运行的,所以是shell任务
"command": "make -j24",// 任务命令,线程数可以根据自己的电脑修改,建议与cpu核数相同
"problemMatcher": [],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "download dap",
"type": "shell", // 如果希望在下载前编译,可以把command换成下面的命令
"command":"make -j24 ; make download_dap", // "mingw32-make -j24 ; mingw32-make download_dap",
"group": { // 如果没有修改代码,编译任务不会消耗时间,因此推荐使用上面的替换.
"kind": "build",
"isDefault": false,
},
},
{
"label": "download jlink", // 要使用此任务,需添加jlink的环境变量
"type": "shell",
"command":"make -j24 ; make download_jlink", // "mingw32-make -j24 ; mingw32-make download_jlink"
"group": {
"kind": "build",
"isDefault": false,
}
},
{
"label": "log",
"type": "shell",
"command":"JlinkRTTClient",
"args": [],
"problemMatcher": [],
// "dependsOn":[
// "build task", // 可以添加多个.
// ]
// 若使用daplink,则将log任务设置为依赖于jlink launch任务,保证jlink launch任务先于log任务执行
}
]
}
开始调试
到此配置应当已经完成了,接好stlink,连接好stm32后就可以愉快的调试啦,点击绿色的三角形开始编译并烧录到单片机

等待一会后,就会出现下图所示的调试界面

在左侧就是调试常用的一些工具

cortex live watch可以实时查看全局变量的值,只需要点击加号

粘贴需要查看的变量名称

就可以实时查看到变量的值啦

从左到右 第一个是重置reset,暂停,逐过程,单步,单步跳出,重新开始调试,退出

XPERIPHERALS必须配置上面的svd文件才能够看到寄存器内部的值

你也可以优雅的使用copilot工具更快速的开发stm32啦
stm32 svd文件
stm系列svd仓库:
modm-io/cmsis-svd-stm32: CMSIS SVD files for all STM32 devices