如何配置 VS Code 以使用 cubeMX 构建和调试 STM32 项目 - Windows 10

How to configure VS Code to build and debug STM32 projects using cubeMX - Windows 10

我是 STM32 编程领域的新手,现在一直在努力寻找合适的 IDE。我知道所有其他 IDE,例如 Keil 和 IAR,但在这个时间点购买它们只是为了学习的成本对我来说太高了。

我已经开始使用 VS Code 进行越来越多的开发工作,我认为将其用于 STM32 开发会很好IDE。在过去的几天里,我在网上找到了很多关于如何配置 IDE 来构建 STM32 项目的示例,但它们似乎都缺少我正确编译项目所需的重要信息。挺郁闷的,

我想知道是否有人可以向我提供有关如何设置 VS 代码以与 cubeMX 和 arm 工具链一起工作的完整设置指南,或者如果您感觉很好,请发给我我可以用作基础学习的示例项目。

只是一些背景信息,我知道如何使用cubeMX生成基础项目以及相关的makefile,我也安装了最新的GNU-Tools-Arm-Embedded。

提前感谢您的帮助

  1. 安装 GNU Arm Embedded toolchain 并将其 bin 文件夹添加到您的 PATH 环境变量中。
  2. 您还需要 make 来执行您的 makefile,因此请下载 Make for Windows。最简单的方法是下载二进制文件并将其解压缩到系统的某个位置。也将它 (C:\make-3.81-bin\bin) 添加到您的 PATH 中。
  3. 创建一个 STM32CubeMX 项目和 select Makefile 作为 Toolchain/IDE。
  4. 此时,您只需使用项目根文件夹中的 make 即可构建生成的项目。
  5. 如果你在 VS Code 中打开项目,你可以使用它的终端构建,或者你可以创建一个 VS Code 任务来执行 make 命令。您也可以将您的任务绑定到热键以节省一些时间。
  6. 要进行调试,最简单的方法是安装 Cortex-Debug VS Code extension. Follow the instructions 来配置调试会话。

有一个 python 脚本库可以做到这一点,它最近发布了,带有优秀的文档,经过测试我可以说它像宣传的那样工作。

VSCode STM32 IDE

过程非常简单:

  1. 使用STM32CubeMX导出文件
  2. 打开 VSCode 文件夹并将其另存为工作区
  3. 将脚本 "ideScripts" directory 复制到您的项目文件夹
  4. 运行 update.py

这是一段介绍其工作原理的视频:

VSCode STM32 IDE - Getting Started

前段时间我也有同样的问题,但没有找到我真正喜欢的东西。所以我创建了 STM32 for VSCode,它是 VSCode 的扩展,它与 STM32CubeMX 生成的文件一起工作,并为您设置构建和调试。

@Bence Kaulics 已经给出了很好的答案,在此基础上添加我最近的发现。

  1. make 命令在 VS 代码终端中对我不起作用。为了解决这个问题,我安装了 Microsoft 的“Makefile Tools”扩展。
  2. 说明 link 不起作用,因此我添加了如何为 J-Link.
  3. 配置调试的步骤

-> 安装 Cortex-Debug 扩展。 -> 如果您想查看外设寄存器,请从 Segger. -> Get SVD file 下载并安装 J-Link 软件。 -> 编辑 launch.json 文件(见下面的代码)。 -> 设置您的可执行文件、路径和设备。

{
    "version": "0.2.0",
    "configurations": [
        {
            "cwd": "${workspaceRoot}",
            "executable": "./build/STM32F103RBT6_Test1.elf",
            "name": "Debug Microcontroller",
            "request": "launch",
            "type": "cortex-debug",
            "servertype": "jlink",
            "serverpath": "C:/Program Files/SEGGER/JLink/JLinkGDBServerCL.exe",
            "armToolchainPath": "C:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2021.10/bin",
            "device": "STM32F103RB",
            "interface": "swd",
            //"serialNumber": "", // if Multiple Debuggers attached
            "runToMain": true,
            "svdFile": "${workspaceRoot}/device/STM32F103xx.svd",
        }
    ]
}