11

我是 STM32 编程领域的新手,很长一段时间以来一直在努力寻找合适的 IDE。我知道所有其他的 IDE,比如 Keil 和 IAR,但是购买它们只是为了学习的成本对我来说是非常高的。

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

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

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

预先感谢您的帮助

4

4 回答 4

11
  1. 安装GNU Arm Embedded 工具链并将其 bin 文件夹添加到您的 PATH 环境变量中。
  2. 您还需要 amake来执行您的 makefile,因此请下载Make for Windows。最简单的方法是下载二进制文件并将其提取到系统的某个位置。也将它 ( C:\make-3.81-bin\bin) 添加到您的 PATH 中。
  3. 创建一个 STM32CubeMX 项目并选择Makefile作为 Toolchain/IDE。 在此处输入图像描述
  4. 此时,您只需make在项目的根文件夹中使用即可构建生成的项目。
  5. 如果你在 VS Code 中打开项目,你可以使用它的终端进行构建,或者你可以创建一个 VS Code 任务来执行make命令。您也可以将任务绑定到热键以腾出一些时间。
  6. 要进行调试,最简单的方法是安装Cortex-Debug VS Code 扩展。按照说明配置调试会话。
于 2018-07-19T16:13:03.253 回答
6

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

于 2020-08-14T09:15:54.153 回答
1

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

VSCode STM32 IDE

这个过程非常简单:

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

这是有关其工作原理的视频:

VSCode STM32 IDE - 入门

于 2018-11-17T04:11:28.687 回答
0

@Bence Kaulics 已经有了很好的答案,基于它添加了我最近的发现。

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

-> 安装 Cortex-Debug 扩展。-> 从Segger下载并安装 J-Link 软件。->如果您想查看外设寄存器,请获取SVD 文件。-> 编辑 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",
        }
    ]
}
于 2022-01-12T22:16:13.417 回答