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

news/2024/8/31 2:38:40 标签: stm32, vscode, gcc, pyocd, STM32CubeMX

【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系统,仅需少量步骤调整。

一、安装软件

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

STM32CubeMX_19">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

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

三、创建项目

STM32CubeMX_142">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.niftyadmin.cn/n/5561149.html

相关文章

捷配总结的SMT工厂安全防静电规则

SMT工厂须熟记的安全防静电规则! 安全对于我们非常重要,特别是我们这种SMT加工厂,通常我们所讲的安全是指人身安全。 但这里我们须树立一个较为全面的安全常识就是在强调人身安全的同时亦必须注意设备、产品的安全。 电气: 怎样预…

使用 git 和 GitHub 互动

本文根据《GitHub入门与实践》整理 创建账户 要想使用GitHub那就必须先有GitHub账号,账号自行注册,不作介绍。 本地生成 SSH Key SSH 提供了一种安全的方式来通过不安全的网络进行通信。当你使用SSH key连接到GitHub时,你的身份是通过密钥对(一个公钥和一个私钥)来验…

Kubernetes 运维思考 —— 筑梦之路

一、Kubernetes 架构的深度洞察 🔍 Kubernetes 的架构犹如一座精心设计的城堡🏰,各个组件协同工作,共同保障容器化应用的顺利运行。 控制平面(Control Plane) 控制平面是 Kubernetes 的大脑🧠&…

【CICID】GitHub-Actions-SpringBoot项目部署

[TOC] 【CICID】GitHub-Actions-SpringBoot项目部署 0 流程图 1 创建SprinBoot项目 ​ IDEA创建本地项目,然后推送到 Github 1.1 项目结构 1.2 Dockerfile文件 根据自身项目,修改 CMD ["java","-jar","/app/target/Spri…

如何使用FlowUs快速构建专业领域知识网络是一个系统化的过程,旨在整合和组织一个特定领域的信息和知识点

在这个信息爆炸的时代,快速构建知识网络就像是在浩瀚的知识海洋中搭建一座灯塔,指引我们前行的方向。它不仅帮助我们系统化地整理和理解复杂的信息,还能让我们在专业领域内更快速地成长和进步。 当你面对一个全新的项目或挑战时,…

Python学习笔记—100页Opencv详细讲解教程

目录 1 创建和显示窗口... - 4 - 2 加载显示图片... - 6 - 3 保存图片... - 7 - 4 视频采集... - 8 - 5视频录制... - 11 - 6 控制鼠标... - 12 - 7 TrackBar 控件... - 14 - 8.RGB和BGR颜色空间... - 16 - 9.HSV和HSL和YUV.. - 17 - 10 颜色空间的转化... - 18 - …

斯坦福/苹果等23所机构发布DCLM基准测试,高质量数据集能否撼动Scaling Laws?基础模型与Llama3 8B表现相当

人们对 AI 模型的关注高热不下,关于 Scaling Laws 的争论也愈发热烈。 OpenAI 于 2020 年在论文「Scaling Laws for Neural Language Models」中首次提出 Scaling Laws,它被看作是大语言模型的摩尔定律。其释义可简要总结为:随着模型大小、数…

请解释vue的单页面应用是什么及其优缺点

Vue的单页面应用(Single Page Application, SPA)是一种使用Vue.js框架构建的Web应用程序,它通过动态加载内容来更新页面,而不是每次用户导航时重新加载整个页面。以下是对Vue单页面应用的详细解释及其优缺点的归纳: V…