参考文章:基于 VS Code 搭建 C51 单片机开发环境_vscode c51-CSDN博客
安装 Visual Studio Code
VS Code开发51单片机【代码+编译+烧录】
一、必须先下载安装Keil C51
VS Code配合【Embedded IDE】插件写 C51 单片机程序还是要安装 Keil C51,因为需要用到里面的编译器和链接器。
二、下载安装 Visual Studio Code
初学者一般都使用 Keil μVision 来编写C51、STM32 等单片机的代码,但这个教程是一份关于在Visual Studio Code上开发51单片机的入门教程。
三、VS Code安装插件
1.插件【Chinese】——汉化VS Code
VS Code软件界面英文变中文版,功能秒明白。
安装完记得重启软件。
2.插件【C/C++】【C/C++ Extension Pack】——检查C语言的语法。
3.插件【Embedded IDE】
点击扩展,搜索【Embedded IDE】并安装
4.插件【Keil Assistant】
这个插件可以不用安装,因为前面安装的Embedded IDE插件是这个Keil Assistant的升级版。
安装完后点击【扩展设置】,添加Keil的可执行文件的路径,这里有两个路径,上面是C51的,下面是MDK的。
注意:这里我的 Keil C51 和 Keil MDK-Arm 共存,所以两个位置填的是同一个地址。安装时Keil C51必须先装,Keil MDK-Arm后装。
5.插件【通义零码】——AI智能写代码
或者文心快码Baidu Comate、豆包MarsCode AI: Coding Assistant
点击扩展,搜索通义灵码【TONGYI Lingma】
阿里巴巴的智能编码助手:解释代码、生成流图、写代码注释、写单元测试、优化代码、智能问答解决问题,AI真香——要登录才能使用哦
四、创建EIED项目
新建一个EIDE项目(New Project)——然后在中间弹出的下拉菜单中选择空项目(Empty Project)——选择 8Bit MCU Project——选择 8051 Empty Project(With Keil C51 Compiler)——输入项目名(我命名为 test_VSC_C51)——回车选择项目的存放路径(放在自己新建的文件夹里)——右下角弹出通知,点击Yes打开项目的工作空间——项目创建成功!
五、配置C51编译器,只需一次
点击【EIDE】插件,下方操作中选择【配置工具链】,点击第一个Keil C51,这里需要找到Keil C51软件的安装路径,选择‘TOOLS.INI’文件。
注意:这里我的 Keil C51 和 Keil MDK-Arm 共存,必须先装Keil C51,后装Keil MDK-Arm。
六、编译和下载
自动生成的代码,主函数所在位置如图所示,点击左边【资源管理器】,在src目录下是main.c源代码文件。
.eide: EIDE 项目文件夹,存放eide项目信息,日志等文件
.vscode: VS Code 配置文件目录
build:编译默认输出目录,可以在项目的设置中修改
tools:编译和下载使用的 Python 程序(是Python)
1.构建(F7)
先确认构建配置:Keil_C51
首先点击【EIDE】插件,才会出现构建配置和烧录配置。
点击【构建配置】右边的切换箭头,选择Keil_C51工具链。
然后点击右上角的“构建”符号
正常情况下,底部终端会输出“构建成功”的提示
如果不成功的话,需要用 Win+cmd 唤醒命令行安装一下python相关的东西,当时用【通义灵码AI】生成解决方案把问题给解决了,没截图保存,现在想不起来了。。。貌似是关于 stcflash.py 的问题,因为上面说的tools编译和下载使用的 Python 程序。
当时有个构建异常ERROR build failed,卡了好长时间,直接甩过去问【通义灵码】,提供了很多种可能,试了但都没用,直到后来~
解决的方案:当时机子里装了3个Keil,分别是一个MDK,两个版本的C51,把共存的MDK和C51保留,删除了另一个低版本C51v959。重新链接了TOOLS.INI文件的正确位置,才使得构建过关了。
2.烧录程序
构建成功后的下一步就要把程序下载到51开发板啦,不再使用广告多多的STC-ISP了。
2.1 默认Shell下载程序
烧录配置:一般默认是Shell烧录脚本,点击右上角的“烧录”符号,可以在终端看到如下信息。
但如果烧录出现如下信息:
Traceback (most recent call last): File "E:\VSC_C51\test_VSC_C51\tools\stcflash.py", line 1412, in <module>
main()
File "E:\VSC_C51\test_VSC_C51\tools\stcflash.py", line 1408, in main
program(Programmer(conn, opts.protocol), code, opts.erase_eeprom)
File "E:\VSC_C51\test_VSC_C51\tools\stcflash.py", line 975, in program
prog.detect()
File "E:\VSC_C51\test_VSC_C51\tools\stcflash.py", line 517, in detect
raise IOError()
^^^^^^^^^^^^^^^
OSError
【通义灵码】说:stcflash.py 脚本在执行 detect 方法时抛出了一个 OSError 异常。最后的解决方案好像是把【烧录配置】由shell改为stcgal,详见步骤2.2。
2.2 配置下载器下载程序
烧录配置:如果不用Shell烧录脚本,则需要选择【stcgal】烧录(STC芯片专用。 )
点击【烧录配置】右边的切换箭头,选择stcgal for STC chips。
这里需要通过命令行安装stcgal下载器
pip安装: 在Win+R唤起的cmd窗口输入并执行: pip3 install stcgal
注意:请提前安装python 3.13.x,并添加路径到Path环境变量
2.3 点击烧录
点击右上角的“烧录”符号
等待MCU重新上电,写Flash的进度条跑动起来……
烧录完成,程序成功下载到开发板
打包模板
对于当前项目,可以将其创建为模板并将模板打包,供之后开发其他同类型的项目使用。
在项目名称处右击,导出为【EIDE模板】,当前项目的路径中会自动生成一个EPT类型文件。
之后新建项目如果想基于这个模板,在新建项目的时候,不要点【空项目】 Empty Project,应该选择 【本地项目模板】Local Template。
然后根据模板的路径,选择相应的 【*.ept 】文件就可以了。
继续输入一个要新创建的项目名称
最后给大家上一个项目的完整目录的截图
不当之处,还请各位小友指正,感激不尽~