VSCode下STM32开发环境搭建

VSCode下STM32开发环境搭建

需要的软件
make-3.81
https://udomain.dl.sourceforge.net/project/gnuwin32/make/3.81/make-3.81.exe

arm-none-eabi-gcc
https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads https://links.jianshu.com/go?to=https%3A%2F%2Fdeveloper.arm.com%2Fopen- source%2Fgnu-toolchain%2Fgnu-rm%2Fdownloads

STM32CubeMX
https://www.st.com/zh/development-tools/stm32cubemx.html

OpenOCD
https://gnutoolchains.com/arm-eabi/openocd/
https://links.jianshu.com/go?to=https%3A%2F%2Fgnutoolchains.com%2Farm- eabi%2Fopenocd%2F

可下载安装版文件自动配置环境变量,或将压缩包解压后,一般都将解压出目录下的“bin”文件夹添加到PATH环境变量即可

检测环境变量配置是否可用,在命令行里运行:(有信息输出则配置成功)
gcc -v
arm-none-eabi-gcc -v
make -v

必须的插件
C/C++ for Visual Studio Code
C/C++ Extension Pack
C/C++ Themes
CMake
Cortex-Debug
debug-tracker-vscode
MemoryView
Peripheral Viewer
RTOS Views

STM32CubeMx自动生成makefile文件,无需cmake再生成,若添加c文件h文件可修改makefile即可,在终端中运行make进行编译:

OpenOCD可用如下命令:
#第一个f参数指定调试器,第二个f参数指定芯片,都到下载得OpenOCD安装目录去找对应文件 #注意xxxx.hex与自己的项目生成的build目录下hex文件对应
openocd -f ./OpenOCD/share/openocd/scripts/interface/cmsis-dap.cfg -f./OpenOCD/share/openocd/scripts/target/stm32f1x.cfg -c “program build/STM32F103CB.hex verify reset exit”

配置在线调试
注意项目工程不能有中文目录,否则运行 openocd 莫名失败,运行调试需要在编译、下载完成后
菜单栏中选择运行和调试,点击 “创建 launch.json 文件”,选择 “Cortex Debug”
再添加具体的OpenOCD调试(添加配置)

需要修改三个参数信息:

  1. build目录下生成的 xxx.elf 文件名要匹配
  2. 调试器配置文件(在OpenOCD解压缩后的目录下)
  3. 芯片型号配置文件(在OpenOCD解压缩后的目录下)
  4. SVD 文件路径(仿真寄存器描述)获取方式:在Keil.STM32Fxxx_DFP.x.x.x.pack 文件解压缩后的目录 “CMSIS/SVD”

参考配置信息如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
“version”: “0.2.0”,
“configurations”: [
{
“cwd”: “${workspaceRoot}”,
“executable”: “./build/STM32F103CB.elf”,
“name”: “Debug with OpenOCD”,
“request”: “launch”,
“type”: “cortex-debug”,
“servertype”: “openocd”,
“configFiles”: [
“./OpenOCD/share/openocd/scripts/interface/cmsis-dap.cfg”,
“./OpenOCD/share/openocd/scripts/target/stm32f1x.cfg”
],
“searchDir”: [],
“runToEntryPoint”: “main”,
“showDevDebugOutput”: “none”,
“svdFile”: “./SVD/STM32F103xx.svd”
}
]
}

点击运行和调试菜单栏,选择调试 “Debug with OpenOCD” 即可在线调试:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RH850F1KM-S4-100Pin_ R7F7016453AFP MCAL Gpt 配置

1、Gpt组件包含的子配置项 GptDriverConfigurationGptDemEventParameterRefsGptConfigurationOfOptApiServicesGptChannelConfigSet2、GptDriverConfiguration 2.1、GptAlreadyInitDetCheck 该参数启用/禁用Gpt_Init API中的GPT_E_ALREADY_INITIALIZED Det检查。 true:开启Gpt_…

Django5+React18前后端分离开发实战13 使用React创建前端项目

先将nodejs的版本切换到18: 接着,创建项目: npx create-react-app frontend接着,使用webstorm打开这个刚创建的项目: 添加一个npm run start的配置: 通过start启动服务: 浏览器访问&…

机器学习之决策树算法

使用决策树训练红酒数据集 完整代码: import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn import tree, datasets from sklearn.model_selection import train_test_split# 准备数据,这里…

【云原生】Kubernetes 核心概念

什么是 Kubernetes Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是“舵手”或者“飞行员”。在一些常见的资料中也会看到“ks”这个词,也就是“k8s”,它…

科大讯飞笔试题---删除数字

1、 题目描述: 给定一个长度为 n 的数组,数组元素为 a1, a2, . . , an,每次能删除任意 a 的任意一位,求将所有数字变成 0 最少需要几步。例如 103 若删除第 1 位则变成 3; 若删除第 2 位则变成13; 若删除第 3 位则变成 10。 输入…

AWS容器之Amazon ECS

Amazon Elastic Container Service(Amazon ECS)是亚马逊提供的一种完全托管的容器编排服务,用于在云中运行、扩展和管理Docker容器化的应用程序。可以理解为Docker在云中对应的服务就是ECS。

c语言如何将一个文本内容复制到另外一个文本里

c语言如果要把一个文本文件的文件复制到另外一个文件里&#xff0c;代码如下 #include<stdio.h>int main() {FILE *fp1,*fp2;char a;fp1fopen("D://cyy//aaa.txt","r");fp2fopen("ccc.cpu","w");while(a!EOF){afgetc(fp1);fput…

linux:切分大文件

文章目录 1. 前言2. 用法3. 例子 1. 前言 如果传输、存储过程中出现大文件&#xff0c;希望切分成小文件。在 Linux 中&#xff0c;可以使用多种工具来切分大文件&#xff0c;最常用的是 split 命令。split 命令可以将一个大文件按照指定大小切分成多个小文件。 2. 用法 spl…

ImageMagick入门教程(免费图片格式转换)

起因是因为我不会图片转换,且发现很多图片转换都要钱,尤其是pdf转jpg,于是我就是找到了这个包,自己处理.当然包时不会导的,所以只能用它提供的命令了. 准备工作 下载imagemagick:ImageMagick – Download 我下载的这个,傻瓜式安装就行,把所有勾勾都勾上,然后要记住安装路径,然…

一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)

目录 ​编辑 引言 一、RDMA的基本原理 二、RDMA的主要特点 三、RDMA的编程接口 四、RDMA的代码演示 服务器端代码&#xff1a; 客户端代码&#xff1a; 五、总结 引言 RDMA&#xff0c;全称Remote Direct Memory Access&#xff0c;即远程直接内存访问&#xff0c;是…

客户机/服务器交互模式

目录 概述 网络应用软件的地位和功能 C/S 模式的特性 容易混淆的术语 C/S 模式的通信过程 网络协议与 C/S 模式的关系 错综复杂的 C/S 交互 总结 概述 客户机/服务器&#xff08;Client/Server&#xff0c;简称 C/S&#xff09;交互模式是一种常见的网络应用软件架构&a…

【ChatGPT】 Microsoft Edge 浏览器扩展使用 GPT

【ChatGPT】添加 Microsoft Edge 浏览器插件免费使用 GPT 文章目录 准备工作添加扩展注意事项 使用 ChatGPT 可以更高效的搜索到想要的内容&#xff0c;有效节约在搜索引擎中排查正确信息的时间。 准备工作 准备一台可上网的电脑电脑上安装有 Windows 自带的 Microsoft Edge …

二.常见算法--贪心算法

&#xff08;1&#xff09;单源点最短路径问题 问题描述&#xff1a; 给定一个图&#xff0c;任取其中一个节点为固定的起点&#xff0c;求从起点到任意节点的最短路径距离。 例如&#xff1a; 思路与关键点&#xff1a; 以下代码中涉及到宏INT_MAX,存在于<limits.h>中…

python+selenium - UI自动框架之封装查找元素

单一的元素定位方法不能满足所有元素的定位&#xff0c;可以根据每个元素的特点来找到合适的方法&#xff0c;可以参考下图的方法&#xff1a; elementFind.py from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_con…

Vue filter实战详解

在 Vue.js 中&#xff0c;filter 是一种用于在模板中对数据进行格式化的功能。它可以用来对数据进行处理、过滤或格式化&#xff0c;然后在模板中直接使用。 filter 是一种全局的 Vue 实例方法&#xff0c;可以在任何组件的模板中使用。 1.定义全局过滤器&#xff1a; 在 Vue…

InnoDB如何解决幻读的

InnoDB 使用一种称为 Next-Key Locking 的锁机制来解决幻读问题。幻读发生在一个事务在读取某个范围内的记录时&#xff0c;另一个事务在这个范围内插入新的记录。InnoDB 的 Next-Key Locking 结合了行锁&#xff08;Row Lock&#xff09;和间隙锁&#xff08;Gap Lock&#xf…

MavLinK协议

由于在公司需要使用这个&#xff0c;我就写一个文章用于入门级别 简单介绍 MAVSDK是PX4开源团队贡献的基于mavlink通信协议的用于无人机应用开发的SDK&#xff0c;其可以部署在Windows、Linux、Android等多种平台&#xff0c;并且支持多种语言如c/c、python、Java等。 在官网…

GIS读研与求职准备:GNSS专业研0

本文介绍GIS方向研究生入学初期&#xff0c;为将来转码、从事开发类工作所作求职准备的规划路径、方向选择等方面的建议。 最近&#xff0c;有很多师弟师妹询问关于研究生方向选择、求职准备、就业方向选择等方面的问题。首先非常感谢大家的盲目信任&#xff08;开个玩笑&#…

基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本

基于 debian 12 利用 kubeadm 部署 k8s 1.29 版本 预先准备 准备三台debian 12的虚拟机&#xff0c;配置如下&#xff1a; HostnameIP配置k8s-master1192.168.31.604vCPU、8GiB 内存、50GiB 硬盘k8s-worker1192.168.31.614vCPU、8GiB 内存、50GiB 硬盘k8s-worker2192.168.31.6…

python从0开始学习(九)

前言 上一篇文章我们介绍了python中的序列类型和元组类型&#xff0c;本篇文章将接着往下将。 1、字典类型 字典类型是根据一个信息查找另一个信息的方式所构成的“键值对”&#xff0c;它表示索引用的键和对应的值构成的成对关系。它是一个可变数据类型&#xff0c;也就是说它…