STM32CubeMX2 支持输出多种工程格式,其中CMake 工程适配STM32CubeIDE for Visual Studio Code扩展,Open‑CMSIS(CSolution)工程适配Keil Studio Pack扩展。两套扩展同时安装在同一个 VS‑Code 环境下,会出现菜单冲突、侧边栏视图互相干扰、配置互相覆盖等问题。
VS Code 自带Profile(配置配置集)功能,可以创建互相隔离的独立环境,每套 Profile 拥有独立的扩展集合、设置、快捷键、任务、代码片段,做到一套 VS‑Code 软件,切换两套完全隔离的 STM32 开发环境。本文还原 Profile 创建、切换、插件安装完整流程,梳理落地要点与排错清单。
核心价值:不用安装两份 VS‑Code 程序,通过 Profile 隔离两套嵌入式工具链,避免插件冲突。
资料获取:实战经验 | LAT1697 使用Profile管理基于VSCode的两类STM32CubeMX2的开发环境
1. 两类工程与对应 VS‑Code 扩展对应关系
| 工程输出格式 | 适用 VS‑Code 扩展 | 用途说明 |
|---|---|---|
| CMake | STM32CubeIDE for Visual Studio Code | STM 官方 CubeMX2 导出 CMake 工程,编译、调试、下载 STM32 固件 |
| Open‑CMSIS(CSolution) | Arm Keil Studio Pack(MDK v6) | MDK‑V6 CSolution 格式工程,ARM CMSIS 解决方案开发 |
直接在 Default 默认配置同时安装两套扩展,侧边栏视图、命令菜单会互相干扰,容易出现界面错乱、命令找不到等异常,推荐使用 Profile 隔离。
2. VS‑Code Profile 基础概念
Profile 可以创建多套隔离工作环境,每套 Profile 独立包含:
- Settings 用户设置
- Extensions 已安装扩展
- Keyboard Shortcuts 快捷键
- Tasks 任务配置
- Snippets 代码片段
- MCP Servers 配置
入口路径:顶部菜单 File → Preferences → Profiles;也可以点击 VS‑Code 左下角齿轮图标,打开 Profiles 菜单。
新建 Profile 时Copy from选择None代表创建完全空环境,不继承默认配置里的任何扩展,这是本文推荐的创建方式。
3. 实操步骤一:新建 CubeIDE 空 Profile(用于 CMake 工程)
- 打开菜单:
File → Preferences → Profiles → New Profile; - 名称填写:
CubeIDE; Copy from选项选择None,所有内容源全部设置为None,创建纯净空环境;- 点击
Create完成 Profile 创建,VS‑Code 自动切换进入CubeIDE环境; - 切换完成后打开扩展市场,搜索
STM32CubeIDE for Visual Studio Code,执行 Install 安装; - 安装完毕,左侧活动栏仅显示 STM32Cube 相关功能入口,无 Keil 相关组件。
4. 实操步骤二:新建 Keil 空 Profile(用于 CSolution 工程)
- 再次打开 Profiles 菜单,点击
New Profile; - 名称填写:
Keil; Copy from同样选择None,全部内容源设置为None;- 点击
Create,VS‑Code 自动切换至Keil环境; - 扩展市场搜索
Keil Studio Pack(ARM Keil Studio Pack (MDK v6)),点击 Install 安装; - 环境内仅保留 Keil CMSIS Solution 相关视图。
5. Profile 环境之间切换方法
两种切换途径:
- 顶部菜单栏:
File → Preferences → Profiles,点击目标 Profile 名称,完成切换,VS‑Code 窗口重载生效; - 点击 VS‑Code 左下角齿轮图标,点开
Profiles(当前环境),直接选择目标 Profile。
切换后窗口会短暂重载,侧边栏、可用扩展全部跟随当前 Profile 变化。
- 处理 CMake 格式 STM32CubeMX2 工程:切换至
CubeIDEProfile; - 处理 CSolution(Open‑CMSIS)工程:切换至
KeilProfile。
6. 工程落地注意事项
- 必须选择 Copy‑from=None:新建两套嵌入式 Profile,务必选择来源
None,不要继承 Default 默认配置,否则会把 Default 里面全部扩展带入新 Profile,达不到隔离效果。 - Profile 只隔离扩展、设置、快捷键等编辑器配置;磁盘上的工程文件本身不受 Profile 影响。
- 不要在 Default 默认 Profile 同时安装 STM32CubeIDE 扩展与 Keil Studio Pack,尽量 Default 作为干净通用环境,嵌入式开发全部使用两套独立 Profile。
- 每次切换 Profile VS Code 窗口会重载,属于正常现象。
7. 故障排查清单
- 两套 Profile 里面还能看到另外一套的嵌入式扩展:核查新建 Profile 时
Copy from是否设置为None;如果选 Default,会复制默认环境全部扩展,隔离失效,建议重建 Profile。 - 切换 Profile 之后找不到对应 STM32/Keil 菜单:确认已经切换到正确 Profile;扩展需要在当前激活 Profile 下面重新安装,不同 Profile 的扩展互相独立。
- 打开 CMake 工程,STM32Cube 菜单不显示:确认已经切换至
CubeIDEProfile;确认该 Profile 内已经完整安装STM32CubeIDE for Visual Studio Code扩展包。 - CSolution 工程看不到 CMSIS‑Solution 视图:确认当前是
KeilProfile,该环境下已经安装 Keil Studio Pack。
8. 小结
- STM32CubeMX2 输出 CMake、Open‑CMSIS (CSolution) 两类 VS‑Code 工程,分别对应两套不同扩展,共存容易产生 UI、命令冲突,使用 VS‑Code Profile 实现环境隔离,无需多份 VS‑Code 安装包。
- 最佳实践:分别创建
CubeIDE、Keil两套来源为 None 的空 Profile,每套环境只安装自己对应的嵌入式扩展,互相完全隔离。 - 通过 File 菜单或者左下角齿轮图标完成 Profile 切换,切换时 VS Code 窗口重载。工程磁盘文件不受 Profile 影响,仅编辑器的扩展、配置被隔离。
- 该方案解决两套嵌入式扩展互相干扰问题,让各自侧边栏、命令菜单保持干净整洁,降低工程调试时环境类疑难问题。
9. FAQ
Q:我可以直接复制 Default 配置创建 Profile,而不是 None 吗?
A:可以,但会把 Default 下所有已装扩展全部复制过来,会失去隔离意义;嵌入式开发场景推荐 Copy‑from=None 空配置。
Q:Profile 会不会修改磁盘上面的 ioc 工程、CMake、csolution 源文件?
A:不会,Profile 只管理 VS‑Code 编辑器本身扩展和设置,工程文件完全独立保存在磁盘。
Q:可以把 Profile 配置导出给同事共享吗?
A:VS‑Code 支持 Profile 导出导入功能,但需要同事本地重新安装对应扩展。
免责声明:本文全部基于 ST 官方 LAT1697 文档,实际环境配置请以 VS‑Code 官方帮助文档、STM32CubeMX2 用户手册为准。
177