当前位置: 首页 > news >正文

ubuntu下vscode+STM32CubeMX+openocd+stlinkv2搭建STM32开发调试下载环境

1、换源

清华源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiversedeb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

复制上边内容进行修改

sudo vim /etc/apt/sources.list

换源后,更新当前的源

sudo apt update
sudo apt upgrade

2、下载相关软件

在这里插入图片描述
下载deb版本

sudo dpki -i 下载的VScode deb文件

安装插件

在这里插入图片描述

3、STM32CubeMX安装

STM32CubeMX
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
给他增加图标到菜单

vim /usr/share/applications/stm32CubeMX.desktop
[Desktop Entry]
Type=Application
Name=STM32CubeMX
Comment=STM32 Development Environment
Encoding=UTF-8
StartupNotify=true
Terminal=false
Categories=Development;java;c;c++;
icon= ##########图标的路径,自己找一个就行
Exec= #########可执行文件的路径

3.1 新建一个点灯的小程序

一定一定记得这个,要不后期调试和下载报错
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4 arm-none-eabi交叉编译工具安装

arm-none-eabi
在这里插入图片描述
解压后将bin文件夹加入PATH

vim ~/.bashrc
加入PATH=你的路径:$PATH

在这里插入图片描述

source ~/.bashrc

验证是否成功

arm-none-eabi-gcc --version

在这里插入图片描述

arm-none-eabi-gdb --version

在这里插入图片描述
如果这里你的GDB有问题,请一定要解决。我碰到了缺少 error while loading shared libraries: libncurses.so.5,解决方法参考

5、安装gdbserver

wget https://ftp.gnu.org/gnu/gdb/gdb-14.2.tar.xztar -xvf gdb-14.2.tar.xz./configuremakesudo make install

6、安装openocd

sudo apt-get install build-essential pkg-config autoconf automake libtool libusb-dev libusb-1.0-0-dev libhidapi-devsudo apt-get install libtool libsysfs-devgit clone git://git.code.sf.net/p/openocd/code openocdcd openocd./bootstrap./configure makesudo make install

如果这里bootstrap阶段,告诉你子模块出错,碰到EOF提前结束,说明子模块下载失败,可以按照如下修改

vim .gitmodules
修改其子模块地址,可以去gitee上找镜像拉取,我这里jimtcl报错

在这里插入图片描述

6.1验证是否成功

openocd --version

在这里插入图片描述

7、STLink安装

依赖安装

sudo apt-get install libusb-1.0sudo apt-get install cmakesudo apt-get install libgtk-3-dev
git clone https://github.com/stlink-org/stlinkcd stlinkcmake .makecd binsudo cp st-* /usr/local/bincd ../libsudo cp *.so* /lib32sudo cp config/udev/rules.d/49-stlinkv* /etc/udev/rules.d/

验证是否成功

lsusb

在这里插入图片描述

7.1

安装界面化烧录工具
ubuntu deb下载地址

sudo dpkg -i 你的下载文件.deb

在这里插入图片描述

8、进入Vscode进行点灯

在main.c的while(1)中加入

HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, 1);

点击vscode的调试,添加配置,选择
在这里插入图片描述

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot}","executable": "./build/你的项目生成的文件.elf","name": "Debug with OpenOCD","request": "launch","type": "cortex-debug","servertype": "openocd","configFiles": ["/usr/share/openocd/scripts/interface/stlink-v2-1.cfg","/usr/share/openocd/scripts/target/stm32f1x.cfg"],"searchDir": [],"runToEntryPoint": "main","showDevDebugOutput": "none"}]
}

需要修改的是executable,变成你的elf文件
configFiles,变成你的stlink-v2-1.cfg(STLink驱动),stm32f1x.cfg(和你开发板型号有关)文件的地址,具体的可以查看

/usr/share/openocd/scripts/interface/stlink-v2-1.cfg
/usr/share/openocd/scripts/target/stm32f1x.cfg

进入终端,输入

make

即可编译。当然你也可以配置tasks.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","problemMatcher": [],"group": {"kind": "build","isDefault": true}},]
}

9、下载烧录

  1. 命令行烧录
st-flash write 你生成的hex文件 0x8000000
  1. UI界面烧录
    在这里插入图片描述

  2. 配置tasks.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","problemMatcher": [],"group": {"kind": "build","isDefault": true}},{"label": "download","type": "shell","command": "st-flash write 你生成的hex文件 0x8000000"}]
}

10、调试

在这里插入图片描述
如果你卡在 IMPORTANT: Set “showDevDebugOutput”: “raw” in “launch.json” to see verbose GDB transactions here. Very helpful to debug issues or report problems
的话,很大可能是你的arm-none-eabi-gdb出错了,可以尝试看看

arm-none-eabi-gdb -v

一切路径不能有中文,有中文很容易报错.OK,差不多就这样,折腾了两个晚上,记录一下,坑比较多,很少有写Ubuntu在STM32开发的

相关文章:

ubuntu下vscode+STM32CubeMX+openocd+stlinkv2搭建STM32开发调试下载环境

1、换源 清华源 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restr…...

【嵌入式高级C语言】9:万能型链表懒人手册

文章目录 序言单向不循环链表拼图框架搭建 - Necessary功能拼图块1 创建链表头信息结构体 - Necessary2 链表头部插入 - Optional3 链表的遍历 - Optional4 链表的销毁 - Necessary5 链表头信息结构体销毁 - Necessary6 获取链表中节点的个数 - Optional7 链表尾部插入 - Optio…...

如何快速分析OB集群日志,敏捷诊断工具obdiag分析能力实践——《OceanBase诊断系列》之四

1. 前言 obdiag是OceanBase的敏捷诊断工具。1.2版本中,obdiag支持快速收集诊断信息,但仅有收集能力是不够的,还需要有分析能力。因此在obdiag的1.3.0版本中,我们加入了OB集群的日志分析功能。用户可以一键进行集群的OB日志的分析…...

7.1.3 Selenium的用法2

目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe,也就是子 Frame,相当于页面的子页面,它的结构和外部网页的结构完全…...

微信小程序(五十四)腾讯位置服务示范(2024/3/8更新)

教程如下: 上一篇 1.先在官网注册一下账号(该绑定的都绑定一下) 腾讯位置服务官网 2.进入控制台 3.创建应用 3. 额度分配 4.下载微信小程序SDK 微信小程序SDK下载渠道 5.解压将俩js文件放在项目合适的地方 6.加入安全域名or设置不验证合…...

Selenium库快速查找网页元素及执行浏览器模拟操作

Selenium 是一个自动化测试工具,主要用于模拟用户在网页上的行为,进行自动化测试。它支持多种浏览器,并且可以在多种操作系统上运行。以下是 Selenium 库的一些主要特点和用途: 网页自动化测试: Selenium 可以模拟用户…...

2024年(第十届)全国大学生统计建模大赛选题参考(一)

本届大赛主题为“大数据与人工智能时代的统计研究”,参赛队围绕主题自拟题目撰写论文。 1. 大数据分析与处理 研究思路 数据收集:首先确定数据来源,例如社交媒体、企业数据库或公开数据集,并使用爬虫技术或API收集数据。数据预…...

EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测

EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测 目录 EI级 | Matlab实现GCN基于图卷积神经网络的数据多特征分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.GCN基于图卷积神经网络的数据分类预测 Matlab2023 2.多输入单输出的分类预测&#xf…...

贪心算法介绍

贪心算法是一种在求解问题时总是做出在当前看来是最好的选择的算法。它不从整体最优上加以考虑,所做出的选择只是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性…...

前端常用数据结构

前端常用数据结构 前端常用数据结构数据结构数组栈队列链表单向链表双向链表树前端常用数据结构 什么是数据结构常用的数据结构 JavaScript 如何实现这些数据结构实际场景数据结构 所谓数据结构,是在计算机中组织、管理和存储数据的一种方式。 🙋:你知道哪些数据结构? …...

java设计模式之——单例模式

一:什么是单例模式? 构造函数private之后,还需要提供一个方法,要保证只能初始化一个单例对象,并且需要考虑线程安全的问题。 二:单例模式多种写法? 具体到写法上,主要有5种&#…...

深入理解计算机系统学习笔记

1.1异常处理 处理器中很多事情都会导致异常控制流,此时,程序执行的正常流程被破坏掉。异常可以由程序执行从内部产生,也可以由某个外部信号从外部产 生。 我们的指令集体系结构包括三种不同的内部产生的异常: l)halt指令&#…...

Linux-进程信号

目录 概念信号产生信号注册信号注销信号处理实例 信号的基本应用 概念 进程信号: 概念:信号就是软件中断。信号就是用于向进程通知某个事件的产生,打断进程当前操作,去处理这个事件。 linux中信号的种类:使用kill -l命…...

Linux服务器安装jdk

背景: 安装JDK是我们java程序在服务器运行的必要条件,下面描述几个简单的命令就可再服务器上成功安装jdk 命令总览: yum update -y yum list | grep jdk yum -y install java-1.8.0-openjdk java -version 1.查看可安装版本 yum list | grep jdk 2.如果查不到可先进行 yum upd…...

基于 HBase Phoenix 构建实时数仓(2)—— HBase 完全分布式安装

目录 一、开启 HDFS 机柜感知 1. 增加 core-site.xml 配置项 2. 创建机柜感知脚本 3. 创建机柜配置信息文件 4. 分发相关文件到其它节点 5. 重启 HDFS 使机柜感知生效 二、主机规划 三、安装配置 HBase 完全分布式集群 1. 在所有节点上配置环境变量 2. 解压、配置环境…...

equals()与==的区别

在Java中 可以对基本类型进行比较,比较的是值是否相等 也可以对引用类型(对象)进行比较,比较的是引用变量所指向的空间地址 public static void main(String[] args) {int a 10;int b 10;System.out.println(ab);//true// 基本类型比较,比较值是否相等String s1 new Stri…...

什么是数据采集与监视控制系统(SCADA)?

SCADA数据采集是一种用于监控和控制工业过程的系统。它可以实时从现场设备获得数据并将其传输到中央计算机,以便进行监控和控制。SCADA数据采集系统通常使用传感器、仪表和控制器收集各种类型的数据,例如温度、压力、流量等,然后将这些数据汇…...

基于SpringBoot+Vue+ElementUI+Mybatis前后端分离管理系统超详细教程(五)——多条件搜索并分页展示

前后端数据交互 书接上文,我们上节课通过前后端数据交互实现了分页查询和单条件搜索分页查询的功能,最后留了个小尾巴,就是把其他两个搜索条件(email,address)也加进来,实现多条件搜索并分页展示。这节课我…...

鸿蒙实战开发Camera组件:【相机】

相机组件支持相机业务的开发,开发者可以通过已开放的接口实现相机硬件的访问、操作和新功能开发,最常见的操作如:预览、拍照和录像等。 基本概念 拍照 此功能用于拍摄采集照片。 预览 此功能用于在开启相机后,在缓冲区内重复采集…...

政安晨:【深度学习处理实践】(三)—— 处理时间序列的数据准备

在深度学习中,对时间序列的处理主要涉及到以下几个方面: 序列建模:深度学习可以用于对时间序列进行建模。常用的模型包括循环神经网络(Recurrent Neural Networks, RNN)和长短期记忆网络(Long Short-Term M…...

避坑指南:C++正则表达式里的那些‘坑’(从语法陷阱到性能优化)

C正则表达式深度避坑手册:从语法陷阱到性能调优实战 正则表达式就像程序员手中的瑞士军刀——功能强大但暗藏玄机。我在处理日志分析系统时曾遇到一个诡异现象:相同的正则模式在Python中运行如飞,移植到C后性能却断崖式下跌。这促使我深入研究…...

信号处理课设灵感:从Borwein积分到‘音乐喷泉’和‘膜拜大熊猫’的创意实现

从Borwein积分到创意电子项目:信号处理课设实战指南 当sinc函数的积分结果突然从π变成π-10⁻⁰时,数学系的学生可能会陷入证明困境,而电子工程专业的学生看到的却是LED灯带的控制灵感。这种理论到实践的思维跳跃,正是现代工程教…...

如何快速上手Riak:10分钟构建你的第一个分布式应用

如何快速上手Riak:10分钟构建你的第一个分布式应用 【免费下载链接】riak Riak is a decentralized datastore from Basho Technologies. 项目地址: https://gitcode.com/gh_mirrors/ri/riak Riak是一款来自Basho Technologies的分布式数据存储系统&#xff…...

告别投稿“内耗”:百考通AI如何将SCI与核心论文的写作门槛“拉平”

如果你曾将心血之作投向期刊,却只收到一封封格式化的退稿信;如果你的邮箱里堆满了“未通过初审”、“不符合本刊要求”的邮件,或许该停下来想想:问题真的全在研究内容本身吗?事实上,许多优质的科研工作&…...

如何参与DictionaryByGPT4开源AI单词学习项目:完整贡献指南

如何参与DictionaryByGPT4开源AI单词学习项目:完整贡献指南 【免费下载链接】DictionaryByGPT4 一本 GPT4 生成的单词书📚,超过 8000 个单词分析,涵盖了词义、例句、词根词缀、变形、文化背景、记忆技巧和小故事 项目地址: http…...

Java 25虚拟线程上线即崩?3个被90%团队忽略的JVM调优临界点及紧急修复指南

第一章:Java 25虚拟线程上线即崩?真相溯源与架构定位Java 25正式引入的虚拟线程(Virtual Threads)并非“上线即崩”,而是因运行时环境错配、监控工具误判及传统阻塞式代码未适配引发的表象性崩溃。根本原因在于JVM在Pr…...

DeEAR语音情感识别效果集:新闻播报/脱口秀/电话录音三类语料的韵律分析对比

DeEAR语音情感识别效果集:新闻播报/脱口秀/电话录音三类语料的韵律分析对比 1. 引言:语音情感识别的价值与挑战 语音是人类最自然的交流方式之一,而情感则是语音中蕴含的重要信息。传统的人工情感分析需要专业人员反复聆听录音,…...

把 ABAP 变体真正用活,动态保存、加载与删除的一套做法

报表开发里,最容易被低估的一层能力 做 ABAP 报表开发时,我们几乎天天都在和选择屏幕打交道。航司、公司代码、过账日期、工厂、销售组织,这些条件输一次不难,难的是天天输、月月输、每个批作业都输一遍。SAP 里所谓的变体,也就是 variant,本质上就是把某一组选择条件保…...

AI周报 | 算力涨价近半、融资965亿、AI开始像真人员工

日期:2026年4月13日—4月19日 本周最厉害的三件事: 1️⃣ 超级聪明的AI程序一个接一个发布,像比赛一样。 2️⃣ AI已经学会“自己动脑子、自己干活、自己记经验”了。 3️⃣ 全世界对“AI算力”(也就是AI的“脑力工厂”&#xff0…...

HTML函数开发用防眩光屏幕更舒适吗_显示面板类型选择【指南】

防眩光(雾面)屏能显著降低前端开发者视觉疲劳——通过散射环境光消除反光,提升长时间编码可读性,虽轻微降低对比度与色彩饱和度,但对写代码无害且更护眼。HTML 函数开发本身和屏幕防眩光无关,但长时间写代码…...