【STM32U385RG 测评】基于VSCode的STM32开发环境搭建

【STM32U385RG 测评】搭建基于VSCode的STM32开发环境

文章目录

    • [【STM32U385RG 测评】搭建基于VSCode的STM32开发环境](#【STM32U385RG 测评】搭建基于VSCode的STM32开发环境)
    • 一、安装软件
      • [1.1 安装VSCode](#1.1 安装VSCode)
      • [1.2 安装STM32CubeMX](#1.2 安装STM32CubeMX)
      • [1.3 安装STM32CubeCLT](#1.3 安装STM32CubeCLT)
      • [1.4 安装ST-MCU-FINDER-PC](#1.4 安装ST-MCU-FINDER-PC)
    • 二、安装插件
      • [2.1 安装 STM32Cube for VSCode插件](#2.1 安装 STM32Cube for VSCode插件)
    • 三、创建项目
      • [3.1 创建STM32CubeMX项目](#3.1 创建STM32CubeMX项目)
      • [3.2 查阅原理图](#3.2 查阅原理图)
      • [3.3 修改引脚功能](#3.3 修改引脚功能)
      • [3.4 生成CMake项目](#3.4 生成CMake项目)
    • 四、编辑/编译/下载/调试
      • [4.1 导入项目](#4.1 导入项目)
      • [4.2 修改代码](#4.2 修改代码)
      • [4.3 编译代码](#4.3 编译代码)
      • [4.4 下载固件](#4.4 下载固件)
      • [4.5 启动调试](#4.5 启动调试)
      • [4.6 断点调试](#4.6 断点调试)
    • 五、参考链接

本文将介绍如何搭建基于VSCode的STM32开发环境,并以NUCLEO-U385RG开发板上的LED闪烁为例,展示如何在VSCode环境下进行编码、编译、下载、调试全套的开发流程。

VSCode作为广泛流行的文本编辑器,以丰富的插件生态而独领风骚。在当今AI大流行的背景下,VSCode支持众多AI编程辅助插件。在这样的背景下,即便是嵌入式、单片机开发,使用VSCode(尤其是写代码)也应该成为一项基本技能。

一、安装软件

具体需要安装下列软件:

  • VS Code,作为集成开发环境(IDE),当前最新版本:1.102.1;
  • STM32CubeMX,用于生成初始化代码,当前最新版本:6.15.0;
  • STM32CubeCLT,用于编译、调试、下载STM32代码,当前最新版本:6.15.0;
  • ST-MCU-FINDER-PC,ST MCU查找工具,当前最新版本:6.1.0;

1.1 安装VSCode

VSCode是一个强大且开放的代码编辑器,支持众多编程语言(C、C++、Java、Python等等),以及各种插件。VSCode的插件生态非常丰富,这也是目前VSCode非常受大家欢迎的一个重要原因。

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

VSCode可以直接下载,不需要注册。安装没啥难度,不再赘述。

1.2 安装STM32CubeMX

STM32CubeMX 实现了图形化方式配置STM32 MCU的引脚功能、时钟速率、中间件等等功能,并且可以一键生成整个项目的代码。STM32CubeMX 的这些功能,极大的提升了开发效率,对于产品项目的原型开发,以及DIY爱好者进行电子制作非常有吸引力。

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

需要注册ST官网账号之后才能下载。安装没啥难度,不再赘述。

1.3 安装STM32CubeCLT

STM32CubeCLT官方的介绍是:

Toolset for third-party integrated development environment (IDE) providers, allowing the use of STMicroelectronics proprietary tools within their own IDE frameworks.

面向第三方集成开发环境(IDE)提供商的工具集,允许在其自己的IDE框架中使用STMicroelectronics的专有工具。

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

ST官网需要注册之后,才能下载。安装也没啥难度,不再赘述。

安装之后可以发现,STM32CubeCLT安装目录内包含了以下软件:

  • CMake,跨平台构建工具,用于支持STM32CubeMX生成CMake项目的编译构建;
  • Ninja,一种轻量级的构建工具,用于支持STM32CubeMX生成CMake项目的编译构建;
  • GNU ARM交叉编译工具链(arm-none-eabi-gcc),用于将C/C++源代码编译为STM32平台的二进制代码;
  • STLink USB驱动,用于支持ST-Link调试器,安装之后系统才可以正常识别ST-Link;
  • STLink-gdb-server,用于支持通过ST-Link调试STM32 MCU;
  • STM32 Programmer CLI,命令行界面的STM32下载工具,用于将固件下载到STM32 MCU的内部flash中;

其中,前三个工具(CMake、Ninja、arm-none-eabi-gcc)用于支持编译,中间两个(STLink USB驱动,STLink-gdb-server)用于支持调试,最后一个(STM32_Programmer_CLI)用于支持下载。

1.4 安装ST-MCU-FINDER-PC

ST-MCU-FINDER-PC是 用于个人电脑的STM32和STM8产品查找工具。

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

ST官网需要注册之后,才能下载。安装没啥难度,不再赘述。

二、安装插件

VSCode安装完成后,还需要安装STM32的VSCode插件,具体有:

  • STM32Cube for Visual Studio Code(之前插件名是: STM32 VS Code Extension)

2.1 安装 STM32Cube for VSCode插件

VSCode需要安装的插件STM32 VS Code Extension,直接在插件栏搜索即可找到,安装即可。

需要注意的是,这个插件本身依赖另外几个插件,如下图所示:

这几个插件的作用分别为:

  • C/C++ Extension Pack,用于支持C/C++语法高亮、代码提示;
  • Arm Assembly,用于支持ARM汇编的语法高亮、代码提示;
  • LinkerScript,用于支持链接脚本的语法高亮、代码提示;
  • GNU Linker Map files,用于支持生成的.map文件的代码高亮;
  • Hex Editor,用于支持以十六进制显示并编辑二进制文件;
  • Cortex-Debug,用于支持Arm Cortex-M内核MCU的调试;

完成以上软件和插件的安装,基于ST官方VSCode扩展的STM32开发环境已经搭建完成了!

三、创建项目

接下来,我们创建一个简单的点灯程序,验证一下刚刚搭建的开发环境是可以正常使用的。

3.1 创建STM32CubeMX项目

  1. 首先打开STM32CubeMX,通过菜单File→New Project打开新建项目窗口,在弹出的界面中选择"Board Selector"标签页:

    • 在Commercial Part Number栏中输入U385RG,并回车;
    • 在MCUs/MPUs List下方选中Board列有NUCLEO-U385RG-Q的一行;
    • 点击右上角Start Project按钮;
    • 弹出TrustZone设置的话框,选择Witout TrustZone activated;
  2. 按Ctrl+S保存,选择适当的位置保存ioc文件,例如保存到 E:\DIY\ST\STM32U385\21ic_bbs\Blink\ 目录。

这样CubeMX项目就创建好了。

3.2 查阅原理图

STM32H7S78-DK开发板原理图,下载链接为: https://www.st.com.cn/resource/en/schematic_pack/mb1841-u385rgq-e01-schematic.pdf

打开原理图后,可以在第五找到如下LED相关的部分:

图中,可以看到引脚为:

  • GREEN:PA5

3.3 修改引脚功能

找到以上LED引脚后,在STM32CubeMX软件的Pinout View中,可以通过搜索框,找到以上几个引脚,并通过下拉菜单将其设置为GPIO_Output功能:

LED控制引脚设置完成后,通过左侧的Categories->System Core->GPIO也可以看到:

修改User Label为LD2,如下图:

3.4 生成CMake项目

CubeMX中完成引脚功能修改后,切换到Project Manager标签页,Project设置部分,取消Appli Project复选框,Toolchain/IDE选择CMake,如下图:

接着,切换到Code Generator设置,选中Generate peripheral initialization as a pair of '.c/.h' per peripheral,如下图:

此时,点击CubeMX界面右上角位置的"GENERATE CODE",将开始生成代码到项目目录内,并显示进度。

生成完成后,点击Open Folder打开目录,可以看到生成的文件和目录如下图:

到这里,使用CubeMX创建项目完成了。

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

接下来就要使用VS Code,进行开发体验了。通常我们开发过程中,需要不断重复的几个动作是: 编辑代码、编译构建、下载固件、断点调试。

4.1 导入项目

打开VSCode,侧边栏点击STM32 VS Code Extension插件图标,可以看到插件的项目管理(Project Manager)菜单:

首次使用,可能会提示找不到CLT,然后弹出对话框,选择相应的CLT安装目录即可:

选择Import CMake project菜单,在弹出的文件目录浏览对话框中,选择刚刚CubeMX生成的目录,如下图:

此时,点击"选择文件夹",VSCode中将会弹出确认导入的对话框:

此时,点击悬浮菜单的Import project,导入过程中,VSCode状态栏可以看到Importing...(上图中紫色部分)。导入完成后,VSCode右下角弹出确认对话框:

选择Open in this window,即在当前VS Code窗口中打开项目。

此时,弹出配置预设选择对话框,选择Debug即可:

选择配置预设类型之后,可以看到输出栏有如下输出:

这些输出表示,已经根据CMake文件(CMakeLists.txt)生成了Ninja构建构建规则文件(build.ninja),具体位于build/Debug子目录。

导入完成后,项目目录内会生成.vscode目录,里面会有一些配置文件。

4.2 修改代码

打开Core\Src\main.c文件,找到其中的main函数中的while循环,将其修改为:

以上代码修改,实现了控制LED的闪烁。

4.3 编译代码

完成以上代码修改后,点击VS Code的CMake Tools插件图标,在项目大纲中点击"生成"按钮,将会开始编译构建:

生成完成后,可以在输出视图看到生成了elf文件,以及RAM和Flash占用情况:

4.4 下载固件

编译完成后,就可以准备下载固件了。

还是在VS Code的CMake Tools插件菜单,找到 固定的命令-> 运行任务 右侧的运行命令图标,点击该图标:

将会弹出"选择要运行的任务"对话框,选择CubeProg: Flash project (SWD)即可开始下载固件:

下载完成,可以在输出区域看到下载过程耗时(Time elapsed during download operation):

4.5 启动调试

默认导入的项目已经创建了调试配置文件,位于.vscode/launch.json:

应该可以直接进行调试,接下来尝试对点灯程序进行断点调试。

VSCode点击左侧工具栏"调试"按钮,切换到调试试图,再点击开始调试按钮:

非常顺利的进入了调试状态(gdb调试会话):

4.6 断点调试

进入gdb调试会话之后,断点调试、查看寄存器、查看变量等功能应该都没有问题。

以断点调试为例,打开main.c文件, 在循环内添加断点:

打上断点,按F5继续,可以跑到断点位置:

通过顶部的几个悬浮按钮,就可以进行断点调试的常用操作了。

最后,上一张板子上运行效果gif动图:

五、参考链接

  1. STM32 公众号推文《全新STM32 VS Code扩展V2.1.0发布》: https://mp.weixin.qq.com/s/rP4aHoTdbVL5ZaArqYosdA
  2. ST官网文章《使用面向VS Code的STM32扩展简化您的开发过程》: https://www.st.com.cn/content/st_com/zh/campaigns/stm32-vs-code-extension-z11.html
  3. STM32CubeMX下载页面: https://www.st.com.cn/zh/development-tools/stm32cubemx.html
  4. STM32CubeCLT下载页面: https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
  5. ST-MCU-FINDER-PC下载页面:https://www.st.com.cn/zh/development-tools/st-mcu-finder-pc.html
  6. VSCode下载页面: https://code.visualstudio.com/Download
  7. NUCLEO-U385RG-Q开发板原理图: https://www.st.com.cn/resource/en/schematic_pack/mb1841-u385rgq-e01-schematic.pdf
相关推荐
lingzhilab32 分钟前
零知开源——基于STM32F407VET6实现ULN2003AN驱动28BYJ-48步进电机控制系统
stm32·单片机·嵌入式硬件
JasmineX-11 小时前
直流电机驱动与TB6612
c语言·stm32·单片机·嵌入式硬件
想文艺一点的程序员2 小时前
ESP32S3:开发环境搭建、VSCODE 单步调试、Systemview 分析任务运行情况
ide·vscode·编辑器
hahaha601612 小时前
模拟电路中什么时候适合使用电流传递信号,什么时候合适使用电压传递信号
stm32·单片机·嵌入式硬件
小小少年12313 小时前
基于蓝牙的stm32智能火灾烟雾报警系统设计
stm32·单片机·嵌入式硬件
点灯小铭15 小时前
基于51单片机红外避障车辆高速汽车测速仪表设计
单片机·嵌入式硬件·汽车·毕业设计·51单片机·课程设计
何为xl16 小时前
【VSCode】使用VSCode打开md文件以及转化为PDF
ide·vscode·pdf
猫猫的小茶馆20 小时前
【STM32】将 FreeRTOS移植到STM32F103RCT6 详细流程
stm32·单片机·嵌入式硬件·mcu·智能硬件
智驾21 小时前
MCU平台化实践方案
单片机·嵌入式硬件·mcu·嵌入式
卿·静1 天前
Node.js终极文本转图指南
前端·javascript·vscode·node.js