如何通过VSCode高效开发STM32项目?

摘要:已经2026年了,你是否还在使用古老的keil5的调试呢?是否还在为keil5复制粘贴代码到聊天式ai再粘贴回来而烦恼呢?快快加入vscode开发stm32的大部队接受光荣的进化吧!
开发工具配置篇:迎接新时代--使用vscode开发stm32 已经2026年了,你是否还在使用古老的keil5的调试呢?是否还在为keil5复制粘贴代码到聊天式ai再粘贴回来而烦恼呢?快快加入vscode开发stm32的大部队接受光荣的进化吧! 目录开发工具配置篇:迎接新时代--使用vscode开发stm32前言所有依赖的软件百度网盘链接以及配套b站手把手讲解视频一、下载cubemx以及对应stm32的hal库二、下载vscode以及插件stm32 for vscodemakefiel三、stlink驱动安装四、 配置开发环境配置环境变量关于launch.json文件关于tasks.json文件开始调试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,回车 粘贴如下指令运行 arm-none-eabi-gcc -v 如果出现类似下图输出,就代表成功 打开vscode 进入到项目文件夹(前面创建的cubemx项目文件夹) ctrl + ,打开设置,搜索stm32 for vscode 点击在settings.json中编辑,完善如下路径 settings.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仓库已经提供) { // 启动调试的快捷键是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文件一样,没有就新建一个 { // 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