找回密码
 立即注册
首页 业界区 业界 手把手教你使用vscode开发stm32!

手把手教你使用vscode开发stm32!

谯梨夏 2 小时前
开发工具配置篇:迎接新时代--使用vscode开发stm32

已经2026年了,你是否还在使用古老的keil5的调试呢?是否还在为keil5复制粘贴代码到聊天式ai再粘贴回来而烦恼呢?快快加入vscode开发stm32的大部队接受光荣的进化吧!

目录

  • 开发工具配置篇:迎接新时代--使用vscode开发stm32

    • 前言
    • 所有依赖的软件百度网盘链接以及配套b站手把手讲解视频
    • 一、下载cubemx以及对应stm32的hal库
    • 二、下载vscode以及插件

      • stm32 for vscode
      • makefiel

    • 三、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
下载完成之后点击
1.png

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

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

导出这边选择makefile
4.png

二、下载vscode以及插件

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

stm32 for vscode

6.png

7.png

点击install build tools
8.png

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

9.png

三、stlink驱动安装

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

四、 配置开发环境

配置环境变量


  • 在vscode找到最左边的四个方块图标,这里是我们安装拓展的地方
    点击之后找到stm32 for vscode
    11.png

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

    缓存文件夹如下
    13.png

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

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

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

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

    双击path
    18.png

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

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


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

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

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

关于launch.json文件

在左边栏找到这个图标
<img alt="" loading="lazy">

点击一下里面的创建launch文件
就可以在目录的.vscode文件夹下找到
24.png

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

关于tasks.json文件

位置与launch文件一样,没有就新建一个
  1. {
  2.     // See https://go.microsoft.com/fwlink/?LinkId=733558
  3.     "version": "2.0.0",
  4.     "tasks": [
  5.         {
  6.             "label": "build task",         // 任务标签
  7.             "type": "shell",               // 任务类型,因为要调用mingw32-make,是在终端(CMD)里运行的,所以是shell任务
  8.             "command": "make -j24",// 任务命令,线程数可以根据自己的电脑修改,建议与cpu核数相同
  9.             "problemMatcher": [],         
  10.             "group": {
  11.                 "kind": "build",
  12.                 "isDefault": true
  13.             }
  14.         },
  15.         {
  16.             "label": "download dap",
  17.             "type": "shell",               // 如果希望在下载前编译,可以把command换成下面的命令
  18.             "command":"make -j24 ; make download_dap", // "mingw32-make -j24 ; mingw32-make download_dap",
  19.             "group": {                     // 如果没有修改代码,编译任务不会消耗时间,因此推荐使用上面的替换.
  20.                 "kind": "build",
  21.                 "isDefault": false,
  22.             },
  23.         },
  24.         {
  25.             "label": "download jlink", // 要使用此任务,需添加jlink的环境变量
  26.             "type": "shell",
  27.             "command":"make -j24 ; make download_jlink", // "mingw32-make -j24 ; mingw32-make download_jlink"
  28.             "group": {
  29.                 "kind": "build",
  30.                 "isDefault": false,
  31.             }
  32.         },
  33.         {
  34.             "label": "log",
  35.             "type": "shell",
  36.             "command":"JlinkRTTClient",
  37.             "args": [],
  38.             "problemMatcher": [],
  39.             // "dependsOn":[
  40.             //     "build task", // 可以添加多个.
  41.             // ]
  42.             // 若使用daplink,则将log任务设置为依赖于jlink launch任务,保证jlink launch任务先于log任务执行
  43.         }
  44.     ]
  45. }
复制代码
开始调试

到此配置应当已经完成了,接好stlink,连接好stm32后就可以愉快的调试啦,点击绿色的三角形开始编译并烧录到单片机
26.png

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

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

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

粘贴需要查看的变量名称
30.png

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

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

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

你也可以优雅的使用copilot工具更快速的开发stm32啦
stm32 svd文件

stm系列svd仓库:
modm-io/cmsis-svd-stm32: CMSIS SVD files for all STM32 devices

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册