【STM32开发笔记】搭建VSCode+PyOCD的STM32开发环境

news2024/11/15 8:22:12

【STM32开发笔记】搭建VSCode+PyOCD的STM32开发环境

    • 一、安装软件
      • 1.1 安装STM32CubeMX
      • 1.2 安装VSCode
      • 1.3 安装Arm GNU Toolchain
      • 1.4 安装Make for Windows
      • 1.5 安装Python
      • 1.6 安装PyOCD
    • 二、安装插件
      • 2.1 VSCode插件
      • 2.2 PyOCD支持包
    • 三、创建项目
      • 3.1 创建STM32CubeMX项目
      • 3.2 查阅原理图
      • 3.3 修改引脚功能
      • 3.4 生成Makefile项目
    • 四、编辑/编译/下载/调试
      • 4.1 修改代码
      • 4.2 编译代码
      • 4.3 下载固件
      • 4.4 调试设置
      • 4.5 断点调试
    • 五、参考链接

本文将介绍如何在Windows系统上搭建基于VSCode和PyOCD的开发环境,具体包括如下软件:

  • STM32CubeMX,用于修改配置,以及生成代码;
  • VSCode,用于编辑源代码文件;
  • Arm GNU Toolchain,用于源代码编译为目标文件;
  • Make for Windows,用于根据Makefile调用编译命令;
  • Python,PyOCD依赖Python,需要先安装;
  • PyOCD,用于固件下载,以及gdb调试;

标题为了简短只写了VSCode和PyOCD,实际上需要使用以上六个软件。

本文部分章节以STM32U083RC为例,由于PyOCD可以支持的MCU类型非常多;因此该方法不仅仅只适用于这一款MCU,而是适用于所有STM32的MCU(凡是PyOCD命令能够找到支持包的CMU均可以支持)。由于VSCode和PyOCD等软件都是跨平台的,因此本文介绍的方法同样适用于Linux系统和MacOS系统,仅需少量步骤调整。

一、安装软件

接下来介绍如何安装上述六个软件,如果部分软件你已经安装了,则可以跳过相关介绍。

1.1 安装STM32CubeMX

下载页面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html

ST官网需要注册之后,才能下载。

1.2 安装VSCode

下载页面: https://code.visualstudio.com/Download

VSCode可以直接下载,不需要注册。

1.3 安装Arm GNU Toolchain

Arm GNU Toolchain 10.3-2021.10版本下载页面:https://developer.arm.com/downloads/-/gnu-rm

最新的版(13.3)下载页面: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads

10.3 或者 13.3 都可以,实测发现10.3生成的代码体积稍微小一点点,都可以运行。

下载exe或者zip解压都可以,需要注意的是:

  • exe安装过程中需要勾选添加到PATH环境变量;
  • zip解压后,需要手动将arm-none-eabi-gcc.exe所在目录添加到PATH环境变量;

安装完成后,打开新的cmd窗口,执行如下命令:

arm-none-eabi-gcc --version

命令输出类似如下版本信息,即表示PATH环境变量配置成功:

Untitled

1.4 安装Make for Windows

Make for Windows下载页面:https://gnuwin32.sourceforge.net/packages/make.htm

安装完成后,需要手动将make.exe所在目录,添加到PATH环境变量。

类似的,添加成功后,新打开cmd窗口,可以执行如下命令:

make --version

命令输出类似如下版本信息,即表示PATH环境变量配置成功:

Untitled

1.5 安装Python

Python下载页面: https://www.python.org/downloads/

安装过程中记得勾选:Add Python to environment variables

Untitled

安装完成后,可以执行如下命令测试是否正常加入环境变量:

Untitled

成功输出版本信息,即表示PATH环境变量配置成功。

设置pip镜像站:

pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple
pip config set global.trusted-host mirrors.ustc.edu.cn
pip config set global.timeout 120

1.6 安装PyOCD

打开cmd窗口,执行如下命令,安装PyOCD:

pip install pyocd

安装过程输出如下:

Untitled

安装完成后,执行pyocd命令:

Untitled

输出了PyOCD具体使用方法,即表示安装成功。

二、安装插件

2.1 VSCode插件

VSCode需要安装的插件:

  • C/C++ Extension Pack,用于支持C/C++语法高亮、代码提示;
  • Cortex-Debug,用于支持Arm Cortex-M内核MCU的调试;
  • Makefile Tools,用于支持Makefile语法高亮、执行构建;

在VSCode的插件栏搜索即可安装,没啥难度。

2.2 PyOCD支持包

PyOCD需要安装STM32U0xx支持包,才能进行STM32U083调试,具体过程如下。

首先,搜索STM32U08RC:

Untitled

接着,安装STM32U0xx支持包:

Untitled

安装成功后,将开发板通过USB线与PC连接,运行pyocd list命令:

Untitled

如果没有问题,则可以显示设备。

三、创建项目

3.1 创建STM32CubeMX项目

  1. 打开STM32CubeMX之后,通过菜单File→New Project开始创建项目,在弹出的界面中:

Untitled

  • 在Commercial Part Number栏中输入STM32U083RC;
  • 在MCUs/MPUs List下方选中STM32U083RCTx;
  • 点击右上角Start Project按钮;
  1. 默认使用的是内部16MHz HSI作为时钟源,可以不用修改:

Untitled

3.2 查阅原理图

NUCLEO-U083RC开发板原理图下载链接:https://www.st.com.cn/resource/en/schematic_pack/mb1932-u083rc-b01-schematic.pdf

查阅开发板原理图文件,找到LED的部分:

Untitled

可以看到,PA5可以控制LED的亮灭。

3.3 修改引脚功能

  1. 在Pinout View中找到PA5,并将其功能设置为GPIO_Output,如下图所示:

Untitled

  1. 按Ctrl+S保存,选中合适的文件夹路径进行保存,例如我选中的E:\DIY\STM32U083\LedBlink。

3.4 生成Makefile项目

  1. 切换到Project Manager标签页,选择Toolchain/IDE选择 Makefile,如下图所示:

Untitled

  1. Code Generator部分,选中Generate peripheral initialization as a pair of ‘.c/.h’ per peripheral,如下图:

Untitled

  1. 点击右上角的Gnerate Code开始生成代码,生成完成后弹窗如下:

Untitled

  1. 点击Open Folder打开目录,可以看到生成的文件内容如下:

Untitled

四、编辑/编译/下载/调试

4.1 修改代码

修改main.c代码,将在开头的USER CODE BEGIN Includes代码段改为:

Untitled

将main函数的循环修改为:

Untitled

4.2 编译代码

VSCode打开文件夹之后,点击Makefile插件的“生成文件”按钮,开始执行make命令:

Untitled

命令执行的最后,可以看到RAM和Flash占用数据的输出:

Untitled

4.3 下载固件

使用如下命令,将编译的固件下载到开发板上:

pyocd flash -t STM32U083RCTx -f 1000000 build\LedBlink.bin

命令执行过程中会输出进度条:

Untitled

执行完成后,会输出下载速度。

4.4 调试设置

如下图所示,依次点击调试按钮,创建luanch.json,Cortex Debug:

Untitled

则会创建一个新的lunch.json文件:

Untitled

修改executable、serverType,并添加targetId属性:

Untitled

保存,到这里调试配置就设置完成了。

4.5 断点调试

打开main.c,在循环中打下断点:

Untitled

此时,按F5键,或者点击Debug标签页上的调试按钮:

Untitled

就可以开始调试了。

默认的断点是main函数:

Untitled

直接F5继续,则可以运行到刚刚打下的断点处:

Untitled

好了,一切正常,可以顺利的进行开发了。

五、参考链接

  1. STM32CubeMX下载页面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html
  2. VSCode下载页面: https://code.visualstudio.com/Download
  3. Arm GNU Toolchain 10.3下载页面: https://developer.arm.com/downloads/-/gnu-rm
  4. Arm GNU Toolchian 最新13.3下载页面: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
  5. Make for Windows下载页面:https://gnuwin32.sourceforge.net/packages/make.htm
  6. Python下载页面: https://www.python.org/downloads/
  7. PyOCD主页:https://pyocd.io/
  8. NUCELO-U083RC开发板介绍页面: https://www.st.com.cn/zh/evaluation-tools/nucleo-u083rc.html
  9. NUCELO-U083RC开发板原理图: https://www.st.com.cn/resource/en/schematic_pack/mb1932-u083rc-b01-schematic.pdf

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

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

相关文章

PostgreSQL 中如何处理数据的并发读写和锁等待超时?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会!📚领书:PostgreSQL 入门到精通.pdf 文章目录 PostgreSQL 中如何处理数据的并发读写和锁等待超时一、并发读写的基本概念(一)…

org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorkbook$Factory

org/openxmlformats/schemas/spreadsheetml/x2006/main/CTWorkbook$Factory POI的问题 在操作Excel时,出现这个问题是因为缺少了poi-ooxml-schema jar包,并且与poi的jar包版本一致

html02-标签继续学习

1.列表标签 1.1 列表标签的使用场景 场景&#xff1a;在网页中按照 行 展示关联性的内容&#xff0c;如&#xff1a;新闻列表、排行榜、账单等 特点&#xff1a;按照行的方式&#xff0c;整齐显示内容 种类&#xff1a;无序列表、有序列表、自定义列表 1.2无序列表 <!--…

LPRNet 车牌识别部署 rk3588(pt-onnx-rknn)包含各个步骤完整代码

虽然车牌识别技术很成熟了&#xff0c;但完全没有接触过。一直想搞一下、整一下、试一下、折腾一下&#xff0c;工作之余找了一个简单的例子入个门。本博客简单记录一下 LPRNet 车牌识别部署 rk3588流程&#xff0c;训练参考 LPRNet 官方代码。 1、导出onnx   导出onnx很容易…

短剧营销:品牌传播的新风口?

7月10日&#xff0c;麦当劳首部短剧《重生之我在麦当劳修炼魔法》&#xff0c;在微信视频号、小红书、抖音等平台上线。这部短剧以「短剧脱口秀」 的模式&#xff0c;将麦当劳的品牌形象与「土味霸总」 的网络热点相结合&#xff0c;上线一小时内&#xff0c;全平台播放量破千。…

Flutter实现局部刷新的几种方式

目录 前言 1.局部刷新的重要性 1.概念 2.重要性 2.局部刷新实现的几种方式 1.使用setState方法进行局部刷新 2.使用StatefulWidget和InheritedWidget局部刷新UI 3.ValueNotifier和ValueListenableBuilder 4.StreamBuilder 5.Provider 6.GetX 7.使用GlobalKey 前言 …

【PyQt】

PyQT5线程基础&#xff08;2&#xff09; 线程案例案例一案例二 线程案例 案例一 案例一代码通过线程实现点击按钮向线程传输地址&#xff0c;程序等待20秒后&#xff0c;返回结果。 通过QtDesigner创建如下图所示的界面ui&#xff0c;并用UIC工具转成对应的py文件。 Ui_tes…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十四)-无人机操控关键绩效指标(KPI)框架

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

GEO数据挖掘从数据下载处理质控到差异分析全流程分析步骤指南

综合的教学视频介绍 GEO数据库挖掘分析作图全流程每晚11点在线教学直播录屏回放视频&#xff1a; https://www.bilibili.com/video/BV1rm42157CT/ GEO数据从下载到各种挖掘分析全流程详解&#xff1a; https://www.bilibili.com/video/BV1nm42157ii/ 一篇今年近期发表的转…

技术成神之路:设计模式(六)策略模式

1.介绍 策略模式&#xff08;Strategy Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;封装每一个算法&#xff0c;并使它们可以相互替换。策略模式使得算法的变化独立于使用算法的客户端。 2.主要作用 策略模式的主要作用是将算法或行为…

算法思想总结:字符串

一、最长公共前缀 . - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;两两比较 时间复杂度mn 实现findcomon返回两两比较后的公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//两两比较 string retstrs[0];size…

2.生产者核心流程总结

目录 概述 概述 生产者核心流程总结&#xff0c;根据流程总结出生产者的调优流程及生产者修改配置的文档地址&#xff0c;有以上两点&#xff0c;即可完成生产者优化。 注意&#xff1a;下面的都是生产者环节调优的点。 一条消息经过序例化后划分至 broker 上的哪一个分区消息…

Springboot + JWT 的 Token 登录验证

目录 项目结构 一、 引入依赖 二、自定义Auth认证注解 三、 编写登录拦截器 四、定义跨域拦截器 五、 定义全局异常处理器 六、定义工具类 1. 统一错误状态码 2.统一响应类 3.Token工具类 七、 编写实体类 八、 定义控制器 1.定义登录控制器类 2 定义报错处理器 …

vscode编译环境配置-golang

1. 支持跳转 如果单测函数上方不显示run test | debug test&#xff0c;需要安装Code Debugger&#xff08;因为以前的go Test Explorer不再被维护了&#xff09; 2. 单测 指定单个用例测试 go test -v run TestXXXdlv 调试 需要安装匹配的go版本和delve版本&#xff08;如…

6.S081的Lab学习——Lab11: Network

文章目录 前言Network提示&#xff1a;实现e1000_transmit的一些提示&#xff1a;实现e1000_recv的一些提示&#xff1a; 解析 总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招。打算尝试6.S081&#xff0c;将它的Lab逐一实现&#xff0c;并记录期间心酸历程。 代码下…

Go-知识测试-性能测试分析工具-benchstat

Go-知识测试-性能测试分析工具-benchstat benchmark 结果benchstat确认 benchstat 已安装确认 GOPATH 和 GOBIN将 $GOPATH/bin 添加到 PATH验证安装检查安装路径 使用 传送门&#xff1a;Go-知识测试-性能测试 benchmark 结果 benchmark 测试是实际项目中经常使用的测试方法&a…

飞凌全志T527开发板U-Boot添加自定义菜单

昨日&#xff0c;终于收到了心心念念的飞凌OK-T527开发板&#xff0c;板子很漂亮&#xff0c;外设丰富&#xff0c;性能强悍&#xff0c;T527创新性地使用了RISC-V架构的协处理器&#xff0c;后期值得研究一下异核的使用&#xff1a; 有趣的是&#xff0c;板子上电&#xff0c;…

智能制造 v3.13.16 发布,ERP、MES 更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

0.单片机工作原理

文章目录 最小系统 单片机芯片 时钟电路 复位电路 电源 最小系统 单片机芯片 本次51单片机的芯片为&#xff1a;STC89C52 Flash(闪存)程序存储器&#xff1a;存储程序的空间 SRAM&#xff1a;数据存储器&#xff0c;可用于存放程序执行的中间结果和过程数据 DPTR&#xff1a;…

某客户报表系统Oracle数据库挂起问题分析处理

某客户报表系统Oracle数据库挂起问题分析处理 一、概要 某客户报表系统Oracle数据库在3月5号、6号均出现一节点实例短暂挂起现象&#xff0c;挂起现象有两种&#xff0c;第一是普通用户不能登录数据库&#xff0c;第二是sys用户可以登录数据库&#xff0c;但是做简单的select查…