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

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

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

目录

本篇文章主要参考湖南大学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中的一个

四、 配置开发环境

配置环境变量

  1. 在vscode找到最左边的四个方块图标,这里是我们安装拓展的地方

    点击之后找到stm32 for vscode

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

    缓存文件夹如下

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

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

  4. 接下来按下win键,在搜索栏搜索环境

    点击编辑系统环境变量

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

    双击path

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

配置完成之后win + r

在弹出的窗口输入cmd,回车

粘贴如下指令运行

cmd 复制代码
arm-none-eabi-gcc -v

如果出现类似下图输出,就代表成功

  1. 打开vscode 进入到项目文件夹(前面创建的cubemx项目文件夹)

  2. 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",
    }
  3. 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

相关推荐
fly的fly7 小时前
RT-Thread消息队列源码机制讲解
c语言·stm32·物联网
Hello_Embed10 小时前
Modbus 传感器开发:从寄存器规划到点表设计
笔记·stm32·单片机·学习·modbus
橘色的喵10 小时前
将 RT-Thread MSH 移植到 Linux: 嵌入式调试 Shell 的多后端设计
嵌入式
小龙报10 小时前
【51单片机】不止是调光!51 单片机 PWM 实战:呼吸灯 + 直流电机正反转 + 转速控制
数据结构·c++·stm32·单片机·嵌入式硬件·物联网·51单片机
送外卖的工程师10 小时前
STM32 驱动五线四相步进电机(28BYJ-48+ULN2003)教程
stm32·单片机·嵌入式硬件·mcu·物联网·51单片机·proteus
优信电子10 小时前
STM32软件SPI驱动BMP280(OLED显示)
stm32·oled·spi·传感器·bmp280
拉咯比哩10 小时前
江科大老学长 STM32 + FREERTOS 项目实践 教程资源汇总
stm32·单片机·嵌入式硬件
niuTaylor10 小时前
STM32内存管理深度解析:裸机与FreeRTOS的堆栈配置实战指南
stm32·单片机·嵌入式硬件
Zevalin爱灰灰11 小时前
针对汽车工业软件安全性的C语言编码规范——MISRA C
c语言·开发语言·汽车·嵌入式