【STM32开发笔记】搭建VSCode+PyOCD的STM32开发环境
-
- 一、安装软件
-
- [1.1 安装STM32CubeMX](#1.1 安装STM32CubeMX)
- [1.2 安装VSCode](#1.2 安装VSCode)
- [1.3 安装Arm GNU Toolchain](#1.3 安装Arm GNU Toolchain)
- [1.4 安装Make for Windows](#1.4 安装Make for Windows)
- [1.5 安装Python](#1.5 安装Python)
- [1.6 安装PyOCD](#1.6 安装PyOCD)
- 二、安装插件
-
- [2.1 VSCode插件](#2.1 VSCode插件)
- [2.2 PyOCD支持包](#2.2 PyOCD支持包)
- 三、创建项目
-
- [3.1 创建STM32CubeMX项目](#3.1 创建STM32CubeMX项目)
- [3.2 查阅原理图](#3.2 查阅原理图)
- [3.3 修改引脚功能](#3.3 修改引脚功能)
- [3.4 生成Makefile项目](#3.4 生成Makefile项目)
- 四、编辑/编译/下载/调试
-
- [4.1 修改代码](#4.1 修改代码)
- [4.2 编译代码](#4.2 编译代码)
- [4.3 下载固件](#4.3 下载固件)
- [4.4 调试设置](#4.4 调试设置)
- [4.5 断点调试](#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窗口,执行如下命令:
bash
arm-none-eabi-gcc --version
命令输出类似如下版本信息,即表示PATH环境变量配置成功:

1.4 安装Make for Windows
Make for Windows下载页面:https://gnuwin32.sourceforge.net/packages/make.htm
安装完成后,需要手动将make.exe所在目录,添加到PATH环境变量。
类似的,添加成功后,新打开cmd窗口,可以执行如下命令:
bash
make --version
命令输出类似如下版本信息,即表示PATH环境变量配置成功:

1.5 安装Python
Python下载页面: https://www.python.org/downloads/
安装过程中记得勾选:Add Python to environment variables

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

成功输出版本信息,即表示PATH环境变量配置成功。
设置pip镜像站:
bash
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:
bash
pip install pyocd
安装过程输出如下:

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

输出了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:

接着,安装STM32U0xx支持包:

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

如果没有问题,则可以显示设备。
三、创建项目
3.1 创建STM32CubeMX项目
- 打开STM32CubeMX之后,通过菜单File→New Project开始创建项目,在弹出的界面中:

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

3.2 查阅原理图
NUCLEO-U083RC开发板原理图下载链接:https://www.st.com.cn/resource/en/schematic_pack/mb1932-u083rc-b01-schematic.pdf
查阅开发板原理图文件,找到LED的部分:

可以看到,PA5可以控制LED的亮灭。
3.3 修改引脚功能
- 在Pinout View中找到PA5,并将其功能设置为GPIO_Output,如下图所示:

- 按Ctrl+S保存,选中合适的文件夹路径进行保存,例如我选中的E:\DIY\STM32U083\LedBlink。
3.4 生成Makefile项目
- 切换到Project Manager标签页,选择Toolchain/IDE选择 Makefile,如下图所示:

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

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

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

四、编辑/编译/下载/调试
4.1 修改代码
修改main.c代码,将在开头的USER CODE BEGIN Includes代码段改为:

将main函数的循环修改为:

4.2 编译代码
VSCode打开文件夹之后,点击Makefile插件的"生成文件"按钮,开始执行make命令:

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

4.3 下载固件
使用如下命令,将编译的固件下载到开发板上:
bash
pyocd flash -t STM32U083RCTx -f 1000000 build\LedBlink.bin
命令执行过程中会输出进度条:

执行完成后,会输出下载速度。
4.4 调试设置
如下图所示,依次点击调试按钮,创建luanch.json,Cortex Debug:

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

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

保存,到这里调试配置就设置完成了。
4.5 断点调试
打开main.c,在循环中打下断点:

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

就可以开始调试了。
默认的断点是main函数:

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

好了,一切正常,可以顺利的进行开发了。
五、参考链接
- STM32CubeMX下载页面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html
- VSCode下载页面: https://code.visualstudio.com/Download
- Arm GNU Toolchain 10.3下载页面: https://developer.arm.com/downloads/-/gnu-rm
- Arm GNU Toolchian 最新13.3下载页面: https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads
- Make for Windows下载页面:https://gnuwin32.sourceforge.net/packages/make.htm
- Python下载页面: https://www.python.org/downloads/
- PyOCD主页:https://pyocd.io/
- NUCELO-U083RC开发板介绍页面: https://www.st.com.cn/zh/evaluation-tools/nucleo-u083rc.html
- NUCELO-U083RC开发板原理图: https://www.st.com.cn/resource/en/schematic_pack/mb1932-u083rc-b01-schematic.pdf