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

【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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot+VueJS+微信小程序技术的图书森林共享小程序设计与实现

注:每个学校每个老师对论文的格式要求不一样,故本论文只供参考,本论文页数达到60页以上,字数在6000及以上。 基于SpringBootVueJS微信小程序技术的图书森林共享小程序设计与实现 目录 基于SpringBootVueJS微信小程序技术的图书森…

9. Python3 Numpy科学计算库

Numpy是Python科学计算库的基础,主要包括: 强大的N维数组对象和向量运算。一些复杂的功能。与C和FORTRAN代码的集成。实用的线性代数运算、傅里叶变换、随机数生成等。 9.1 Numpy基础 Numpy的主要对象是一个均匀的多维数组。Numpy提供了各种函数。可以…

Python编程工具PyCharm和Jupyter Notebook的使用差异

在编写Python程序时需要用到相应的编程工具,PyCharm和Jupyter Notebook是最常用2款软件。 PyCharm是很强大的综合编程软件,代码提示、代码自动补全、语法检验、文本彩色显示等对于新手来说实在太方便了,但在做数据分析时发现不太方便&#xf…

【题解】 栈和排序(栈 + 预处理 / 贪心)

https://www.nowcoder.com/practice/95cb356556cf430f912e7bdf1bc2ec8f?tpId196&tqId37173&ru/exam/oj 预处理最大值 #include <climits> // 包含标准整数类型的定义 #include <vector> // 包含标准vector容器的定义class Solution {public:/*** 栈排…

【实战】Nginx+Keepalived高可用部署,后端Tomcat

目录 一、下载Tomcat安装包 二、安装Tomcat 三、 运行测试Tomcat是否安装成功 四、开放8080端口 五、Tomcat服务脚本 一、环境说明&#xff1a; 三、安装Keepalived 3.1、主机安装配置 实战目的是为了Nginx和后端的Tomcat都可以实现高可用&#xff0c;防止单节点故障的…

5G数字化转型redcap助您“轻”装上阵

RedCap&#xff08;Reduced Capability&#xff09;技术&#xff0c;也称为NR-Light&#xff0c;是针对5G网络的一种轻量化技术规范&#xff0c;旨在为具有较低性能要求的设备提供5G连接。 RedCap技术特点 低成本 降低芯片组和设备成本&#xff1a;RedCap通过减少终端带宽、收…

Oracle 性能诊断包收费依据

Which Data Dictionary or Dynamic Performance Views Require Purchase of the Diagnostics and / or Tuning Pack? (Doc ID 2082355.1)​编辑To Bottom In this Document Goal Solution References APPLIES TO: Oracle Database - Enterprise Edition - Version 10.2.0.5 …

LabVIEW人工模拟肺控制系统开发

开发了一种创新的主被动一体式人工模拟肺模型&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现了步进电机驱动系统的精确控制和多种呼吸模式的模拟。该系统不仅能够在主动呼吸模式下精确模拟快速呼吸、平静呼吸和深度呼吸&#xff0c;还能在被动模式下通过PID控制实现…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(十二)-无人机群在物流中的应用

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

Stable Diffusion 使用

目录 背景 最简单用法 进阶用法 高手用法 safetensor 一、概述 二、主要特点 背景 Stable Diffusion 开源后&#xff0c;确实比较火&#xff0c;上次介绍了下 Stable Diffusion 最简单的concept。今天继续介绍下&#xff0c;以Liblib 为例&#xff0c;介绍下如何使用参…

k8s快速部署一个网站

1&#xff09;使用Deployment控制器部署镜像&#xff1a; kubectl create deployment web-demo --imagelizhenliang/web-demo:v1 kubectl get deployment,pods[rootk8s-matser ~]# kubectl get pods NAME READY STATUS RESTARTS A…

Centos 设置静态ip地址 远程工具Putty连接访问

1.查看本机电脑端VM中centos网络适配器设置 右键--设置---网络适配器 设置保存。 选择的VM8是自己电脑网络适配器中VM使用的网络。 2.打开“编辑”——“虚拟网络编辑器” 注意&#xff1a;NAT网络模式对应的虚拟网卡是VMnet8这个&#xff01;需要管理员权限才能更改配置信…

mysql5.7版本字符集编码

默认character_set_databaselatin1 当你字段插入中文值的时候&#xff0c;会报错。 所以修改为了character_set_databaseutf8既可以。 character_set_server他的范围更大&#xff0c;属于服务器级别。

Win10工具:批量word转png图片

首先声明这个小工具是小编本人开发的&#xff0c;无任何广告&#xff0c;会员收费机制等&#xff0c;永久使用。允许公司或个人使用&#xff0c;不允许倒卖&#xff0c;否则发现后会追究法律责任&#xff0c;毕竟开发不易。工具是用python开发的。 功能非常单一&#xff0c;就…

免杀笔记 ----> 动态调用

前一段时间不是说要进行IAT表的隐藏吗&#xff0c;终于给我逮到时间来写了&#xff0c;今天就来先将最简单的一种方式 ----> 动态调用&#xff01;&#xff01;&#xff01; 1.静态查杀 这里还是说一下我们为什么要对他进行隐藏呢&#xff1f;&#xff1f;&#xff1…

跳表的简单学习

跳表&#xff08;SkipList&#xff09;学习 1. 什么是跳表&#xff1f; 基于“空间换时间”思想&#xff0c;通过给链表建立索引&#xff0c;使得链表能够实现二分查找。 跳表是可以实现二分查找的有序链表。 2. 从单链表到跳表 对于一般的单链表&#xff0c;在其中进行查…

自动驾驶可能解决的问题

首先是各种盲区&#xff0c;雷达可能检测到各种东西&#xff0c;而这些是视觉注意不到的 然后是每辆车可以互联互通&#xff0c;整体规划路线

昇思25天学习打卡营第14天 | ShuffleNet图像分类

昇思25天学习打卡营第14天 | ShuffleNet图像分类 文章目录 昇思25天学习打卡营第14天 | ShuffleNet图像分类ShuffleNetPointwise Group ConvolutionChannel ShuffleShuffleNet模块网络构建 模型训练与评估数据集训练模型评估模型预测 总结打卡 ShuffleNet ShuffleNetV1是旷世科…

基于Python+Django+MySQL的心理咨询预约系统

心理咨询预约系统 DjangoMySQL 基于PythonDjangoMySQL的心理咨询预约系统 项目主要依赖Django3.2&#xff0c;MySQL 支持随机验证码生成与登录验证 简介 基于PythonDjangoMySQL的心理咨询预约系统通过连接数据库获取数据&#xff0c;登录新增随机数字验证码验证。具体可以看…

Java二十三种设计模式-单例模式(1/23)

引言 在软件开发中&#xff0c;设计模式是一套被反复使用的、大家公认的、经过分类编目的代码设计经验的总结。单例模式作为其中一种创建型模式&#xff0c;确保一个类只有一个实例&#xff0c;并提供一个全局访问点。本文将深入探讨单例模式的概念、实现方式、使用场景以及潜…