vscode搭建stm32开发环境(代码片段)

嵌入式up笔记 嵌入式up笔记     2023-03-09     504

关键词:

文章目录

VSCode 搭建 STM32 开发环境

之前开发 STM32 使用的开发环境是 MDK + STM32CubeMX 方法,MDK 是收费软件,并且跨平台性能较差,因为工作以后开发环境集中于 Linux 下,且大概率使用到的 IDE 是 VSCode,或其他基于 elicpise 框架的 IDE,不再使用 MDK,所以学习使用 VSCode 来开发 STM32,本节记录一下 VSCode 搭建 STM32 开发环境的过程,整个开发链如下:VSCode 编辑代码 -> ARM GCC 编译 -> OpenOCD 仿真下载

一、软件工具准备

搭建环境前需要准备一些工具和软件

  • VSCode 软件

下载官网:VSCode官网

  • STM32CubeMX

下载官网:STM32CubeMX下载

  • Git 工具

下载官网:Git下载

  • OpenOCD

下载官网:OpenOCD,下载完成后是一个文件夹,不是安装程序,下载后我们找一个固定位置解压,然后将解压目录添加到系统环境

  • arm-none-eabi-gcc 编译器下载

下载官网:下载官网,选择后缀 win32.exe 下载安装,安装后将安装路径添加到系统环境变量

二、VSCode 配置

软件准备好后,进一步配置 VSCode 环境,打开软件后,先安装几个重要插件:

ARM用于看汇编代码,C/C++ 方便自动补全,Cortex-Debug 用于调试芯片,插件安装完成,我们用 CubeMX 新建一个 STM32 工程,配置点灯的IO口:

然后设置生成为 makefile 工程:

生成代码后进入到工程目录,打开 VSCode,这里我右击进入 git bash 然后输入 code . 就可以在 VSCode 工程打开该文件夹:

2.1 配置命令行

因为 VSCode 非常依赖命令行,所以第一步先修改命令行为 GitBash,点击左下角的标志进入系统设置

打开设置文件

插入如下配置代码:

    "terminal.integrated.profiles.windows": 
        "GitBash": 
            "path": "D:\\\\Git\\\\bin\\\\bash.exe",
            "args": [],
        
    ,
    "terminal.integrated.defaultProfile.windows": "GitBash",
    "terminal.external.windowsExec": "D:\\\\Git\\\\bin\\\\bash.exe",

将 Git 安装目录下的 bash 路径写入进去,就是代码中的

D:\\\\Git\\\\bin\\\\bash.exe

然后我们使用 ctrl+shift+` 打开命令行,就可以看到默认使用 GitBash 做命令行了

2.2 添加 make 工具

然后我们在命令行输入 make -j4,以4核心编译代码,如果出现找不到make的报错,则前往 ezwinports,下载 make-4.1-2-without-guile-w32-bin.zip,然后将解压内容放到 GIT 安装路径下的 mingw64 文件夹 Git\\mingw64\\,放进去选择重复文件不要覆盖,防止出问题,然后 make 命令就可以正常使用了,make 编译按照 CubeMX 生成的 Makefile 规则进行编译,生成编译文件:

我们可以修改 Makefile 来设置编译生成的文件名称,编译级别等等参数,需要对 makefile 语法有一定的了解

2.3 配置下载

编译完成了,生成的文件在 \\build\\ 下面,生成的文件有 VSCode_Test.elf、VSCode_Test.bin、VSCode_Test.hex,bin 是 2 进制文件,hex 是 16 进制,elf 则在 bin 的基础上包含了许多其他的信息,这里我们下载程序使用 OpenOCD 来下载,下载文件使用 .elf 可执行文件

创建一个 task.json 配置文件,用来创建任务,方便后面快速执行下载指令,创建方式如下:

创建默认格式任务,然后选择 task.json 文件,使用 MSbuild 导出

创建完成后就可以看到 .vscode 文件夹下有一个 task.json 配置文件了,点进去可以看到文件中有一个默认配置任务的格式了

我们在此基础上修改:添加了一个下载任务,


    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        
            "label": "download",
            "type": "shell",
            "command": "openocd",
            "args": [
                "-f",
                "D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink-v2.cfg",
                "-f",
                "D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
                "-c",
                "program build/VSCode_Test.elf verify reset exit"
            ],
            "group": "build",
            "presentation": 
                // 配置静默输出
                "reveal": "silent"
            ,
            // 报错匹配
            "problemMatcher": "$gcc"
        
    ]

label 是任务名称,type 是执行 shell 脚本,command 是执行的指令,这里是 openocd,arg 包含执行指令的参数,两个关键的参数如下:

"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink-v2.cfg"
"D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",

stlink-v2.cfg 是下载器的版本,stlink-v2就用 stlink-v2.cfg,jlink 就用 jlink.cfg,这些文件都在 openocd 的解压目录下

stm32f4x.cfg 则是对应芯片的配置文件,也在 openocd 的解压目录下,这两个参数就是两个文件的绝对路径,添加完成后,我们执行下载程序

使用快捷方式 ctrl+shift+b 执行download

然后程序就下载进去了

2.4 配置仿真

上面下载完成了,后面我们配置一下仿真的参数,使用 OpenOCD 来进行仿真,添加仿真运行配置文件

环境选择 Cortex Debug

添加完成后就会有一个仿真运行配置文件:launch.json,打开文件,然后添加配置,选择 OpenOCD,然后就会自动添加一个代码修改模板:

对他的参数进行修改:


    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
            "cwd": "$workspaceRoot",
            "executable": "./build/VSCode_Test.elf",
            "name": "STM32 Debug",
            "request": "launch",
            "type": "cortex-debug",
            "showDevDebugOutput": true,
            "servertype": "openocd",
            "device": "STM32F407VE",
            "configFiles": [
                "D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink.cfg",
                "D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
            ],
            "svdFile": "./STM32F407.svd"
        ,
    ]

主要的就是下载文件

"executable": "./build/VSCode_Test.elf",

下载器配置文件

            "configFiles": [
                "D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/interface/stlink.cfg",
                "D:/VSCode/ARM/ARM_PACK/OpenOCD-20211118-0.11.0/share/openocd/scripts/target/stm32f4x.cfg",
            ],

以及 stm32 仿真时的片上外设寄存器文件,该文件要从STM32官网下,选择对应型号下载后拷贝到目录下,用于看仿真过程中外设寄存器信息,STM32F4 的下载地址:SVD文件

"svdFile": "./STM32F407.svd"

配置完成后,在 main 函数设置断点,按 F5 执行仿真

仿真完成

2.5 配置 VSCode 写代码环境

上面的仿真和下载都完成了,但我们在写代码时发现,代码许多报错,警告啥的,虽然不会影响程序执行,但很烦,主要是因为 VSCode 没有对整个工程路径建立索引,下一步就是添加索引,消除这些报错、警告,添加 C 和 CPP 环境配置文件,按 ctrl+shift+P 打开 Command Palette,运行 C/Cpp: Edit configurations 生成c_cpp_properties.json 配置文件:

文件如下:

修改为下面的代码:


    "configurations": [
        
            "name": "Win32",
            "includePath": [
                "$workspaceFolder/**",
                "$workspaceFolder/Drivers/STM32F4xx_HAL_Driver/Inc",
                "$workspaceFolder/Drivers/STM32F4xx_HAL_Driver/Inc/Legacy",
                "$workspaceFolder/Drivers/CMSIS/Device/ST/STM32F4xx/Include",
                "$workspaceFolder/Drivers/CMSIS/Include",
                "$workspaceFolder/Drivers/CMSIS/Include",
                "$workspaceFolder/Core/Inc",
                "D:/VSCode/ARM/ARM_PACK/ARM_GCC/10 2021.10/arm-none-eabi/include"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_HAL_DRIVER",
                "STM32F407xx"
            ],
            "compilerPath": "D:\\\\VSCode\\\\ARM\\\\ARM_PACK\\\\ARM_GCC\\\\10 2021.10\\\\bin\\\\arm-none-eabi-gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++14",
            "intelliSenseMode": "windows-gcc-x86"
        
    ],
    "version": 4

修改保存后,C/CPP 就会按照上面的路径去索引文件,按照设定的编译器补全 C 的语法,不会再出现报错、警告了,开发更舒服!

到此 VSCode 配置 STM32 开发环境就完成了,这些操作的思想不仅仅局限于 STM32 基本上所有芯片都通用,就是看你愿不愿意折腾了。

esp32开发:搭建windows开发环境--vscode操作(代码片段)

...CMD中进行编译失败。从log信息看是加密问题导致的。我的vscode是在加密白名单的,所以这一篇测试下VSCode环境。在ESP32的官方文档中有相关的说明–VSCo 查看详情

esp32开发:搭建linux开发环境--vscode操作(代码片段)

目录一、概述二、安装VSCode2.1安装依赖环境2.2获取ESP-IDF2.3安装EspressifIDF插件2.3.1查看python版本2.3.2安装pip2.3.3安装python3.82.3.5卸载python2.3.6更换为ubuntu22.04三、创建工程四、编译下载程序1.设备连接到虚拟机2.设置目标板3.添加用户... 查看详情

mac下搭建stm32开发环境(代码片段)

一、STM32CubeMX1.java环境直接使用brew安装openjdk8:brewinstallopenjdk@8配置jdk环境:sudoln-sfn/usr/local/opt/openjdk@8/libexec/openjdk.jdk/Library/Java/JavaVirtualMachines/openjdk-8.jdk/usr/libe 查看详情

stm32cubemx+makefile---开发环境搭建(代码片段)

>>本文已同步至码云-点此链接进入仓库<<环境工具版本说明开发板小熊派IoT开发板建议相同ubuntu16.04版本关系不大STM32CubeMXV6.3.0建议相同L4软件包STM32CubeFW_L4V1.16.0建议相同STM32CubeProgrammerv2.8.0版本关系不大交叉编译工具链gcc... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[windows版-3](代码片段)

《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Windows版-1]《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Windows版-2]前面的章节讲解了STM32的新建工程到编译下载,接下来将讲解STM32的调试。6OpenOCDOpenOCD是用于对S... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[windows版-3](代码片段)

《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Windows版-1]《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Windows版-2]前面的章节讲解了STM32的新建工程到编译下载,接下来将讲解STM32的调试。6OpenOCDOpenOCD是用于对S... 查看详情

stm32f103开发环境搭建(代码片段)

 1、准备好stm32f10x的固件库,再创建一个Template文件夹2、在Template文件夹内新建5个文件夹        分别是Libraries、Output、Project、System、User              再进入Libraries创建CMSIS文件夹                     ... 查看详情

esp32在win10系统上的开发环境搭建(代码片段)

IDE:vscode依赖工具:Python3.8开发工具:ESP-IDF由于本人习惯的编码IDE工具是vscode,且vscode也有相关的插件支持,所以直接在vscode上加载ESP32的开发工具。搭建WIN10上的vscode开发ESP32的环境需要分三步走。第一步... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[linux版-3](代码片段)

《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Linux版-1]《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Linux版-2]7OpenOCDOpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包。OpenOCD官网OpenOCD下载地址7.1OpenO... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[linux版-3](代码片段)

《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Linux版-1]《嵌入式-STM32开发指南》手把手教你搭建STM32开发环境[Linux版-2]7OpenOCDOpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包。OpenOCD官网OpenOCD下载地址7.1OpenO... 查看详情

stm32-h7开发环境搭建(代码片段)

前言:使用的是stm32Nucleo-H7A3ZI-Q开发板,由于网上资料较少,自己折腾一遍后写一些东西用来记录,不然过段时间忘了再重新准备又要很久。1.下载安装配置STM32CubeMx环境提取码:12341.1安装CubeMx软件1.2安装H7包2.... 查看详情

stm32-h7开发环境搭建(代码片段)

前言:使用的是stm32Nucleo-H7A3ZI-Q开发板,由于网上资料较少,自己折腾一遍后写一些东西用来记录,不然过段时间忘了再重新准备又要很久。1.下载安装配置STM32CubeMx环境提取码:12341.1安装CubeMx软件1.2安装H7包2.... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[linux版-1](代码片段)

笔者在前面写了Windows版的开发环境搭建,今天来了Linux版本的。好了,言归正传,接下来说说STM32的开发都需要那些软件吧,而且都是开源免费的,随便你玩!(1)STM32CubeMX:STM32CubeMX是一个配置STM32代码... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[linux版-1](代码片段)

笔者在前面写了Windows版的开发环境搭建,今天来了Linux版本的。好了,言归正传,接下来说说STM32的开发都需要那些软件吧,而且都是开源免费的,随便你玩!(1)STM32CubeMX:STM32CubeMX是一个配置STM32代码... 查看详情

vscode+platformio开发stm32(代码片段)

vscode+platformIO开发STM32前言编译文件/库指定指定源文件夹指定库文件夹指定编译板卡编译配置配置全局宏配置头文件路径配置编译优化等级输出map指定库的版本前言在搭建好一个可编译、可调试的环境之后,当然是开始配... 查看详情

esp32esp-idf开发环境搭建,windows下基于esp-idf|cmake|vscode插件的esp32开发环境搭建(代码片段)

...,乐鑫的esp-idf-tools安装工具发生了较大的变化,VsCode插件的功能也愈加完善,在此更新下最新的安装过程。  同期间,我在ESP32的开发学习过程中,总结了一套使用方法,并将其汇总为一个开源驱动库-Ea... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[windows版-2](代码片段)

4make工具安装前面通过STM32CubeMX生成Makefile工程,那么就需要一个工具来识别Makefile文件,也就是make工具,在Linux中已经自带make了,在Windows就需要安装make工具。在安装make工具之前,先来看看什么是makefile?M... 查看详情

《嵌入式-stm32开发指南》手把手教你搭建stm32开发环境[windows版-2](代码片段)

4make工具安装前面通过STM32CubeMX生成Makefile工程,那么就需要一个工具来识别Makefile文件,也就是make工具,在Linux中已经自带make了,在Windows就需要安装make工具。在安装make工具之前,先来看看什么是makefile?M... 查看详情