锦鈓 发表于 2026-5-2 21:12:40

【萌新指南-02】使用 VScode + keil 实现(代码提示)编辑+编译程序

【萌新指南】序列02--使用VScode+Keil5实现(代码提示)编辑+编译程序
其他文章,点击跳转:
【萌新指南】序列00--keil5安装指南(官方渠道方法下载并安装C251, C51)
【萌新指南】序列01--创建一个拥有个人风格的Keil5工程模板及一些Keil5的基本设置




第一步 下载并安装VS code
VScode(https://code.visualstudio.com/)是免费开源的,由于我已经安装好了,并且网络上也有大量的教程,因此这一步便不过多叙述。



第二步 VScode 的初步优化
1、安装中文插件 进行汉化

大家第一次打开 VScode 时,应该是英文界面,需要在插件商店搜索 Chinese 插件进行汉化。
先切换到扩展界面,再搜索汉化插件【Chinese】,点击install安装。
安装完成之后,右下角会提示需要切换语言并重启后生效【Change Language and Restart】,点击重启即可。
注:右侧工具栏的顺序可能与我的不一致(我可能切换了排序顺序),大家看这个方块的图标即可,或者按快捷键ctrl+shift+X 切换到扩展界面

2、安装C语言相关插件
我们常使用C语言进行单片机编程,因此,想要轻松阅读编辑代码,需要下载相关的插件。
1.未安装插件的界面
先打开一个官方的例程试试看是什么样子的

也可以,点击文件【File】,打开文件夹。


打开文件夹之后,再打开main.c文件,在右下角可以看见编辑器已经识别出C语言了并提示我们安装对应的插件,
同时还可以看见注释都变成了乱码,这是因为官方例程是使用GBK编码保存的,而系统默认都是UTF-8编码,编码的问题稍后再介绍。

没有安装插件时,我们无法通过长按Ctrl键,单击跳转。并且右键也没有跳转选项。

2.安装C语言插件
还是回到扩展界面,搜索【C】,安装C/C++插件,把这4个都安装上,或者直接点击之前弹出的提示框一键安装。

安装完插件后,可以进行快捷跳转了,右键也多了很多功能。


3.安装链接 keil 的插件
继续在插件商城里,搜索【Keil uVision Assistant】,切记不要安装错了,因为我了解到的,目前只有这个插件支持C51/C251/ARM,其他的一般不支持C251。

安装完成后,右键设置一下参数。


可以参考一下官方案例,进行配置。
项分别填入MDK、C51、C251。值填入keil5的安装目录。
注:如果你是参考【萌新指南】序列00--keil5安装指南(官方渠道方法下载并安装C251, C51),安装的keil5,那么3种编译器的路径都是一样。
如果不是,请按照你的安装目录为准。

我的MDK、C51、C251安装目录都是在 D:\Keil_v5

因此我配置成这样就好了


这个插件配置完成后,回到资源管理器(侧边工具栏中文件的图标)。就可以看到有一个keil uvison project目录

点开这个目录,就会发现Vscode已经自动识别出工程了,并生成了一个配置文件夹。

这3个按键与keil中的是一样的效果。


使用全部编译后,也是成功编译了。但是编译结果与keil中的有点差异(PS:删除),而且编译速度也远远不如keil。
虽然能用,但十分不建议用这个插件。
建议使用VScode编辑程序代码,使用keil5进行编译调试。


4.推荐的插件
a.Error Lens 更直观的报错提示



b.Code Translate 鼠标悬停在英文上,可以翻译单词(长句好像不行)


c.Doxygen Documentation Generator 更直观的注释



不过多缀叙了,本人在单片机中常用的插件如下


3、VScode 的基础设置
打开右上角File中的首选项,设置


1.乱码问题
搜索Encoding,将UTF-8修改为GBK编码,如果你默认使用的时UTF-8编码,则不需要修改。



2. Ctrl + 鼠标滚轮:缩放代码字体大小
搜索 Mouse Wheel Zoom,根据需求勾选


3.TAB键的设置(曾经打开过的文件不会采用修改后的配置)
搜索 TAB ,可以根据个人习惯设置





如果你希望按下TAB键时,使用空格替代制表符,那么这个(Insert Spaces)需要勾选上。


ps:如果你有多种编程语言的写作规范需求,也可以了解一下 EditorConfig 这个插件

4.无法找到头文件的报错(未安装keil插件的情况,麻烦!每次打开新工程都要重新配置。安装了请看本条目的第5点)
这个报错是因为没有告诉VScode头文件的位置在哪里,所以会报错,但实际不会印象keil5编译。
接下来打开VScode的配置文件.。


或者点击上方搜索栏,点击显示并运行命令,然后搜索C/C++
或者使用快捷键 Ctrl+shift+P,然后搜索C/C++
或者直接在上方搜索栏,搜索>C/C++


可以添加一个新的配置,名为 MCU。也可以直接修改自动生成的win32配置,因为每次打开一个新的工程都要重新配置。


如果你的电脑中安装了GCC编译器(MingGW),这里会自动识别出来。
如果没有安装,空着也没事,毕竟我们是使用keil5编译的,这一步的目的是为了消除头文件报错

然后在 包含路径 中加入keil5的头文件路径,修改成自己的,在后面补上 /**

例如 D:/Keil_v5/C51/INC/**

例如 D:/Keil_v5/C251/INC/**

然后在 定义 中加入keil5的常用定义,可以消除 xdata 等在VScode中的报错

__C251__
__VSCODE_C251__
reentrant=
compact=
small=
large=
data=
idata=
pdata=
bdata=
edata=
xdata=
code=
bit=char
sbit=char
sfr=char
sfr16=int
sfr32=int
interrupt=
using=
far=
_at_=
_priority_=
_task_=

最终效果如下


5.无法找到头文件的报错(安装了keil插件的情况)
安装了keil插件,我们每次点开插件,都会自动生成第4点的配置,无需手动设置。

但有时候还是会出现这样的报错,这是怎么回事呢?


我们只需打开keil5的头文件目录便知晓。插件自动添加的头文件路径跟keil5中的一模一样,且多了一个C251的头文件路径

STC的头文件也在这个目录的子文件中,而想要调用子文件中的文件,只需在路径后补上 斜杠 星星星星即可。

因此我们直接在创建keil5工程时,顺手在头文件路径中补上带斜杠 星星星星的路径即可。
D:/Keil_v5/C51/INC/**
D:/Keil_v5/C251/INC/**
然后keil5点一下编译,vscode也会瞬间同步。

此时报错便消失了

唯一的遗憾是 Vscode 无法消除中断函数的报错


总结

Vscode的玩法有很多,我这里介绍的也只是冰山一角。
最后还是建议同志们使用VScode作为代码的编辑器,keil5作为程序的编译器使用。
因为在编译调试方面而言,keil5都是完胜vscode的,当然不排除有大神能写出优于keil5的编译链方法。
其次Vscode中也有很多AI编程的插件,但现阶段而言,本人认为Ai提供的程序还是在参考或部分可用的阶段,如果完全使用AI开发的程序做项目,后期出了问题都无从下手,让ai自己修复也可能会越改越多BUG。因此只推荐各位使用AI作为助手,辅助修改那些重复的工作,或咨询不明白的问题,本人在此不做Ai相关的插件推荐,各位请自行查找合适自己的AI助手进行安装使用。







锦鈓 发表于 2026-5-2 23:59:28

针对中断函数报错无法消除的问题:
就之前而言,我一般是在VScode中注释掉interrupt x
然后编译之前在打开,这样操作十分不便利,甚至已经习惯了这个报错。



然而刚刚复盘的时候,突然发现在VScode中的keil插件,会自动补充两个定义
"__VSCODE_C251__" 和 "__VSCODE_C51__"


那么我们就可以在头文件中,插入一段宏定义去实现,在VScode中注释interrupt x,并且不会影响到keil5编译。
//========================================================================
//                               VScode优化
//========================================================================
#if defined(__VSCODE_C251__) || defined(__VSCODE_C51__)
#define interrupt(x)
#else
#define interrupt(x)    interrupt x
#endif

报错消失,如此一来,便不留遗憾了{:ciya:}


狂热主宰 发表于 2026-5-3 00:48:29

使用vscode编码体验好
而keil调试功能好

凌伤 发表于 2026-5-3 12:04:40

到底转不转vscode呢

锦鈓 发表于 2026-5-3 12:23:00

凌伤 发表于 2026-5-3 12:04
到底转不转vscode呢

keil5是刚需,无论用不用vscode,都需要安装keil5,芯片配置、文件导入、头文件路径等等还是要在keil5中设置的。
vscode作为代码编辑器使用,提供了优美的界面效果、更好的错误提示、一键补全等功能,只能说是锦上添花,提升写作效率{:hanxiao:},上限和下限都有所提升。

凌伤 发表于 2026-5-4 22:05:01

锦鈓 发表于 2026-5-3 12:23
keil5是刚需,无论用不用vscode,都需要安装keil5,芯片配置、文件导入、头文件路径等等还是要在keil5中 ...

明白了,感谢

_奶咖君_ 发表于 2026-5-7 10:47:08

欸,竟然 从VScode插件上 编译 和 keil上编译的结果有差异。。稍微有点儿后怕。。

我这里一直都是用插件的功能编译。几乎不打开keil。除非要添加新的文件。

C251我们目前没有用,一直就用C51,,我看看这个会不会有差异。。

锦鈓 发表于 2026-5-7 14:45:08

_奶咖君_ 发表于 2026-5-7 10:47
欸,竟然 从VScode插件上 编译 和 keil上编译的结果有差异。。稍微有点儿后怕。。

我这里一直都是用插件的 ...

感谢提醒,应该都是一样,只是在keil上面修改了魔术棒的参数后,必须要点一下编译,vscode那边才会同步,否则就是按上一次的keil配置编译的。重新测试了一下,才发现这个规律

_奶咖君_ 发表于 2026-5-7 20:37:34

锦鈓 发表于 2026-5-7 14:45
感谢提醒,应该都是一样,只是在keil上面修改了魔术棒的参数后,必须要点一下编译,vscode那边才会同步, ...

哦哦哦 那我就宽心了,,,

一般我是再keil这里修改完任何配置之后,,点一下全部保存,然后再去VScode上接着操作

wuzhengmin 发表于 2026-5-28 20:07:41

请教一下版主:
下图中的报错,应该如何设置才能消除?
页: [1] 2
查看完整版本: 【萌新指南-02】使用 VScode + keil 实现(代码提示)编辑+编译程序