STM32CubeIDE-VScode环境搭建

(本教程为2026年4月创建的,可能与以后的版本有些出入)

简介

  • STM32CubeIDE for Visual Studio Code(CubeMX + CMake + GCC + HAL + VSCode + Clangd) 构成了全链路嵌入式开发方案: CubeMX解决硬件配置问题,CMake统一构建流程,GCC提供编译支持,HAL库屏蔽硬件差异,VSCode+Clangd打造智能编辑器,最主要的是,该插件可以一键部署各种环境,不用像老一辈一样手动安装开发环境了,适合新鸟和老鸟。

参考视频

官方教程:https://www.bilibili.com/video/BV1p1XoBYEsc

Linux

环境介绍

本教程环境介绍:

  1. 系统:Fedora 43 KDE Edition Linux
  2. 系统内核:Linux 6.19.12-200.fc43.x86_64
  3. 架构:X86_64(amd64)

其他Linux环境也可以。

安装各种软件与环境

安装CubeMX

下载地址:

https://www.st.com.cn/zh/development-tools/stm32cubemx.html

推荐下载6.14.1版本(不要下载6.15.0,这个版本有bug,不知道后续何时会修复)

解压出来

用root权限打开这个软件SetupSTM32CubeMX-6.15.0

sudo ./SetupSTM32CubeMX-6.15.0

在新弹出的界面一直点下一步就行,安装结束后出现如下图就成功了。

/usr/local/STMicroelectronics/STM32Cube/STM32CubeMX进入这个文件夹,然后打开终端输入

./STM32CubeMX

点击Help

Manage embedded software packages,把STM32F1,F4,H7的第一个最新的固件勾上。

点install

登陆上账号

然后等下载和安装完

下载好就行了。

接下来可以把CubeMX应用配置一个桌面快捷方式等可以快速打开,教程详见Vinci机器人队Linux入门教程的Appimage章节,可以用ctrl+F快速定位该章节。

桌面快捷方式如下:

[Desktop Entry]
Name=STM32CubeMX
Exec=/usr/local/STMicroelectronics/STM32Cube/STM32CubeMX/STM32CubeMX
Icon=/usr/local/STMicroelectronics/STM32Cube/STM32CubeMX/help/STM32CubeMX.png
Type=Application
Categories=Development;Electronics;Embedded;
Comment=STM32CubeMX configuration and code generation tool
Terminal=false

根据教程做,就可以实现这种效果啦。

安装VScode

https://code.visualstudio.com/Download

如果是debian系下载deb,如果是rhel系下载rpm.

下载完之后,点击浏览器,找到这个安装包的文件夹,并在该路径打开终端。

Debian系:输入sudo apt install ./code然后按tab按键补齐文件名,回车。

RHEL系:输入sudo dnf install ./code然后按tab按键补齐文件名,回车。

例如补齐后的:

sudo dnf install ./code-1.102.1-1752598767.el8.x86_64.rpm

然后打开VScode,在终端输入下面的命令

code

然后可以配置一个环境单独给CubeIDE插件使用,避免和默认环境冲突。

alt text

进行一些设置,按我的来就可以

alt text

选中STM32

alt text

然后安装一些插件

找到下面这个STM32CubeIDE for Visual Studio Code插件安装

alt text

右边弹这个提示要选择安装(要有良好的科学网络

alt text

紧接着会进行一些环境的安装

alt text

也可以再安装一些其他的插件,比如Codex等插件 这些看你自己啦

alt text

工程创建与测试

使用CubeMX创建工程

点击进入单片机挑选的按钮

搜索对应芯片,并双击对应芯片选项。

进行一些配置,以下都是很基础的东西,你在看这个视频前肯定都会了

随便开一个IO用来测试,比如LED的GPIO

FreeRTOS也要配置一下。

这些文件夹也要配置好,最后Toolchain选择CMake,编译器选择GCC(6.14.1及之前没有选择编译器这个选项很正常)

(但是CubeMX6.15.0有bug,这个选择GCC编译器并没有用,还需要后续自己手动选择编译器,以后可能会修复这个bug.)

对工程进行配置与编译

在工程文件夹打开终端

alt text

code .

打开VScode后记得切到`STM32·的配置

alt text

选择这里的Yes进行配置CMake预设

alt text

一般选Debug即可

alt text

找个C语言的代码文件打开,然后右下角会提示安装一个C/C++插件,这个可以安装也可以不安装,他也带代码提示,但是他的代码提示对比自带的clangd简直是弱爆了,如果你是新手,你不会设置代码提示,建议按我下面的操作来,直接别装这个插件。

alt text

你可以测试一下代码提示,是不是很强。

alt text

编译的话,图中的这俩build都可以

alt text

移植作者tungchiahui的标准C/C++工程模板

用git clone命令克隆仓库:https://github.com/tungchiahui/STM32HAL_CMake_CPP_Template

git clone https://github.com/tungchiahui/STM32HAL_CMake_CPP_Template.git

把仓库里的 所有文件与文件夹(除了.git以外) 复制到我们的STM32工程的目录里。

alt text

然后打开applications文件夹,在Src和Inc文件夹分别创建led_task.cpp和led_task.h,内容分别如下:

led_task.cpp:

#include "led_task.h"
#include "cmsis_os.h"
#include "stm32f1xx_hal.h" 

GPIO_PinState pinstate = GPIO_PIN_RESET;

extern "C"
void StartDefaultTask(void *argument)
{
  for(;;)
  {
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,pinstate);
    pinstate = (pinstate == GPIO_PIN_RESET) ? GPIO_PIN_SET : GPIO_PIN_RESET;
    osDelay(500);
  }
}

led_task.h:

#ifndef __LED_TASK_H_
#define __LED_TASK_H_

#ifdef __cplusplus
extern "C"
{
#endif

#include "cpp_interface.h"

#ifdef __cplusplus
}
#endif

#endif

然后打开cmake/user文件夹下的CMakeLists.txt,把刚才新建的led_task.cpp添加上去。

详细介绍(可以不看):这里的cmake/stm32cubemx下的CMakeLists.txt是被CubeMX管理的,你重新用CubeMX生成新代码后,这个文件里的东西会被覆盖。而工作区根目录下的CMakeLists.txt是不会被重新覆盖的,而且给我们留了一些区域加源文件和头文件,但是这样会让这个文件太过于嘈杂。所以我们选择新建一个user文件夹,然后在这里面弄一个CMakeLists.txt,再用顶层CMakeLists.txt去加载这个子CMakeLists.txt,这个子CMakeLists.txt方便咱们修改,文件结构也更加明显。(这些都不需要咱们自己创建,我已经给创建到模板里了,你在上面复制的时候已经复制过来了)

像下图这样加上cpp文件。

然后要去最顶层的CMakeLists.txt里加上这句话来引用我们自己的CMakeLists.txt。


# Add USER generated sources
add_subdirectory(cmake/user)

大功告成,编译一次试试。可以看到下图,那些新加的文件都编译上了。

alt text

下载程序到板子

下载之前首先要先配置

ST-Link就不用配置了,直接开始debug就完事了。

而Jlink等是需要配置的。

配置调试器

无需任何配置

先安装jlink-gdbserver的bundle,如下图所示:

alt text

然后还要配置下launch:

问题解决方案:https://community.st.com/t5/stm32cubeide-for-visual-studio/stm32h7a3vg-debugging-with-j-link-under-vscode/m-p/826188#M960

.vscode文件夹下创建一个launch.json,然后输入以下内容:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "jlinkgdbtarget",
            "request": "launch",
            "name": "STM32Cube: STM32 Launch JLink GDB Server",
            "origin": "snippet",
            "cwd": "${workspaceFolder}",
            "preBuild": "${command:st-stm32-ide-debug-launch.build}",
            "runEntry": "main",
            "imagesAndSymbols": [
                {
                    "imageFileName": "${command:st-stm32-ide-debug-launch.get-projects-binary-from-context1}"
                }
            ]
        }
    ]
}

完事

进行调试:

如果你是STLink应该是下图所示:

alt text

如果你是JLink应该是下图所示:

alt text

然后会出现这个条,他会下载程序到板子 alt text

然后就成功下载了程序并进入了Debug

alt text