STM32CubeIDE for Visual Studio Code使用入门
前言
去年年底STM32CubeIDE更新了2.0架构,将原本IDE中打包的CubeMX给移除了,精简了体积,这个改动使这两款工具实现互操作的方式将与IAR EWARM、Keil MDK-ARM和STM32CubeIDE for VS Code相同。不过新版的IDE还是基于Eclipse的,很多Eclipse的问题还是存在,体验上还是差点的。现在开始使用STM32CubeIDE for VS Code进行开发,体验上好了不少。这篇文章将记录相关使用的内容。
官方说明:https://dev.st.com/stm32cube-docs/stm32cubeide-vscode/latest/en/index.html
安装与环境管理
首先需要安装VS Code:https://code.visualstudio.com/
然后在VS Code中安装STM32CubeIDE for VS Code扩展:
这个扩展会安装一系列十多个关联的扩展,如果只是进行STM32的开发,直接这么用也没问题,不过如果需要使用VS Code进行很多不同类型的项目开发的时候,各个插件间可能会有兼容性问题,所以最好使用下面文章中的配置方式进行环境隔离:
《用VS Code的配置文件 (Profiles)实现不同项目装载不同扩展》
https://blog.csdn.net/Naisu_kun/article/details/162452562
另外如果直接通过VS Code来新建项目的话会稍微不是那么方便,通常可以使用 STM32CubeMX 来新建项目:
https://www.st.com/en/development-tools/stm32cubemx.html
需要注意的是目前 STM32CubeMX2 只支持 STM32C5 系列。
新建项目与编译下载
新建项目
新建项目这里通过STM32CubeMX进行,唯一需要注意的是在生成项目的时候IDE需要选择 CMake :
项目创建后使用VS Code打开目录即可,打开时会提示需要打开的配置。这个也可以通过CMake扩展中进行选择:
编译
项目构建成功后可以直接进行编译:
此外编译也可以通过命令进行:
下载
现在版本的STM32CubeIDE for Visual Studio Code中好像是没办法直接仅下载编译好的固件到芯片中了,图形界面上只能通过调试时下载了,不过可以通过命令行进行下载:
cube programmer -c port=SWD -e all 下载编译生成的所有固件:
cube programmer -c port=SWD -d .\test.elf 下载指定固件:
调试
调试的时候最好i是线创建一个调试用的配置文件:
然后选择配置文件进行调试:
调试时常用的窗口都在界面上显示,有的窗口可能折叠起来了,需要用的时候打开就行:
调试用的配置文件中可以设置非常多的参数选项,可以实现很多特殊的功能,除了文章一开始的说明文档,另外也可以参考下面内容:
STM32CubeIDE for VS Code debug configuration (launch.json)
https://community.st.com/stm32-mcus-60/stm32cubeide-for-vs-code-debug-configuration-launch-json-161009
调试中比较常用的功能比如 Live watch 测试如下:
Debugging a running target 测试如下:
- mian函数运行一段时间后调用下面函数手动引发HardFault,用来模拟实际的场景;
void TriggerHardFault_UndefInstr(void) { __asm volatile("UDF #0"); // 未定义指令,立即触发 HardFault } - 使用命令烧录程序到芯片,并使芯片运行;
- 调试配置文件关闭入口点和复位,这样进入调试时就不会影响芯片正在运行的状态,可以看到相关调用堆栈;

CMake
上面的开发流程下,整个项目属于CMake项目,后面项目的代码组织,编译控制等都需要通过CMake进行。默认生成的CMake相关的内容集中在项目目录下的 cmake 目录和项目根目录下两个 CMake 开头的文件:
- cmake/stm32cubemx/CMakeLists.txt: Managed by CubeMX. Do not modify it!
- cmake/gcc-arm-none-eabi.cmake: Contains toolchain settings. Users can modify this file.
- CMakeLists.txt: Contains high-level project definition. Users can modify this file.
- CMakePresets.json: Contains CMake presets. Users can modify this file.

我们比较常打交道的就是项目根目录下的 CMakeLists.txt ,比如我们需要添加自己的代码就可以像下面那样进行添加(这里的sources是项目目录下的一个目录):
除了添加代码,像是设置编译优化选项等功能都是在这个 CMakeLists.txt 中进行的。更多内容可以参考官方说明:
https://dev.st.com/stm32cube-docs/stm32cubeide-vscode/latest/en/docs/markup/basic_concepts/cmake.html#
后记
最近这两年很多单片机常见推出的官方的IDE越来越多的从之前基于Eclipse的架构慢慢的迁移到了基于VS Code架构,这其中有ST这样的VS Code扩展的形式,也有直接基于开源的VS Code二次开发的版本,使用体验上真的是好了一大截。
更多推荐



所有评论(0)