EIDE 将在内部使用 cpptool CustomConfiguraionProvider api 为你的项目自动进行配置,C/C++ 插件将根据 EIDE 提供的配置为你的项目提供补全,智能感知等功能。 因此 不要手动 新建,编写 c_cpp_properties.json 文件,如果你这样做了,C/C++ 插件将优先使用 c_cpp_properties.json,如果你的 c_cpp_properties.json 存在错误,那么项目的 补全,智能感知等功能将不能正常工作。
vscode+EIDE 替代 Keil
约 1574 字大约 5 分钟
2025-05-30
前言
我作为一名蒟蒻,在初中打 NOIP 时就难以忍受 Dev-cpp 的丑陋界面,所以使用 vscode 实属习惯
相对而言我并不过分依赖代码补全,但在嵌入式的学习中,代码的书写规范化使得代码补全功能显得尤为重要
所以使用具有更现代化的代码编辑界面及更完善的代码补全功能的 vscode 是一种更好的选择
毕竟 Keil 的代码补全功能实在拉跨,并且每次补全都会卡上一小会儿
不过笔者在写下这篇文章时对嵌入式调试的理解并不透彻,还没能领悟被捧得很高的 Keil 的调试魅力
但使用 eide 及其配套插件也能实现简单的调试功能,所以请放心食用
准备
如果你还没完成 Keil 的部署,笔者仍然建议使用 Keil 进行初步的学习, 以便更好地理解嵌入式代码编写到烧录的基本流程
另外就是,eide 可以使用 Keil 的工具链,本文也使用 Keil 的工具链进行编译
这同时也保证,基于 MDKARM 的代码可以继续在 eide 中使用
安装 Keil
如果你还没有安装 Keil,请自行移步搜索 Keil 的安装教程,当然,我指的不是免费的社区版
vscode
这话略显多余了,但还是要说一下,vscode 的安装可以直接去官网下载
安装插件
分别搜索以下插件并安装:
- Embedded IDE
- C/C++
- Cortex-Debug
- Serial Monitor(串口监视器,可选)
- RTOS Views(rtos系统视图,可选)
虽然相对而言 clangd 的智能补全和包含库跳转功能会更好用一点,不过 EIDE 文档更推荐使用 C/C++
并且根据其官方文档所言:
因此使用 C/C++ 插件无需手动配置任何文件,而 clangd 还需配置 compile_commands.json
文件,虽然可以通过 CMake 生成,但还是有些麻烦,感兴趣可以自行尝试
另外就是去设置里修改一下 EIDE 的设置 Repository: Use Proxy
,取消勾选
这个主要是因为 EIDE 能够一键安装实用工具,但是加速 github 的功能让我在使用时完全连接不上
看过相关 issue 反映是 bug,所以建议取消勾选,不过读者在看到这篇文章时说不定已经修复了
基本使用
习惯而言,用 CubeMX 生成代码后,在 EIDE 中导入生成的 .uvprojx
项目即可,和直接双击打开 Keil 没有区别
但是需要手动配置 Keil 的已启动选项,所以在你还听不懂我在说什么的时候,建议先使用 Keil 打开一次,然后再导入 EIDE
在 EIDE 操作栏中设置工具链,找到 Keil MDK,设置 UV4 工具链路径,路径应该是类似于 C:\...\Keil_v5\UV4\UV4.exe
的形式
只要你有用 Keil 打开过一次项目,EIDE 就会自动识别 Keil 已经配置好的项目编译选项,不再需要手动调整
接下来就是放入我们的代码,只需要右键项目资源就可以实现添加文件夹等操作
在 C/C++ 属性中,添加包含目录
构建配置选择 AC6,烧录配置选择 STLink 或是其他你手上有的烧录器
最后写完代码后,点击构建,烧录,均和 Keil 的操作一致
这里提供一个便捷操作,在快捷键菜单中,搜索 EIDE: Build and Flash
,将其绑定一个快捷键,这样就可以一键编译并烧录代码了
调试
在我们设置工具链的下方,安装实用工具,点击,安装 OpenOCD,会自动完成并配置目录,过程稍久,可以自行更换网络环境
另外来到设置里,我们需要勾选设置 Axf To Elf
这样就能将生成的 Axf 文件转换为 Elf 文件,方便调试器使用
右键项目资源,选择调试配置,生成调试器配置模板,这里选择 OpenOCD,会自动生成调试器模板
接下来就是正常调试了
后文
需要说明的是,EIDE 是目前我尝试过在 vscode 中诸多工具中最好配置的一个,这是建立在使用 Keil 工具链的基础上的
但是正如它的名字所示,它仍然是一个 IDE,虽然是一个插件但也相对臃肿
这里给想要更进一步获得纯净体验(瞎搞)的读者提供一些方向
如果你想删了 Keil 的话,可以尝试使用 STM32CubeIDE
,这是最简单的
如果你想要更简单的配置 UI,platformIO
也是一个不错的选择
如果你不想用上述两者,可以尝试在 vscode 中配置 Cmake + ninja + clangd + openocd
工具链,不过这需要你对配置环境有更深的理解,虽然视频不少,但在完全摸不着北的情况下依葫芦画瓢还是很难的,如果如此配置的话建议同时学习 vscode 的 task.json
的配置,这样可以更好地自动化编译烧录的过程
如果你想追求更原生的体验,可以尝试 probe-rs
,这是一个基于 Rust 的开源调试工具,需要安装 Rust 环境,相比于 OpenOCD
速度更快,并且对调试原生支持,不再需要安装 Cortex-Debug
来调试。不过在本文行文时教程还不足,需要自己摸索
虽然以上和我们学习的重心相悖,但是在配置过程中能更好地理解各类工具的区别,进而选择最适合自己的工具链