VSCode搭建ARM(STM32开发环境)

2023-11-20

目录

 

需要用到的工具

软件安装

下载安装 Visual Studio Code 

下载安装 STM32Cubemx

下载安装 ARM GCC交叉编译工具链

下载安装 Msys2

下载安装 OpenOCD

下载安装 Make

开发环境配置

msys2_shell.cmd作为VSCode的终端

生成Makefile工程

VsCode下编译工程

安装C/C++插件

添加GDB调试

添加任务 

添加OcdStm32.cfg文件

编译下载调试

打开调试服务命令

开始调试

运行效果展示 


需要用到的工具

  1. Visual Studio Code
  2. STM32Cubemx
  3. ARM GCC 交叉编译工具链
  4. Msys2
  5. OpenOCD
  6. Make
  7. ST-link
  8. STM32F4板子

软件安装

下载安装 Visual Studio Code 

软件正常安装就行,在安装快要完成的时候,将VSC添加到Path。

下载安装 STM32Cubemx

软件正常安装就行。需要注意的时候,后期需要将自己使用到的库,添加到STM32Cubemx。

下载安装 ARM GCC交叉编译工具链

软件正常安装。安装完成后把bin文件夹加到系统环境变量。然后在CMD命令行下输入arm-none-eabi-gcc -v,测试环境ARM GCC是否安装正常。如下图所示

下载安装 Msys2

正常安装Msys2。然后让其直接继承Windows的环境变量,在msys2文件夹下有msys2_shell.cmd,用记事本打开,把第16行前的rem去掉,改成set MSYS2_PATH_TYPE=inherit。如下图所示

下载安装 OpenOCD

在硬盘里找个位置,然后将OpenOCD解压到当前目录,即安装完成。然后将bin或者bin-x64目录添加到系统环境变量。运行openocd -v,测试安装是否正常。如下图所示

下载安装 Make

文件选择Complete package, except sources(如果无法进入下载页面,请从文末给出的网盘地址进行下载)。然后将bin目录加到系统环境变量。运行make -v,测试安装是否正常。如下图所示

双击打开msys2_shell.cmd,进入目录下有Makefile的工程,运行make,看是否编译成功。如下图所示

 

至此,所需要的软件已经全部安装完成,接下来,进行开发环境的配置。

 

开发环境配置

msys2_shell.cmd作为VSCode的终端

 在VsCode中,使用快捷键ctrl+shift+p搜索setting,找到“首选项:打 开设置(json)”。点击会进入一个文件,把这两行复制进去,只要改第一行msys2_shell.cmd的地址。

{
    "terminal.integrated.shell.windows":"C:/msys64/msys2_shell.cmd",  
    "terminal.integrated.shellArgs.windows": ["-defterm", "-mingw32", "-no-start", "-here"],
}

生成Makefile工程

打开STM32Cubemx,在ToolChain/IDE选项中选择Makefile,生成一个Makefile工程。如下图

VsCode下编译工程

将生成的Makefile工程,添加到VsCode中,然后在终端下选择使用msys2_shell.cmd终端。然后输入make编译命令。如下图所示。

安装C/C++插件

在VsCode中打开插件商店,然后输入C/C++,点击安装,安装此插件。如下图所示

添加GDB调试

如上图

第一步:点击调试按钮。

第二步:点击白色下拉箭头,然后选择GDB/LLDB。

然后在launch.json中直接复制以下代码,有 // 备注的地方,需要修改相关参数。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "ARM Debug",
            "type": "cppdbg",
            "request": "launch",           
            "program": "${workspaceFolder}/build/${workspaceRootFolderName}.elf",
            "cwd": "${workspaceFolder}",
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:/Program Files (x86)/GNU Tools ARM Embedded/5.4 2016q3/bin/arm-none-eabi-gdb.exe", //交叉编译工具链地址
            "setupCommands": [
        {
            "text": "file C:/Users/Administrator/Desktop/666/666/build/666.elf", //工程使用绝对地址
        },
        {
            "text": "target remote localhost:3333",     //调试器端口号
        },
        //以下命令根据不同的单片机可能有变化,例如STM32F1就不行,需要更换命令,STM32F4可以。gdb是可以手动用命令行执行的,这部分就是需执行的命令。百度,谷歌可以找到的。
        {
            "text": "monitor reset",
        },
        {
            "text": "monitor halt",
        },
        {
            "text": "load" ,                          
        }
    ],
    "preLaunchTask": "build"
}
]
}

添加任务 

第一步:ctrl+shift+p打开命令面板。

第二步:搜索tasks。

第三步:点配置任务。

第四步:选择工程文件夹,选择Others

然后在打开的tasks.json中复制下图代码

//tasks.json
{
    "version": "2.0.0",
    "tasks": [
         {
            "label": "build",
            "type": "shell",
            "command": "echo compile exeover&make -j4"
        }
    ]
}

添加OcdStm32.cfg文件

在工程目录下(和Makefile文件同一目录)添加OcdStm32.cfg文件。然后配置以下参数。

interface stlink-v2 #调试器的名字,在openocd-0.10.0\scripts\interface里找
transport select swd #接口名,swd或jtag
source [find target/stm32f4x.cfg]  #芯片类型,在openocd-0.10.0\scripts\target里找

 至此,配置已经全部结束了。

 

编译下载调试

打开调试服务命令

在msys2_shell.cmd命令行下,输入 openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg。当出现 stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints 说明调试服务已经打开。如下图

 

开始调试

当打开调试服务以后,按F5键,就可以开始调试了。 当出现下图以后,再按F5键,代码就跑起来了。

 

运行效果展示 

 

 

至此,经过三天的配置学习,查阅了许多资料,关于Vsc配置ARM开发环境的工作已经全部完成了。

特别感谢Aakrin、SSulG两老哥提供的帮助。

参考资料:

https://blog.csdn.net/qq_41544116/article/details/89525709

https://www.jianshu.com/p/32efe218e18f

https://www.jianshu.com/p/b9d9008b1921

https://www.jianshu.com/p/4d88dc2e1826

https://blog.csdn.net/zhengyangliu123/article/details/79090601

 

后期,将继续介绍一些关于VSC开发STM32的小技巧。

本文用到的相关工具:

链接:https://pan.baidu.com/s/1IUOnAzGE8icNCRpXlXdd4Q 

提取码:oeqb 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VSCode搭建ARM(STM32开发环境) 的相关文章

  • 将 GCC 内联汇编与采用立即值的指令结合使用

    问题 我正在为 ARM Cortex M3 处理器开发定制操作系统 为了与我的内核交互 用户线程必须生成 SuperVisor Call SVC 指令 以前称为 SWI 用于软件中断 该指令在ARM ARM中的定义是 这意味着该指令需要即时
  • 在嵌入式设备上使用new或malloc引起的段错误[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • ARM 中只有两个操作数的 ADD 或 SUB

    我正在学习ARM汇编语言 我读过 ADD 应该有 3 个操作数 然而 我见过很多案例 现实中只有两种 例如 STR R1 SP 0x20 var 1C LDR R1 a lua 0x1DE4E6 MOVS R0 R4 haystack AD
  • 当端点和 PMA 地址均更改时,CubeMX 生成的 USB HID 设备发送错误数据

    我正在调试我正在创建的复合设备的问题 并在新生成的仅 CubeMX 代码中重新创建了该问题 以使其更容易解决 我添加了少量代码main 让我发送 USB HID 鼠标点击 并在按下蓝色按钮时使 LED 闪烁 uint8 t click re
  • 如何在 Android 设备上运行 VS Code [重复]

    这个问题在这里已经有答案了 我有 Galaxy Tab S6 它具有替代笔记本电脑的很酷的功能 例如连接鼠标和键盘 但不幸的是它运行 Android 操作系统 并且没有很多开发应用程序可用于 Android 所以我想是否有一个选项可以在至少
  • M1 MacBook Pro 上的 Android Studio 无法使用 ABI armeabi-v7a 模拟系统映像

    我的 M1 Macbook Pro 上的 Android Studio 可以很好地模拟 ABI arm64 v8a 的所有系统映像 API 24 29 30 31 但是 它无法使用 ABI armeabi v7a 运行所有映像 例如 API
  • 为什么 i2c_smbus 函数不可用? (I2C——嵌入式Linux)

    有很多参考使用i2c smbus 开发嵌入式 Linux 软件时在 I2C 总线上进行通信的函数 什么时候i2c smbus函数如i2c smbus read word data在软件项目中引用了 ARM8 处理器错误 例如 i2c smb
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • ARM 系统调用的接口是什么?它在 Linux 内核中的何处定义?

    我读过有关 Linux 中的系统调用的内容 并且到处都给出了有关 x86 架构的描述 0x80中断和SYSENTER 但我无法追踪 ARM 架构中系统调用的文件和进程 任何人都可以帮忙吗 我知道的几个相关文件是 arch arm kerne
  • 为什么 GCC 交叉编译不构建“crti.o”?

    在尝试为arm构建gcc 4 x x交叉编译器时 我陷入了缺失的困境crti o文件在 BUILD DIR gcc子目录 An strace在顶层Makefile表明编译后的xgcc正在调用交联器ld with crti o 作为一个论点
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • ARM NEON 矢量化失败

    我想在 ARM cortex a9 上启用 NEON 矢量化 但在编译时得到以下输出 未矢量化 不支持相关 stmt D 14140 82 D 14143 77 D 14141 81 这是我的循环 void my mul float32 t
  • A64 Neon SIMD - 256 位比较

    我想将两个小端 256 位值与 A64 Neon 指令 asm 进行有效比较 平等 为了平等 我已经有了解决方案 bool eq256 const UInt256 lhs const UInt256 rhs bool result 首先 将
  • ARM 汇编:从 STDIN 获取字符串

    我目前正在学习 CS 课程 我们刚刚开始在 Raspberry Pi 上使用 ARM Assembly 事实证明这相当困难 想知道是否有人可以提供帮助 我当前的任务是从 stdin 获取一个字符串 使用 scanf 并计算其中的字符数 然后
  • LDR指令如何将常量加载到寄存器中?

    我刚刚读了一本ARM指令书 看到一条指令我无法解释 It says LDR将 32 位常量加载到r0登记 LDR r0 pc const number 8 pc const number DCD 0xff00ffff 我不明白什么 pc c
  • 将 C 函数与 ARM 汇编结合使用

    我见过人们在代码中使用 C 库中的 printf 的示例 如下所示 data balign 4 hello asciz Hello n text global main func main main ldr r0 hello msg bl
  • 已编译 LKM 的互换性

    是否可以使用可加载内核模块 编译为3 0 8 mod unload ARMv5 我自制的内核 在具有版本的内核中3 0 31 gd5a18e0 SMP preempt mod unload ARMv7 安卓股票内核 该模块本身几乎不包含任何
  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • Linux 内核使用的设备树文件 (dtb) 可视化工具? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可以图形化表示Linux内核中使用的硬件设备树的工具 我正在尝试了解特定 Arm 芯片组
  • 什么是 .axf 文件?

    我是arm架构的新手 我从事嵌入式软件工作 并试图了解我的项目二进制文件的调试文件夹中存在的 axf文件 发现它是链接器在构建过程中生成的arm可执行格式文件 用于调试崩溃 所以很明显它包含了一些调试信息 但不清楚具体是什么信息 而且deb

随机推荐

  • EnableAutoConfiguration Attributes should be specified via @SpringBootApplic

    在排除数据源加载时 发现这个注解 EnableAutoConfiguration exclude DataSourceAutoConfiguration class 会飘红 这是因为在 SpringBootApplication中已经有 E
  • Qt开发入门教程-创建项目

    入门Qt开发教程 版本 QT 5 15 2 创建项目 1 工程类型选择 Qt Widgets Application 传统的c 不适合移动端开发 QtWidgets 使用QPainter依次为每个界面元素渲染 不断地重复渲染状态 每次打开都
  • 面经-Bosch博世无锡&UL美华

    工作总算有所眉目了 太多的总结暂时还没有太多心情来理清楚 先来两个面经 给可能现在或以后需要的人们1 Bosch 博世无锡柴油系统博世公司 业内的人都知道 汽车部件的巨无霸 最近几年才来到中国 虽然比起德尔福有些稍晚 但发展前景值得期待 无
  • R语言读取Excel的神器——openxlsx

    作为非程序猿的各位同志们 可能最擅长的数据整理软件或者统计软件就是 嗯 没有错 它就是集万千宠爱于一身的E X O 咳咳咳 好了 隆重推出我们的主角 Excel 事实上 Excel是个super强大的软件 基本上用它已经能完成大量的统计分析
  • unity3d大型互动照片墙

    1 本次应客户需求 制作一个大型照片墙互动 输出分辨率为9600 4320 注 unity3d官方推荐最大分辨率为8192 3686 4 经过现场长达24小时暴力测试中途未发生问题 姑且判定可以达到正常标准 废话不多说 先上效果 unity
  • 软件工程实验:银行储蓄系统

  • Eclipse 导入Maven项目,提示Project .. already exists Add a version or custom suffix using “Name template“

    今天从svn 上检出项目至本地的Eclipse workspace 工作空间 提示如下截图错误 Project already exists Add a version or custom suffix using Name templat
  • 解决方案不显示分类的

    解决方案无法显示头文件 源文件等分类 现象 正常显示 错误显示 原因 对应解决方案的filters文件里有不匹配的标签
  • 题目描述001

    题目描述001 入职后 导师会请你吃饭 你选择了火锅 火锅里会在不同时间下很多菜 不同食材要煮不同的时间 才能变得刚好合适 你希望吃到最多的刚好合适的菜 但你的手速不够快 用m代表手速 每次下手捞菜后至少要过m庙才能在捞 每次只能捞一个 那
  • 基于TensorFlow2实现的宠物识别系统(爬虫、模型训练和调优、模型部署)

    目录 开发环境 0 项目准备 1 数据集准备 2 数据预处理 3 构建模型 4 模型训练及验证 5 模型部署 6 项目地址 开发环境 作者 嘟粥yyds 时间 2023年8月25日 集成开发工具 PyCharm Professional 2
  • 关于vue.config.js中配置前端代理

    写在前边 注意开发环境的本地代理或者测试环境的代理 在部署到正式上时 一定要换成线上的IP地址 不然 数据拿不到哦 代理配置 esay mock新地址 模拟接口地址 就以第一个进行说明怎么配置和使用了 只说代理配置部分 其它不再说明 新建项
  • Response响应方法详解

    Response 响应 服务器把请求的处理结果告知客户端 在B S架构中 响应就是把结果带回浏览器 响应对象 在项目中用于发送响应的对象 常用状态码 状态码 说明 200 执行成功 302 它和307一样 都是用于重定向的状态码 只是307
  • M3U8文件简介及在线播放器

    m3u8文件格式 M3U8是Unicode版本的M3U 用UTF 8编码 M3U 和 M3U8 文件都是苹果公司使用的 HTTP Live Streaming HLS 协议格式的基础 这种协议格式可以在 iPhone 和 Macbook 等
  • QSpinBox修改样式 去掉上下键

    1 找到QSpinBox控件 右键 改变样式表 将以下代码粘贴进去 QSpinBox border 1px solid 242424 QSpinBox up button QSpinBox down button width 0px 修改前
  • Dev-C++之开启装逼效果

    Dev C 是个不错的C IDE 在10年前 它是很不错 在现在 它是个以界面丑陋和调试像吃粑粑这两点著称 如下图 实在是丑到离谱 丑到无法忍受 可是没办法呀 人家CCF规定比赛用这个 你个小蒟蒻吵什么 我现在就来讲讲怎么把你的Dev C
  • 【Android -- 面试】Android 知识点(四大组件)

    目录 文章目录 目录 Activity Fragment Service Broadcast Receiver ContentProvider Activity 1 说下 Activity 的生命周期 参考回答 在 Activity 的生命
  • Syntax Error: Error: PostCSS received undefined instead of CSS string

    Syntax Error Error PostCSS received undefined instead of CSS string Module Error from node modules sass loader dist cjs
  • 异步Buck和同步Buck的特点

    1 介绍 随着时代的发展 工业 车载 通信 消费类等产品都提出了小型化 智能化的需求 相应的 对于这些系统中的电源模块提出了小型化的要求 目前 市场上依然存在很多异步Buck电源管理芯片使用的场景 针对这些应用 采用同步Buck电源管理芯片
  • 今日热榜前 5 的 GitHub 项目

    今日开源热榜 Top5 项目目录 1 纪念左耳朵耗子 2 你的第二大脑 3 大模型开发人员需要记住的数 4 短链接管理工具 5 StableStudio 01 纪念左耳朵耗子 MegaEase 创始人兼 CEO 陈皓 网名 左耳朵耗子 于上
  • VSCode搭建ARM(STM32开发环境)

    目录 需要用到的工具 软件安装 下载安装 Visual Studio Code 下载安装 STM32Cubemx 下载安装 ARM GCC交叉编译工具链 下载安装 Msys2 下载安装 OpenOCD 下载安装 Make 开发环境配置 ms