vscode搭建STM32开发环境的详细过程

需要安装的软件

vscode

必装插件:

  • C/C++:用于提供高亮显示和代码补全
  • Cortex-Debug:用于提供调试配置

make

make工具可以直接下载xPack项目提供的windows-build-tools工具里面带了make工具。

Release xPack Windows Build Tools v4.2.1-2 · xpack-dev-tools/windows-build-tools-xpack (github.com)

openocd

arm-none-eabi

stm32CubeMX

上述软件具体的安装教程网上有很多详细的介绍资料,这里就不详细介绍了。需要注意的是记得将make,openocd,arm-none-eabi等可执行程序的路径添加到环境变量中

以下章节的内容都是根据stm32CubeMX生成的vscode_stm32f411 Makefile工程为例子来进行讲解的。

配置开发环境

实际上就是打造代码的编辑环境,实现类似于keil中编辑代码和代码补全等功能。在通过vscode打开vscode_stm32f411文件夹后,其实已经具备了编辑和代码补全功能(前提是必装的插件已经安装好),只是会有很多报错的波浪线,这时候便需配置c_cpp_properties.json文件来解决源文件的各种报错提示:

如果提示**uint32_t是未定义的类型**在defines下添加__GNUC__

c_cpp_properties.json文件:

{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE",
                "USE_HAL_DRIVER", //
                "STM32F411xE", //
                "__GNUC__" //
            ],
            // "compilerPath": "C:\\Program Files\\LLVM\\bin\\clang.exe",
            "compilerPath": "C:/Program Files (x86)/GNU Tools Arm Embedded/7 2018-q2-update/bin/arm-none-eabi-gcc.exe",
            "cStandard": "c17",
            "cppStandard": "c++14",
            // "intelliSenseMode": "windows-clang-x64"
            "intelliSenseMode": "gcc-arm"
        }
    ],
    "version": 4
}

配置编译下载功能

新建task.json文件

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "make",
            "args": [
              "-j4"
            ],
            "group": { //group用于将当前任务设置为默认的build任务,可以直接通过Ctrl+Shift+B直接执行
              "kind": "build",
              "isDefault": true
            },
            "problemMatcher":[
              "$gcc"
            ]
        },
        {
          "label": "clean",
          "type": "shell",
          "command": "make",
          "args": [
            "clean"
          ]
        },
        {
            "label": "flash - ST-Link", //用于执行makefile文件中实现的下载指令
            "type": "shell",
            "command": "make flash",
            "problemMatcher": []
        },
        {
          "label": "download", //下载并运行
          "type": "shell",
          "command": "openocd",
          "args": [
            "-f",
            "interface/stlink-v2.cfg",
            "-f",
            "target/stm32f4x.cfg",
            "-c",
            "program build/vscode_stm32f411.elf verify reset exit" //TODO:这里的下载文件的路径不能够用${workspaceFolder}来指定
          ],
          "dependsOn":"build", //download任务的依赖任务,即download任务执行前会先执行build任务
        },
        {
          "label": "reset", //复位程序
          "type": "shell",
          "command":"openocd",
          "args": [
            "-f",
            "interface/stlink-v2.cfg",
            "-f",
            "target/stm32f4x.cfg",
            "-c init",
            "-c reset",
            "-c exit",
          ],
          "problemMatcher": []
        },
        {
          "label": "halt", //挂起程序
          "type": "shell",
          "command":"openocd",
          "args": [
            "-f",
            "interface/stlink-v2.cfg",
            "-f",
            "target/stm32f4x.cfg",
            "-c init",
            "-c halt",
            "-c exit",
          ],
          "problemMatcher": []
        },
        {
          "label": "run", //运行程序
          "type": "shell",
          "command":"openocd",
          "args": [
            "-f",
            "interface/stlink-v2.cfg",
            "-f",
            "target/stm32f4x.cfg",
            "-c init",
            "-c resume",
            "-c exit",
          ],
          "problemMatcher": []
        },
    ]
}

build任务用于编译工程(实质上是执行makefile文件 make)

clean任务用于清除编译生成的中间文件(实质是执行makefile文件中的 make clean)

flash - ST-Link任务用于下载代码到STM32芯片中,这里需要在makefile中添加flash伪目标,伪目标flash实现如下:

#flash the stm32
OPENOCD := openocd -f interface/stlink-v2.cfg -f target/stm32f4x_stlink.cfg
FIRMWARE = $(BUILD_DIR)/vscode_stm32f411.elf

flash:
	$(OPENOCD) -c init \
		-c 'reset halt' \
		-c 'flash write_image erase $(FIRMWARE)' \
		-c 'reset run' \
		-c exit

download任务用于下载代码到STM32芯片中,这里是完全在tasks.json文件中实现的(通过openocd实现下载目标文件)

reset任务用于复位目标板程序

halt任务用于挂起目标板程序

run任务用于运行挂起的目标程序

配置调试功能

添加launch.json文件配置调试环境

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceRoot}",
            "executable": "${workspaceRoot}/build/vscode_stm32f411.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd",
            "device": "STM32F411xx",
            "interface": "swd",
            "configFiles": [
                "${workspaceRoot}/openocd.cfg"
            ],
            "runToMain": true,
            "showDevDebugTimestamps": true,
            "svdFile": "${workspaceRoot}/STM32F411xx.svd", //需要查看外设寄存器的值必须指定该svd文件
        }
    ]
}

工作空间目录下添加openocd.cfg文件,文件内容如下:

source [find interface/stlink-v2.cfg]

source [find target/stm32f4x_stlink.cfg]

到此出已经可以执行F5经行调试了。

注意:这里必须执行make指令后才能进行调试,否则不能够正常调试

​ 为了确保每次执行调试时工程都是最新编译过的,可以在launch.json文件中添加"preLaunchTask": "build"的配置。preLaunchTask表示调试前执行的任务,build是指task.json文件中标签为build的任务(注意launch.json文件中的任务名字必须和task.json文件中的标签名一致)。

​ 为了确保每次调试结束后目标板上的程序还能继续运行,可以在launch.json文件中添加"postDebugTask": "run"的配置,这样可以在调试结束后执行task.json文件中的run任务以确保目标板上的程序还能继续运行。

完整的launch.json文件如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cortex Debug",
            "cwd": "${workspaceRoot}",
            "executable": "${workspaceRoot}/build/vscode_stm32f411.elf",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "openocd", //要选择的GDB server
            // "device": "STM32F411xx", //
            "interface": "swd",
            "configFiles": [
                // "${workspaceRoot}/openocd.cfg"
                "interface/stlink-v2.cfg",
                "target/stm32f4x.cfg"
            ],
            "runToMain": true,
            "showDevDebugTimestamps": true,
            "svdFile": "${workspaceRoot}/STM32F411xx.svd",
            "preLaunchTask": "build", //调试之前运行的任务(调试之前一定要确保工程被编译过)
            "postDebugTask": "run", //调试结束后运行程序,没有的化会导致程序调试结束后处于挂起状态
        }
    ]
}

细心的同学可能会注意到,这里的launch.json文件和上面的该文件在configFiles位置处也有一些区别:

采用这里的这种写法可以不用在工作文件夹目录下新建openocd.cfg文件,不过这种方式在命令行中直接输入openocd便会报错。

小知识点:在终端中启动openocd时,会自动在当前目录下寻找openocd.cfg的文件作为配置文件

到此这篇关于vscode搭建STM32开发环境的详细过程的文章就介绍到这了,更多相关vscode搭建STM32开发环境内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Win7环境下搭建Go开发环境(基于VSCode编辑器)

    一.在搭建的时候参考以下文章 http://www.cnblogs.com/zsy/archive/2016/02/28/5223957.html http://blog.csdn.net/hil2000/article/details/51714607 http://www.cnblogs.com/mubing/p/5820038.html http://www.golangtc.com/t/57d3961db09ecc1635000170 二.准备(将所有需要的软件下载下来) 1.VSCod

  • VSCode+Gradle搭建Java开发环境实现

    前言 其实目前已经有许多优秀的IDE都是支持JAVA开发的,比如Eclipse.NetBeans.IntelliJ IDEA.Android Studio等,如果是项目级的开发,并且对这些IDE也已经十分满意的话,可以不用再来折腾VSCode(Visual Studio Code).我本人主要是基于以下原因选择折腾一番: 确实是喜欢VSCode这款工具,开源免费,UI美观,性能强悍. 插件丰富,并且通过对各种插件的安装,也能对程序运行过程和原理有进一步了解,达到 "知其所以然" 的目的

  • VsCode搭建Java开发环境的方法

    1:在 Visual Studio Code 中打开扩展视图(Ctrl+Shift+X),输入关键词java.spring分别下载Java开发插件包和springboot插件包 2:配置参数 点击设置按钮,进入设置选项,配置用户设置(文件->首选项->设置 Ctrl+,) { "editor.minimap.enabled": false, "window.zoomLevel": 0, "workbench.iconTheme": &

  • 使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤

    写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主题这个东西. 我个人是那种"喜新厌旧"的,所以看久了 Pycharm 就感觉很难受了,再加上 Pycharm 太笨重了,就换成了以前短时间用过的 VSCode,以前没用是懒得折腾插件,现在闲下来准备折腾一下! 这里放一张我现在的 Pycharm 的配色主题: 闲话少说,进入正题! 创建 D

  • 在VsCode中搭建Go开发环境的配置教程

    现在Go1.14都已经发布好些日子了,之前发的Go环境搭建教程早已过时,只是因为时间问题一直没来得及更新 这次怀着愧疚的心情,在凌晨四点时,将这教程进行一个更新 注意:本教程最大的好处是不需要梯子. 直接在墙内可进行一切操作,文章写给纯小白的,部分Linux常识解释的过多,熟悉的人请略过 Go的安装 安装基本还是之前的老样子,不过现在的安装早已省事不少,不再需要配置环境变量.直接去官网,下载了安装包后直接安装即可 在Go中文网进行Go最新版安装包的下载(或者复制网址浏览器打开https://st

  • 使用VSCode和VS2017编译调试STM32程序的实现

    近两年,微软越来越拥抱开源支持跨平台,win10搭载Linux子系统,开源VSCode作为跨平台编辑器,VS2017官方支持了Linux和嵌入式开发功能. ST也是,近两年开发的软件工具基本都是跨平台(基于Java)的,比如STM32CubeMX,MCUFinder,STM32CubeProgrammer等.17年年底收购了truestudio的开发公司-Atollic.这个公司的IDE就是基于Eclipse使用GNU套装的. 官方都支持了,那我们有必要了解一下.要是好用,说不定就可以淘汰老旧的

  • vscode+platformIO开发stm32f4的实现

    我的电脑环境 win10 vscode 1.36.1 vscode安装插件 安装完这个插件后会提示你安装 platformIOCore,按照提示安装即可.安装过程可能比较缓慢, 可能需要翻墙. 新建项目 选择板子的的型号和要用的框架 点击完成,等待项目创建完成.(首次创建项目要挺久的, 应该也是要翻墙才可以的) 项目创建完成后,打开查看platformio.ini 修改一下platformio.ini文件 [env:black_f407zg] platform = ststm32 board =

  • vscode搭建STM32开发环境的详细过程

    需要安装的软件 vscode 必装插件: C/C++:用于提供高亮显示和代码补全 Cortex-Debug:用于提供调试配置 make make工具可以直接下载xPack项目提供的windows-build-tools工具里面带了make工具. Release xPack Windows Build Tools v4.2.1-2 · xpack-dev-tools/windows-build-tools-xpack (github.com) openocd arm-none-eabi stm32

  • VSCode搭建STM32开发环境的方法步骤

    目录 1.安装VScode 2.安装C/C++插件 3.安装Keil Assistant插件 4.用vscode打开keil工程 5.编译.下载程序 6.常用操作 官方简述 摘要: 作为一个51单片机或STM32单片机的使用者,keil一直是我们的必备的一款工具之一.但keil的一些问题也一直存在,当然也有人用其他的比如STM32CubeIDE.但是今天推荐的是VScode+Keil Assistant插件,不需要很复杂的配置各种文件和环境变量,只需要一个插件即可!可以编译代码和下载程序. 当我

  • openEuler 搭建java开发环境的详细过程

    目录 1. 初始化环境 2. 安装jdk8 3. 安装SVN 4. 安装Git 5. 安装Node.js 6. 下载并激活IntelliJ IDEA 7. 下载并激活Navicat 本文操作系统及版本号:↓openEuler release 22.03 LTSLinux version 5.10.0-60.35.0.64.oe2203.x86 _64 1. 初始化环境 # 1. 更新依赖库 yum -y update # 2. 安装常用工具包 yum -y install wget tar vi

  • 基于Jupyter notebook搭建Spark集群开发环境的详细过程

    一.概念介绍: 1.Sparkmagic:它是一个在Jupyter Notebook中的通过Livy服务器 Spark REST与远程Spark群集交互工作工具.Sparkmagic项目包括一组以多种语言交互运行Spark代码的框架和一些内核,可以使用这些内核将Jupyter Notebook中的代码转换在Spark环境运行. 2.Livy:它是一个基于Spark的开源REST服务,它能够通过REST的方式将代码片段或是序列化的二进制代码提交到Spark集群中去执行.它提供了以下这些基本功能:提

  • 使用VScode搭建ROS开发环境的教程详解

    俗话说"工欲善其事必先利其器",之前在Ubuntu上运行的ROS项目都是用vim或者gedit编写和修改代码,然后在终端编译运行,很不方便,函数跳转查看都没办法实现.所以今天我决定找一个方便的开发工具,也就是找一个像Windows上的VS那样的集成开发工具(IDE),ROS官网上有一个不同IDE的对比文章,网址在这里 我选择使用VScode.下载安装好VScode后,在扩展栏安装C/C++,CMake,CMake Tools,Code Runner,ROS(deprecated),Chinese

  • 教你使用vscode 搭建react-native开发环境

    问题 代码没有提示: 许多刚接触RN开发的非前端同学,都会问"哪个编辑器有智能提示?"...而对于前端同学来说,现在的日子已经好很多了,要什么自行车. 低级代码错误: 这里的错误是指类似拼写错误,符号错误等.写完代码,跑起来各种报错,有时候费死劲的找,最后发现是个中文的分号问题. 解决办法 可选的方案大概有: 使用typescript: 直接使用有静态类型支持的js版本,but要再学习一套语法,而且我的代码都是ts写的,但很多好的公共库不是啊. 使用flow: 由于网络的原因,这个环境

  • 在VScode中配置ROS环境的详细过程

    目录 准备工作 使用 1 创建工作空间 2 VScode打开工作空间 3 创建功能包 4 创建配置json文件 5 编写文件 6 修改功能包CMakeList.txt 7 编译 8 运行ROS MASTER 9 运行节点 调试 参考 准备工作 首先在VScode中安装ROS和catkin_tool插件 VScode快捷键说明:ctrl+shift+p:调出用于执行命令的输入框ctrl+shift+b:编译 使用 1 创建工作空间 终端打开,在命令行: mkdir -p ~/am_ws/src c

  • vscode搭建go开发环境案例详解

    目录 前言 一.安装goLang 二.配置环境变量 三.vscode安装插件 四.安装golang依赖 五.新建go文件 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 能用golang就用golang..这配置很麻烦 提示:以下是本篇文章正文内容,下面案例可供参考 一.安装goLang 安装地址 自行根据系统选择 二.配置环境变量 #在cmd中输入 go servion 环境变量配置完毕 三.vscode安装插件 四.安装golang依赖 cmd管理员权限下执行 go

  • 在PyCharm搭建OpenCV-python的环境的详细过程

    目录 版本 步骤 1.用PyCharm创建一个工程: 2.打开设置,添加配置(add): 3.安装opencv-python库; 4.稍等片刻: 5.测试: 版本 PyCharm2021.2.3 +python-3.6.7 +opencv-python-4.5.2.52 步骤 1.用PyCharm创建一个工程: 2.打开设置,添加配置(add): 3.安装opencv-python库; (1)更换下载源: (2)安装相应的版本:opencv-python-4.5.2.52: 4.稍等片刻: 5.

  • 一步步教你搭建Scala开发环境(非常详细!)

    目录 一.Scala开发环境搭建 1.1.安装scala 1.2.scala插件安装 1.2.1.在线安装 1.2.2.离线安装 1.3.Scala快速入门 1.创建一个maven项目 2.引入scala框架 3.创建项目的源文件目录 4.在scala下新建一个包 5.编写代码 1.4.关联scala源码 1.5.Scala API 总结 一.Scala开发环境搭建 1.1.安装scala 1.首先确保jdk是否安装成功 如果还未安装jdk,请猛戳这里–>JDK安装教程 2.下载对应的scala

随机推荐