使用Ubuntu系统+VS Code开发STC51单片机

在Windows系统中可以使用Keil + VS Code + EIDE来对8051单片机进行开发,在Ubuntu中可以直接使用SDCC + stcgal + Vs Code开发

一、安装SDCC

SDCC(Small Device C Compiler)是一个可重定向目标的、优化的标准C编译器套件,支持ANSI C89、ISO C99和ISO C11,适用于多种微控制器,在Ubuntu系统中可以使用apt来安装它

bash 复制代码
sudo apt install sdcc

二、安装Python、pip,创建Venv环境

Ubuntu系统通常默认安装Python与pip,可以输入命令验证下版本:

bash 复制代码
python --version
pip --version

或者

bash 复制代码
python3 --version
pip3 --version

如果没有安装pip,可以输入命令来安装pip

bash 复制代码
sudo apt install python3-pip

接下来安装Venv创建虚拟环境:

bash 复制代码
sudo apt install python3-venv

验证下Venv版本:

bash 复制代码
python3 -m venv --version

接下来即可创建用于STC51单片机开发的Python虚拟环境:

bash 复制代码
python3 -m venv OhYeah

这里需要记录下安装路径,方便以后启动这个环境,接下来启动这个Venv虚拟环境

bash 复制代码
source OhYeah/bin/activate

当计算机名称前出现()包裹着环境名称时,代表环境创建成功

安装stcgal烧录工具

stcgal是一个用于STC MCU ISP闪存的Python工具,可以用于烧录程序到STC51单片机中,在Python的Venv环境中输入命令:

bash 复制代码
pip3 install stcgal

安装CH340驱动

通常Ubuntu会自带串口驱动,但还是推荐检查下,可以输入命令列出所有连接的USB设备

bash 复制代码
lsusb

看到以下类似的显示代表连接成功

bash 复制代码
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter

如果无法识别可以安装这个方法安装CH340驱动:Ubuntu系统安装CH340驱动

五、编写并烧录代码

接下来编写一段代码来点亮一个LED灯:

c 复制代码
// main.c
#include <8051.h>

void Delay(unsigned int t) {  
    while (--t);  
}  
 
void main(void) {  
    while (1) {  
        P1 = 0xfe; // 赋初始值  
        Delay(50000);  
        P1 <<= 1;  
    }  
}

随后编译代码为.ihx文件:

c 复制代码
sdcc main.c

再将.ihx转换为.hex文件:

c 复制代码
packihx main.ihx > main.hex

接下来查询下STC51单片机所在的串口号:

c 复制代码
ls /dev/ttyUSB*

我的是/dev/ttyUSB0

随后即可输入命令开始烧录,这里由于权限问题,需要加入Python虚拟环境的路径:

bash 复制代码
/home/GAYBOY/OhYeah/bin/python3 -m stcgal -p /dev/ttyUSB0 -P stc89 main.hex

最后再给STC51单片机断电上电,烧录成功了

六、配置VS Code

在VS Code中使用SDCC可能会出现导入头文件报错的现象,虽然不会影响正常导入,但是看上去会比较闹心,这里在工作文件夹按Ctrl + Shift + p 后内输入命令创建c_cpp_properties.json文件:

bash 复制代码
C/C++: Edit Configurations (JSON)

c_cpp_properties.json内容大体如下,includePath和compilerPath部分写入sdcc头文件和sdcc的地址,这样再导入头文件时就不会报错了:

json 复制代码
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/share/sdcc/include/mcs51/"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/sdcc",
            "cStandard": "c99",
            "cppStandard": "gnu++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}
相关推荐
破茧蝴蝶11 小时前
Python分布式爬虫完整教程
开发语言·python
大哥您好11 小时前
QEMU 11.1.2 多架构编译指南(x86_64 / aarch64 / riscv64)
linux·服务器
狗凯之家源码网11 小时前
全新 PHP 轻量客服聊天室源码深度评测
开发语言·php·聊天室系统
国科安芯12 小时前
立方星与微纳卫星综合电子微型化趋势下的抗辐射MCU选型综述
人工智能·单片机·嵌入式硬件·mcu·risc-v·抗辐射
xunyan623412 小时前
3-1 独立按键控制LED亮灭(SDCC + Notepad++ + STC-ISP/普中ISP)
单片机·嵌入式硬件·接口隔离原则
远离UE412 小时前
UE5 Substrate Thin Film 源码拆析
开发语言·javascript·ue5
keyipatience12 小时前
JavaScript学习(1)书写位置,变量、数据类型、运算符
开发语言·前端·javascript·css·学习
道满科技12 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
WD1372980155713 小时前
WD5030L,为充电桩、工业设备、5G 基站、车载系统、消费电子提供电源,7-30V 的宽压输入
stm32·单片机·嵌入式硬件·5g·车载系统·51单片机
Android系统攻城狮13 小时前
Linux Gstreamer深度解析之gst_audio_ring_buffer_prepare_read调用流程与实战(七十四)
linux·运维·服务器·gstreamer音视频·音视频进阶