你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32H7S78-DK评测】搭建基于ST官方VSCode扩展的STM32开发环境

[复制链接]
xusiwei1236 发布时间:2024-8-12 01:09

本文将介绍如何在Windows系统上搭建基于ST官方VSCode扩展的STM32开发环境,相对基于VSCode+PyOCD的开发环境,基于ST官方VSCode扩展的开发环境搭建更容易一些,功能也更强大。本文部分章节以STM32H7S7L8HxH MCU为例,但全文介绍的方法适用于大部分STM32 MCU,对于其他型号的STM32 MCU,仅少量步骤调整即可。

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

  • VS Code,用于编辑源代码文件,以及集成其他插件作为集成开发环境(IDE);
  • STM32CubeMX,用于修改配置,以及生成代码;
  • STM32CubeCLT,STM32Cube命令行工具;
  • ST-MCU-FINDER-PC,ST MCU查找工具;

此前,我也搭建过基于VSCode+PyOCD的开发环境,相比使用ST官方VSCode扩展的方式,需要下载更多软件,搭建过程更复杂。感兴趣的可以去看看,文章链接: https://blog.csdn.net/xusiwei1236/article/details/140412638

相对来说,基于ST官方VSCode扩展的开发环境搭建更容易一些,功能也更强大一些。

本文部分章节以STM32H7S7L8HxH MCU为例,但全文介绍的方法适用于大部分STM32 MCU,对于其他型号的STM32 MCU,仅少量步骤调整即可。

一、安装软件

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 VS Code Extension

2.1 安装 STM32 VS Code Extension

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

需要注意的是,这个插件本身依赖另外几个插件,如下图所示: image-20240810205603812.png 这几个插件的作用分别为:

  • 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”标签页: image-20240810214948065.png
    • 在Commercial Part Number栏中输入H7S7,并回车;
    • 在MCUs/MPUs List下方选中Board列有STM32H7S78-DK的一行;
    • 点击右上角Start Project按钮;
    • 弹出MPU设置的话框,选择Yes;
  2. 然后STM32CubeMX进入配置界面,切换到Clock Configuration标签页,将To CPU Clocks修改为600并回车,CubeMX软件将会自动计算其他参数: image-20240810215519566.png
  3. 按Ctrol+S保存,选择适当的位置保存ioc文件。

这样CubeMX项目就创建好了。

3.2 查阅原理图

STM32H7S78-DK开发板原理图,下载链接为: st.com.cn/resource/en/schematic_pack/mb1736-h7s7l8-d01-schematic.pdf

打开原理图后,可以在Sheet 15: Peripherals页面找到如下LED部分: image-20240810220101570.png 图中,可以看到四个LED的控制引脚分别为:

  • GREEN: PO1
  • ORANGE: PO5
  • RED: PM2
  • BLUE: PM3

另外,查阅用户手册,可以知道这几个LED位于开发板正面的屏幕的左下角: image-20240810220250369.png

3.3 修改引脚功能

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

四个LED控制引脚设置完成后,通过左侧的Categories->System Core->GPIO也可以看到: image-20240810221236340.png 图中,左侧System Core下方有三列复选框Boot、Application、ExtMemLoader,用于为相应的子项目(Boot、Appli、ExtMemLoader)生成外设初始化代码。

为了后续编写代码时,方便区分哪个Pin控制了哪个LED,可以为以上几个Pin设置User Label(用户标签)。设置User Label后,例如给PO1设置User Label为LD1,生成的代码中将会生成相应的宏定义,编写代码时更方便。

对于以上四个LED控制引脚,需要将Pin Context Assignment修改为Boot,User Label修改为和板子丝印对应的: LD1、LD2、LD3、LD4,如下图: image-20240810221958081.png

Pin Context Assignment修改为Boot是因为——为了简单起见,我们暂时只生成一个Boot子项目(虽然bootflash不大,但是点灯的代码也够用了)。

3.4 生成CMake项目

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

接着,切换到Code Generator设置,选中Generate peripheral initialization as a pair of ‘.c/.h’ per peripheral,如下图: image-20240810223136153.png 此时,点击CubeMX界面右上角位置的“GENERATE CODE”,将开始生成代码到项目目录内,并显示进度: image-20240810223354263.png

生成完成后,将会弹出对话框提示: image-20240810223417765.jpg

点击Open Folder打开目录,可以看到生成的文件和目录如下图: image-20240810223527721.png

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

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

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

4.1 导入项目

打开VSCode,侧边栏点击STM32 VS Code Extension插件图标,可以看到插件的项目管理(Project Manager)菜单: image-20240810224005693.png 选择Import CMake project菜单,在弹出的文件目录浏览对话框中,选择刚刚CubeMX生成的目录,如下图: image-20240810224129475.png 此时,点击“选择文件夹”,VSCode中将会弹出确认导入的对话框: image-20240810224329631.png 此时,点击Import project,VSCode右下角弹出确认对话框: image-20240810224458649.png

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

此时,弹出配置预设选择对话框,选择Debug即可: image-20240810224607767.png

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

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

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

4.2 修改设置

默认情况下,导入的VS Code代码之后,打开C代码会有一些红线: image-20240810230447432.png

例如,这里的 "main.h" 显示红线。

这个问题是VS Code的C/C++插件的智能提示(IntelliSense)没有成功找到main.h。

这个问题不只是会显示红线,而且会影响VS Code的代码提示。因此,如果不解决这个问题,使用VS Code编写代码的效率会大打折扣!

打开 c_cpp_properties.json (或者图形化修改C/C++配置),将其内容修改为:

{
    "version": 4,
    "configurations": [
        {
            "name": "STM32",
            "configurationProvider": "ms-vscode.cmake-tools",
            "intelliSenseMode": "windows-gcc-arm",
            "compilerPath": "D:/ST/STM32CubeCLT_1.16.0/GNU-tools-for-STM32/bin/arm-none-eabi-gcc.exe",
            "includePath": [
                "${workspaceFolder}/Boot/Core/Inc",
                "${workspaceFolder}/Drivers/STM32H7RSxx_HAL_Driver/Inc",
                "${workspaceFolder}/Drivers/STM32H7RSxx_HAL_Driver/Inc/Legacy",
                "${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32H7RSxx/Include",
                "${workspaceFolder}/Drivers/CMSIS/Include"
            ]
        }
    ]
}

其中,compilerPath 使用STM32CubeCLT安装目录下的arm-none-eabi-gcc,includePath 列表内容需要 参考 Boot\mx-generated.cmake 文件中的 target_include_directories 的内容。

4.3 修改代码

打开Boot\Core\Src\main.c文件,文件开头Private includes下方修改为: image-20240810231601992.png 找到其中的main函数中的while循环,将其修改为: image-20240810232211496.png 以上两处代码修改,实现了控制四个LED的闪烁。

4.4 编译代码

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

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

4.5 下载固件

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

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

将会弹出”选择要运行的任务“对话框,选择CubeProg: Flash Boot即可开始下载固件: image-20240810233428944.png

下载完成,可以在输出区域看到下载过程耗时: image-20240810233820037.png

4.6 设置调试

默认导入的项目已经创建了调试配置文件,位于.vscode/launch.json,但生成的是外置存储启动的调试设置,不适用于我们现在的Boot项目。

因此需要手动添加一个调试设置,接下来描述如何添加调试设置。

首先在VSCode中打开 .vscode/launch.json 文件,点击右下角的”添加配置“按钮,将会生成配置选择列表: image-20240811000051935.png

选择Cortex Debug: ST-LINK,将会生成新的配置代码段: image-20240811000127056.png

接着,将这个配置代码段修改为:

{
            "cwd": "${workspaceFolder}",
            "executable": "${command:STM32VSCodeExtension.bootFlashBootTarget}",
            "name": "Debug Boot Project with ST-Link",
            "device": "STM32H7S7L8HxH", //MCU used
            "svdFile": "${config:STM32VSCodeExtension.cubeCLT.path}/STMicroelectronics_CMSIS_SVD/STM32H7S.svd",
            "serverpath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver",
            "stm32cubeprogrammer":"${config:STM32VSCodeExtension.cubeCLT.path}/STM32CubeProgrammer/bin",
            "stlinkPath": "${config:STM32VSCodeExtension.cubeCLT.path}/STLink-gdb-server/bin/ST-LINK_gdbserver",   
            "armToolchainPath": "${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin",
            "gdbPath":"${config:STM32VSCodeExtension.cubeCLT.path}/GNU-tools-for-STM32/bin/arm-none-eabi-gdb",
            "v1": false,               //Change it depending on ST Link version
            "serverArgs": [
                "-m","1",
            ],
            "request": "launch",
            "type": "cortex-debug",
            "runToEntryPoint": "main",
            "showDevDebugOutput": "none",
            "servertype": "stlink"
        },

4.7 断点调试

打开main.c文件, 在循环内添加断点: image-20240811000918618.png

切换到VS Code的调试标签,确认调试配置是刚刚添加的,如果不是可以通过下拉菜单选择;然后点击”开始调试“即可启动调试: image-20240811001109334.png

稍等片刻,可以看到已经成功启动调试了: image-20240811001355123.png

按下F5,可以跳转到刚刚打下的断点处: image-20240811001458175.png 通过顶部的几个悬浮按钮,就可以进行断点调试的常用操作了。

五、参考链接

  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
image-20240810223417765.png
收藏 评论2 发布时间:2024-8-12 01:09

举报

2个回答
STMCU-管管 回答时间:2024-8-13 14:09:32
期待做个好的交互设计, N" l% r+ X) J4 i' ]0 |' k. Z
ytwo 回答时间:2024-8-18 17:36:08

STMCU-管管 发表于 2024-8-13 14:09
期待做个好的交互设计

期待,学习了

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版