Keil vs VSCode vs STM32CubeIDE:嵌入式IDE对比

Keil vs VSCode vs STM32CubeIDE:嵌入式IDE对比

新手入门STM32,第一个问题就是"用什么IDE"。
网上推荐一大堆,但很多人连"IDE"“编译器”"调试器"都分不清,更别提CMake、OpenOCD这些词了。
这篇先用大白话解释这些概念,再对比三种主流IDE,用具体场景帮你选对工具。


一、先搞懂几个基础概念(新手必看)

在看IDE对比之前,先搞清楚这些反复出现的术语是什么,不然后面全看不懂。

1.1 IDE是什么?

IDE(Integrated Development Environment,集成开发环境)= 把"写代码+编译+下载+调试"集成在一起的软件。

你平时写C语言用的Dev-C++、VC6.0就是IDE。STM32开发也需要IDE,但比Dev-C++多了"下载到芯片"和"在线调试"功能。

1.2 编译器是什么?

编译器= 把你写的C代码翻译成芯片能执行的机器码(.hex/.bin文件)。

不同芯片用不同编译器:

  • ARMCC/ARMCLANG:Keil自带的编译器,速度快、体积小,但收费
  • GCC(ARM GCC):开源免费编译器,VSCode和CubeIDE都用它,速度比ARMCC慢一点

编译器的好坏影响编译速度和生成代码的大小。新手感受最深的是编译速度——一个大项目ARMCC编30秒,GCC可能要1分钟。

1.3 CubeMX是什么?

STM32CubeMX(简称CubeMX)= ST官方出的图形化配置工具

不用CubeMX的话,你要手动写几百行代码初始化GPIO/串口/定时器/时钟。用了CubeMX,你在图形界面点几下(选引脚、选功能、设参数),它自动生成初始化代码,你只需要在main()里写业务逻辑。

没CubeMX: 手动查Datasheet → 手动配置寄存器 → 手动写几百行初始化代码 → 容易出错 有CubeMX: 打开CubeMX → 点选PA9为USART1_TX → 设波特率115200 → 一键生成代码 → 完事

Keil不自带CubeMX(要单独下载),CubeIDE自带CubeMX(在IDE里直接用)。

1.4 调试器是什么?

调试器= 连接电脑和STM32的硬件工具,用来下载程序和在线调试(打断点、看变量)。

常见的调试器:

  • ST-Link:ST官方出的调试器,十几块钱,用SWD接口
  • J-Link:SEGGER公司出的调试器,功能更强但贵(正版几百块)

SWD(Serial Wire Debug,串行线调试)是STM32的调试接口,只需2根线(SWDIO+SWCLK)就能下载和调试。

1.5 CMake/Makefile是什么?

CMake/Makefile= 构建工具,告诉编译器"哪些文件要编译、怎么链接"。

Keil不需要这些——你在Keil的图形界面把.c文件加进工程,Keil自己管。但VSCode没有图形化的工程管理,需要你写CMake/Makefile来告诉编译器怎么编译。

新手不需要学CMake/Makefile,用Keil或CubeIDE就行。这是VSCode方案才需要的。

1.6 OpenOCD是什么?

OpenOCD(Open On-Chip Debugger)= 开源调试代理。

VSCode本身不能直接控制ST-Link/J-Link调试STM32,需要OpenOCD做"中间人":VSCode发调试命令 → OpenOCD翻译 → 控制ST-Link → 操作STM32。

Keil和CubeIDE自带调试支持,不需要OpenOCD。只有用VSCode调试时才需要装。

1.7 CI/CD是什么?

CI/CD(持续集成/持续部署)= 自动化编译发布流程。代码推到Git仓库后,服务器自动编译、测试、打包。这是公司项目才用的,个人学习不需要管。


二、三种IDE简介

IDE厂商特点适合谁
Keil MDKARM官方嵌入式老大哥,教程最多刚入门的学生
VSCode + 插件微软颜值高、编辑器最强有基础的开发者
STM32CubeIDEST官方免费、内置CubeMX、调试强不想花钱的人

三、Keil MDK

3.1 优点

  • 教程最多:B站90%的STM32教程基于Keil,跟着学不会卡住
  • 调试强大:断点、变量监控、寄存器查看、Logic Analyzer(逻辑分析仪,能在软件里看GPIO/ADC波形)
  • 编译快:ARMCC/ARMCLANG编译器(就是前面说的收费编译器)效率高
  • 工程管理简单:图形界面添加文件,不用写Makefile
  • 下载调试一键搞定:点一下就编译+下载+开始调试

3.2 缺点

  • 收费:正版几千美元,免费版限制32KB Flash(代码大了编不过)
  • 界面老旧:像Windows XP时代的UI,不好看
  • 编辑器弱:代码补全、跳转都不如VSCode
  • 只支持Windows(有Linux版但很少用)
  • 不自带CubeMX:需要单独下载CubeMX生成代码后导入Keil

3.3 具体场景

假设你在做一个温湿度采集器,用Keil开发:

  1. 先用CubeMX配置引脚和I2C,生成代码
  2. 用Keil打开生成的工程,写SHT30驱动和主程序
  3. 点"Build"编译,点"Download"下载到板子
  4. 点"Debug"进入调试,打断点看传感器数据
    全程不需要碰命令行,适合刚入门的新手。

3.4 适合人群

  • 学生入门:教程多,跟着B站学不会卡住
  • 学校实验室用Keil的(大部分学校都是)
  • 需要调试底层问题的

四、VSCode + 插件

4.1 配置方案

VSCode本身只是个文本编辑器(虽然很强),开发STM32需要一堆插件和工具配合:

VSCode编辑器(写代码) + C/C++插件(代码补全/跳转) + Cortex-Debug插件(调试界面) + CMake/Makefile(告诉编译器怎么编译) + ARM GCC工具链(编译C代码的工具) + OpenOCD(连接调试器的中间人) + ST-Link/J-Link(硬件调试器)

看到没?VSCode方案要装这么多东西,新手配一个可能就要一整天。

4.2 优点

  • 编辑器最强:代码补全、跳转、重构、Git集成都是顶级体验
  • 颜值高:主题丰富,界面现代
  • 跨平台:Windows/Linux/Mac都能用
  • 免费:VSCode和GCC工具链都免费
  • 高度可定制:想加什么功能装插件

4.3 缺点

  • 配置复杂:要装一堆插件和工具,配错一个就编译不过,新手不知道哪的问题
  • 调试不如Keil直观:Cortex-Debug够用但没Keil的寄存器查看方便
  • 不自带CubeMX:需要单独用CubeMX生成再导入

4.4 具体场景

假设你已经有半年STM32经验了,觉得Keil编辑器太难用(代码补全像没有一样),想换VSCode:

  1. 装VSCode + C/C++插件 + Cortex-Debug插件
  2. 装ARM GCC工具链 + CMake + OpenOCD
  3. 写CMakeLists.txt告诉编译器怎么编译
  4. 配launch.json告诉Cortex-Debug怎么调试
  5. 配好之后,编辑代码享受VSCode的补全和跳转,编译调试也能在VSCode里完成
    适合有一定基础、愿意折腾配置的人。

4.5 适合人群

  • 有一定基础的开发者(至少能独立配环境)
  • 追求编辑体验的人
  • Linux/Mac用户(Keil不支持Mac/Linux)
  • 做开源项目的人

五、STM32CubeIDE

5.1 简介

ST官方基于Eclipse开发的免费IDE。内置CubeMX,一站式解决配置+开发+调试,不用在CubeMX和IDE之间来回切换。

Eclipse是一个开源的IDE框架,很多IDE基于它开发(如CubeIDE、Nordic的nRF Connect SDK)。优点是功能丰富,缺点是界面复杂、启动慢。

5.2 优点

  • 完全免费:无Flash大小限制,代码写多大都行
  • CubeMX内置:在IDE里直接图形化配置引脚和外设,一键生成代码,不用单独开CubeMX
  • 调试强大:支持断点/变量监控/寄存器查看/SWD调试,用ST-Link直接调试
  • ST官方支持:新出的芯片第一时间支持
  • 跨平台:Windows/Linux/Mac

5.3 缺点

  • 基于Eclipse:界面复杂,启动慢(打开要等好几秒)
  • 编辑器一般:不如VSCode,比Keil略好一点
  • 编译较慢:用GCC编译器(前面说的免费但较慢的编译器)
  • 吃内存:建议电脑8GB以上内存
  • 教程较少:B站教程不如Keil多

5.4 具体场景

假设你不想花钱买Keil,又不想折腾VSCode那一堆配置,用CubeIDE:

  1. 打开CubeIDE → 新建工程 → 选芯片型号
  2. 在内置的CubeMX界面里配置引脚、时钟、I2C
  3. 一键生成代码,直接在同一个IDE里写主程序
  4. 点"Run"编译下载,点"Debug"调试
    全程在一个软件里完成,不用来回切换。

5.5 适合人群

  • 不想花钱买Keil的学生
  • 喜欢一体化工具链、不想折腾配置的
  • 用ST芯片的(官方支持最好)

六、横向对比

对比项Keil MDKVSCodeCubeIDE
价格收费(免费版32KB限制)免费免费
编辑器体验★★(弱)★★★★★(最强)★★★(一般)
调试体验★★★★★(最强)★★★(够用)★★★★(好)
配置难度★★(简单)★★★★★(复杂)★★★(中等)
编译速度★★★★★(最快)★★★★(快)★★★(较慢)
CubeMX集成需单独开需单独开✅内置
教程数量★★★★★(最多)★★★(少)★★★(少)
跨平台❌仅Windows✅全平台✅全平台

七、我的推荐方案(用具体场景说)

7.1 场景1:刚入门的大一/大二学生 → Keil

你的情况: - 刚学STM32,看B站教程学 - 还不会配置开发环境 - 学校实验室用Keil 推荐:Keil 理由: - 90%的教程基于Keil,跟着视频不会卡住 - 配置最简单:装好Keil→选芯片→写代码→一键编译下载 - 调试最直观:断点、变量、寄存器一目了然

7.2 场景2:有基础了,嫌Keil编辑器难用 → Keil + VSCode混用

你的情况: - 已经会用Keil了 - 觉得Keil代码补全太烂,跳转不准 - 想用VSCode写代码但又不想放弃Keil的编译调试 推荐:Keil + VSCode混用 做法: Keil:负责编译和调试(用Keil的工程文件.uvprojx) VSCode:负责编辑代码(用VSCode打开同一个目录) 两者共用同一套代码文件,编辑时用VSCode享受补全跳转, 编译下载调试时切回Keil。

这是最流行的组合:享受VSCode的编辑体验,同时用Keil的编译和调试。

7.3 场景3:不想花钱,又不想折腾配置 → CubeIDE

你的情况: - Keil免费版32KB不够用了 - 不想花钱买Keil - 不想折腾VSCode那一堆插件配置 推荐:CubeIDE 理由: - 完全免费,无Flash限制 - CubeMX内置,一站式配置+开发+调试 - 装一个软件就能用,不用配一堆工具

7.4 场景4:老手追求极致体验 → VSCode + CMake + GCC

你的情况: - 有一定经验,能独立配环境 - 用Linux/Mac开发 - 做开源项目或需要CI/CD自动化编译 推荐:VSCode + CMake + ARM GCC + OpenOCD 理由: - 编辑体验最佳 - 跨平台 - 但配置门槛高,有经验后再用

八、Keil + VSCode混用配置(实操步骤)

8.1 第一步:Keil创建工程

  1. 打开Keil → Project → New Project
  2. 选芯片型号(如STM32F103C8)
  3. 在Manage Run-Time Environment里勾选需要的组件(或用CubeMX生成后导入)
  4. 配置时钟、外设(用CubeMX的话这步在CubeMX里做)
  5. 确认能编译下载

如果你不会在Keil里建工程,先看我之前的《点亮LED的3种方法》那篇,里面有完整步骤。

8.2 第二步:用VSCode打开工程目录

在VSCode里 → File → Open Folder → 选Keil工程所在的文件夹。

8.3 第三步:安装VSCode插件

插件作用
C/C++代码补全、跳转、语法检查(必装)
C/C++ Snippets常用代码片段
Include Autocomplete头文件自动补全
GitLensGit增强(看代码是谁什么时候改的)
Keil Assistant在VSCode里直接编译Keil工程(不用切Keil)

装了Keil Assistant插件后,可以在VSCode里直接点"Build"编译Keil工程,不用切回Keil。

8.4 第四步:配置c_cpp_properties.json

让VSCode知道头文件路径,实现代码跳转(不然红线一片,跳转不了):

在VSCode里按Ctrl+Shift+P→ 输入C/C++: Edit Configurations (JSON)→ 自动生成.vscode/c_cpp_properties.json

{"configurations":[{"name":"STM32","includePath":["${workspaceFolder}/**","${workspaceFolder}/Drivers/STM32F1xx_HAL_Driver/Inc","${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include","${workspaceFolder}/Inc"],"defines":["STM32F103xB",/* ← 改成你的芯片型号,如F407用STM32F407xx */"USE_HAL_DRIVER"/* ← 表示使用HAL库,不用改 */],"cStandard":"c99"}]}

defines里的STM32F103xB要根据你的芯片型号改:F103C8用STM32F103xB,F103ZE用STM32F103xG,F407用STM32F407xx。这个宏告诉编译器你用的具体芯片型号,影响头文件里的寄存器定义。


九、常见踩坑

坑1:Keil免费版32KB限制

现象:代码超过32KB时编译报错Error: L6406E: No space in execution regions

解决

  • 方案1:去Keil官网申请教育版授权(免费),网址 https://www.keil.com/pr/article/1286.htm ,用学校邮箱申请
  • 方案2:换用CubeIDE(完全免费无限制)
  • 方案3:优化代码体积(开启-O优化,删除无用代码)

坑2:VSCode代码跳转不对/红线一片

原因c_cpp_properties.jsonincludePath没配全,或者defines里的芯片型号不对。

解决:把所有头文件目录都加到includePath,确认defines里的芯片型号和Keil工程一致。

坑3:CubeIDE编译慢

原因:GCC编译器比Keil的ARMCC慢。

解决

  • 开启并行编译:Project → Properties → C/C++ Build → Behavior → 勾选"Enable parallel build"
  • 调试时用-O0(不优化),发布时用-Os(优化体积)

十、总结

你的情况推荐
刚入门,看B站教程学Keil(教程多,配置简单)
有基础了,嫌Keil编辑器难用Keil + VSCode混用(编辑用VSCode,编译用Keil)
不想花钱,不想折腾配置CubeIDE(免费,一体化)
老手,用Linux/Mac,做开源VSCode + CMake + GCC

一句话总结:新手用Keil入门(教程多配置简单),进阶用Keil+VSCode混用(编辑体验好),不想花钱用CubeIDE(免费一体化),老手折腾VSCode+GCC


相关文章推荐

  • Git版本管理:从零开始,用学生项目讲透每个命令
  • STM32入门第一课:点亮LED的3种方法

作者:嵌入式阿蔡 | 一枚准大四的嵌入式菜鸟,正在打牢基础,记录成长