找回密码
 立即注册
查看: 1066|回复: 20

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

[复制链接]
已绑定手机

39

主题

208

回帖

2447

积分

荣誉版主

Rbowlystar

积分
2447
发表于 2026-5-2 21:12:40 | 显示全部楼层 |阅读模式
【萌新指南】序列02--使用VScode+Keil5实现(代码提示)编辑+编译程序
其他文章,点击跳转:
【萌新指南】序列00--keil5安装指南(官方渠道方法下载并安装C251, C51)
【萌新指南】序列01--创建一个拥有个人风格的Keil5工程模板及一些Keil5的基本设置


【萌新指南】使用VScode keil 实现编辑 编译程序.pdf (3.36 MB, 下载次数: 55)

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

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


大家第一次打开 VScode 时,应该是英文界面,需要在插件商店搜索 Chinese 插件进行汉化。
先切换到扩展界面,再搜索汉化插件【Chinese】,点击install安装。
安装完成之后,右下角会提示需要切换语言并重启后生效【Change Language and Restart】,点击重启即可。
注:右侧工具栏的顺序可能与我的不一致(我可能切换了排序顺序),大家看这个方块的图标即可,或者按快捷键ctrl+shift+X 切换到扩展界面
截图202605022024152116.jpg
2、安装C语言相关插件
我们常使用C语言进行单片机编程,因此,想要轻松阅读编辑代码,需要下载相关的插件。
1.未安装插件的界面

先打开一个官方的例程试试看是什么样子的
截图202605022025123243.jpg
也可以,点击文件【File】,打开文件夹。

截图202605022025347078.jpg

打开文件夹之后,再打开main.c文件,在右下角可以看见编辑器已经识别出C语言了并提示我们安装对应的插件,
同时还可以看见注释都变成了乱码,这是因为官方例程是使用GBK编码保存的,而系统默认都是UTF-8编码,编码的问题稍后再介绍。
截图202605022035038794.jpg
没有安装插件时,我们无法通过长按Ctrl键,单击跳转。并且右键也没有跳转选项。
截图202605022036273395.jpg
2.安装C语言插件
还是回到扩展界面,搜索【C】,安装C/C++插件,把这4个都安装上,或者直接点击之前弹出的提示框一键安装。
截图202605022036432673.jpg
安装完插件后,可以进行快捷跳转了,右键也多了很多功能。
截图202605022036599147.jpg
截图202605022037072941.jpg
3.安装链接 keil 的插件
继续在插件商城里,搜索【Keil uVision Assistant】,切记不要安装错了,因为我了解到的,目前只有这个插件支持C51/C251/ARM,其他的一般不支持C251。
截图202605022037465660.jpg
安装完成后,右键设置一下参数。
截图202605022038072625.jpg

可以参考一下官方案例,进行配置。
项分别填入MDK、C51、C251。值填入keil5的安装目录。
注:如果你是参考【萌新指南】序列00--keil5安装指南(官方渠道方法下载并安装C251, C51),安装的keil5,那么3种编译器的路径都是一样。
如果不是,请按照你的安装目录为准。
截图202605022038232043.jpg
我的MDK、C51、C251安装目录都是在 D:\Keil_v5
截图202605022040005381.jpg
因此我配置成这样就好了
截图202605022040138512.jpg

这个插件配置完成后,回到资源管理器(侧边工具栏中文件的图标)。就可以看到有一个keil uvison project目录
截图202605022040337118.jpg
点开这个目录,就会发现Vscode已经自动识别出工程了,并生成了一个配置文件夹。
截图202605022040527102.jpg
这3个按键与keil中的是一样的效果。
截图202605022041037161.jpg

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

截图202605022104258718.jpg

4.推荐的插件
a.Error Lens 更直观的报错提示
截图202605022041478707.jpg
截图202605022041537712.jpg

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

c.Doxygen Documentation Generator 更直观的注释
截图202605022042289790.jpg
截图202605022042544374.jpg

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

3、VScode 的基础设置
打开右上角File中的首选项,设置
截图202605022043244563.jpg

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

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

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


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

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


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

或者点击上方搜索栏,点击显示并运行命令,然后搜索C/C++
或者使用快捷键 Ctrl+shift+P,然后搜索C/C++
或者直接在上方搜索栏,搜索>C/C++
截图202605022045089759.jpg
截图202605022045151110.jpg
可以添加一个新的配置,名为 MCU。也可以直接修改自动生成的win32配置,因为每次打开一个新的工程都要重新配置。
截图202605022045279241.jpg

如果你的电脑中安装了GCC编译器(MingGW),这里会自动识别出来。
如果没有安装,空着也没事,毕竟我们是使用keil5编译的,这一步的目的是为了消除头文件报错
截图202605022045423664.jpg
然后在 包含路径 中加入keil5的头文件路径,修改成自己的,在后面补上 /**

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

例如 D:/Keil_v5/C251/INC/**
截图202605022046042230.jpg
然后在 定义 中加入keil5的常用定义,可以消除 xdata 等在VScode中的报错


  1. __C251__
  2. __VSCODE_C251__
  3. reentrant=
  4. compact=
  5. small=
  6. large=
  7. data=
  8. idata=
  9. pdata=
  10. bdata=
  11. edata=
  12. xdata=
  13. code=
  14. bit=char
  15. sbit=char
  16. sfr=char
  17. sfr16=int
  18. sfr32=int
  19. interrupt=
  20. using=
  21. far=
  22. _at_=
  23. _priority_=
  24. _task_=
复制代码

截图202605022046566428.jpg
最终效果如下
截图202605022047088374.jpg

5.无法找到头文件的报错(安装了keil插件的情况)
安装了keil插件,我们每次点开插件,都会自动生成第4点的配置,无需手动设置。
截图202605022047407514.jpg
但有时候还是会出现这样的报错,这是怎么回事呢?
截图202605022047523042.jpg

我们只需打开keil5的头文件目录便知晓。插件自动添加的头文件路径跟keil5中的一模一样,且多了一个C251的头文件路径
截图202605022048061509.jpg
STC的头文件也在这个目录的子文件中,而想要调用子文件中的文件,只需在路径后补上 斜杠 星星  星星即可。
截图202605022048275844.jpg
因此我们直接在创建keil5工程时,顺手在头文件路径中补上带斜杠 星星  星星的路径即可。
  1. D:/Keil_v5/C51/INC/**
  2. D:/Keil_v5/C251/INC/**
复制代码
截图202605022048598015.jpg
然后keil5点一下编译,vscode也会瞬间同步。
截图202605022049198037.jpg
此时报错便消失了
截图202605022049316207.jpg
唯一的遗憾是 Vscode 无法消除中断函数的报错
截图202605022049417361.jpg

总结

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







截图202605022047407932.jpg
1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
故事没有结局,遗忘是唯一的终点...
回复

使用道具 举报 送花

已绑定手机

39

主题

208

回帖

2447

积分

荣誉版主

Rbowlystar

积分
2447
 楼主| 发表于 2026-5-2 23:59:28 | 显示全部楼层
针对中断函数报错无法消除的问题:
就之前而言,我一般是在VScode中注释掉interrupt x

然后编译之前在打开,这样操作十分不便利,甚至已经习惯了这个报错。
截图202605022353014947.jpg


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

那么我们就可以在头文件中,插入一段宏定义去实现,在VScode中注释interrupt x,并且不会影响到keil5编译。
  1. //========================================================================
  2. //                               VScode优化
  3. //========================================================================
  4. #if defined(__VSCODE_C251__) || defined(__VSCODE_C51__)
  5. #define interrupt(x)
  6. #else
  7. #define interrupt(x)    interrupt x
  8. #endif
复制代码
截图202605022358257048.jpg

报错消失,如此一来,便不留遗憾了
截图202605022358584640.jpg

点评

顺带请教一下,“我们就可以在头文件中,插入一段宏定义去实现,在VScode中注释interrupt x,并且不会影响到keil5编译。” 这个头文件具体是指哪一个头文件?   发表于 2026-5-27 22:48
版主:您好! 仔细阅读了您的方法,感觉很好,马上回家试一下!万分感谢您,之前我也装过vs code 但是装好后发现只能玩C51 无法在C251下编译,就...  发表于 2026-5-27 21:17
故事没有结局,遗忘是唯一的终点...
回复

使用道具 举报 送花

已绑定手机

74

主题

1003

回帖

3651

积分

论坛元老

业余的DIY玩家

积分
3651
发表于 2026-5-3 00:48:29 | 显示全部楼层
使用vscode编码体验好
而keil调试功能好
业余就玩玩
回复

使用道具 举报 送花

1

主题

122

回帖

1469

积分

金牌会员

积分
1469
发表于 2026-5-3 12:04:40 | 显示全部楼层
到底转不转vscode呢

点评

keil5是刚需,无论用不用vscode,都需要安装keil5,芯片配置、文件导入、头文件路径等等还是要在keil5中设置的。 vscode作为代码编辑器使用,提供了优美的界面效果、更好的错误提示、一键补全等功能,只能说是锦上添  详情 回复 发表于 2026-5-3 12:23
回复

使用道具 举报 送花

已绑定手机

39

主题

208

回帖

2447

积分

荣誉版主

Rbowlystar

积分
2447
 楼主| 发表于 2026-5-3 12:23:00 | 显示全部楼层
凌*** 发表于 2026-5-3 12:04
到底转不转vscode呢

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

使用道具 举报 送花

1

主题

122

回帖

1469

积分

金牌会员

积分
1469
发表于 2026-5-4 22:05:01 | 显示全部楼层
锦*** 发表于 2026-5-3 12:23
keil5是刚需,无论用不用vscode,都需要安装keil5,芯片配置、文件导入、头文件路径等等还是要在keil5中 ...

明白了,感谢
回复

使用道具 举报 送花

33

主题

3077

回帖

7166

积分

论坛元老

积分
7166
发表于 2026-5-7 10:47:08 | 显示全部楼层
欸,竟然 从VScode插件上 编译 和 keil上编译的结果有差异。。稍微有点儿后怕。。

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

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

点评

感谢提醒,应该都是一样,只是在keil上面修改了魔术棒的参数后,必须要点一下编译,vscode那边才会同步,否则就是按上一次的keil配置编译的。重新测试了一下,才发现这个规律  详情 回复 发表于 2026-5-7 14:45
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

已绑定手机

39

主题

208

回帖

2447

积分

荣誉版主

Rbowlystar

积分
2447
 楼主| 发表于 2026-5-7 14:45:08 | 显示全部楼层
_奶*** 发表于 2026-5-7 10:47
欸,竟然 从VScode插件上 编译 和 keil上编译的结果有差异。。稍微有点儿后怕。。

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

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

使用道具 举报 送花

33

主题

3077

回帖

7166

积分

论坛元老

积分
7166
发表于 2026-5-7 20:37:34 | 显示全部楼层
锦*** 发表于 2026-5-7 14:45
感谢提醒,应该都是一样,只是在keil上面修改了魔术棒的参数后,必须要点一下编译,vscode那边才会同步, ...

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

一般我是再keil这里修改完任何配置之后,,点一下全部保存,然后再去VScode上接着操作
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

已绑定手机

29

主题

2677

回帖

3489

积分

论坛元老

积分
3489
发表于 2026-5-28 20:07:41 | 显示全部楼层
请教一下版主:
下图中的报错,应该如何设置才能消除?
截图202605282007389814.jpg

点评

[attachimg]138466[/attachimg] 点评没法回复,在此处回复你。 Q:顺带请教一下,“我们就可以在头文件中,插入一段宏定义去实现,在VScode中注释interrupt x,并且不会影响到keil5编译。” 这个头文件具体是指哪  详情 回复 发表于 2026-5-30 11:24
看一下3.5 [attachimg]138465[/attachimg]  详情 回复 发表于 2026-5-30 11:14
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-22 06:04 , Processed in 0.106833 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表