找回密码
 立即注册
查看: 6974|回复: 54

SDCC, 51单片机开发工具探索-摆脱keil

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:510
  • 最近打卡:2025-06-16 10:36:40

46

主题

232

回帖

3089

积分

论坛元老

积分
3089
发表于 2023-12-31 13:50:08 | 显示全部楼层 |阅读模式
2023-12-31-10-48-09.jpg
背景
    不管是51内核单片机还是arm内核的单片机,相信很多同学在开发的时候首先接触的就是keil。没有用过其他IDE的同学可能没有感觉,但是对于使用过IDEA或者VSCODE开发的同学就会对keil的使用感觉很不舒服:
  • 老旧的窗口形式;
  • 奇怪的工程目录;
  • 繁琐的配置;
  • 没有高亮;
  • 关键它不是免费的,虽然最近出了社区板,非盈利可以免费使用。但还是保留了代码量的限制。
    以上这些问题也有相应的解决方案了,比如VSCode插件EIDE就可以使用VSCode编辑代码,然后配置插件关联到已经安装的keil上,类似的方案还有Keil uVision Assistant 。
    但是当家里只有一台mac电脑时,这条路就因为keil不支持mac而不得不放弃。归根结底是编译器的问题,所以就要解决根本问题。带着问题去寻找答案。皇天不负有心人,终于还是找到了。其中编辑器就使用风靡全球的vscode。重点就是编译器,使用SDCC(Small Device C Compiler),它的主要优点就是开源,跨平台,缺点就是使用的人少,参考资料不多;
    只有这两个还是不能完成开发任务的。我们还需要一个构建打包的工具,比如CMAKE大家用的比较多,但是也需要进行一系列繁琐的配置。我这里选择的是platformIO简称PIO,而且它还有VSCODE的插件。现在很多开源项目都是使用PIO开发的。
    至此,摆脱keil开发51单片机的开发环境需要的内容基本就全了。这里我给他们简称VPS,V-VSCODE; P-PIO; S-SDCC;
环境搭建
VSCODE 安装
    这个就是安装一个软件,很简单,懒得说了。有的可能会按照中文支持,感觉非必要。
PIO 安装
    在写这篇文章的时候我已经用了一段时间的VPS了。环境也已经安装搭建好了,简单介绍一下步骤:
  • step1:打开安装好的VSCODE;
  • step2:点击左边的第四个按钮,搜索platformio,点击安装;

pio安装.png

  • step3:安装成功后在左侧会出现小蚂蚁图标;
  • step4:安装platform,这里的platform可以理解成不同单片机平台;点击小蚂蚁 -> 点击Home -> 点击Platforms -> 搜索 Intel 找到Intel MCS-51 安装,这里可能会花费一些时间来安装相关的工具链,其中就包括sdcc

2023-12-31-12-39-10.png

SDCC 安装
已经在PIO 中安装了,可以到以下目录查看PIO下已经安装的工具链:C:\Users\Administrator.platformio\packages

2023-12-31-12-42-24.png

DEMO 演示:
  • step1:打开vscode, 点击小蚂蚁打开pio,这里启动可能有点慢,因为要加载已经安装的平台;

demo_01.png

  • step2:点击home,新建工程,填写工程名称,选择Board,这里填写STC,就可以显示所有已经安装的可以使用的Board;选择工程存放目录,点击创建。

demo_02.png

  • step3:简单介绍一下pio的工程目录;

demo_03.png

  • step4:编写代码,在src目录下新建文件 main.c 代码如下:
    1. #include <compiler.h>
    2. SFR(P0, 0X80);
    3. void Delay500ms()                //@11.0592MHz
    4. {
    5.         unsigned char __data i, j, k;
    6.         NOP();
    7.         NOP();
    8.         i = 22;
    9.         j = 3;
    10.         k = 227;
    11.         do
    12.         {
    13.                 do
    14.                 {
    15.                         while (--k);
    16.                 } while (--j);
    17.         } while (--i);
    18. }
    19. void main(void)
    20. {
    21.     // STC89C52单片机的P0口输出高电平点亮LED
    22.     P0 = 0XF0;
    23.     while (1)
    24.     {
    25.         Delay500ms();
    26.         P0 = 0X00;
    27.         Delay500ms();
    28.         P0 = 0XFF;
    29.     }
    30.    
    31. }
    复制代码

  • step5:编译,生成的hex 文件在 ./pio/build/STC89C52RC 目录下

demo_05.png

  • step6:烧录;

demo_07.png

效果演示:


最后:

    仅仅是搭建环境是开启VPS开发51单片机的第一步,正如前文说的sdcc 是一个开源的跨平台的编译器,这是它的优点,但是关于它的资料太少了。在使用的过程中也遇到了很多问题,这些就放在后边跟大家分享。



1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
不争是争
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16651
发表于 2023-12-31 14:55:13 | 显示全部楼层
这有 SDCC 格式头文件,IAR C++ 头文件
截图202401141554105722.jpg
深圳国芯人工智能有限公司-工具软件 (stcai.com)


大家先 :
【VSCode + SDCC】;
【VSCode , IAR C++ for 51】;
【VSCode + KEIL C51】;
【VSCode + KEIL C251】


后面 51, 我们将例程翻一遍 SDCC / IAR C++, 让大家熟悉下 自由的空气


回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:510
  • 最近打卡:2025-06-16 10:36:40

46

主题

232

回帖

3089

积分

论坛元老

积分
3089
发表于 2023-12-31 16:40:00 | 显示全部楼层
神*** 发表于 2023-12-31 14:55
这有 SDCC 格式头文件,IAR C++ 头文件

不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:457
  • 最近打卡:2025-06-16 06:01:58

5

主题

297

回帖

2288

积分

金牌会员

积分
2288
发表于 2024-1-3 01:56:23 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:555
  • 最近打卡:2025-06-16 20:07:38

21

主题

564

回帖

2866

积分

金牌会员

积分
2866
发表于 2024-1-3 08:27:22 | 显示全部楼层
妙啊这个,board有几种,STC8h8k、32g12k128都有吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:566
  • 最近打卡:2025-06-16 07:52:44

113

主题

2027

回帖

5810

积分

论坛元老

积分
5810
发表于 2024-1-4 10:29:31 | 显示全部楼层
PIO 以前安装过, 安装时间太久了,不知道现在会不会这样。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:510
  • 最近打卡:2025-06-16 10:36:40

46

主题

232

回帖

3089

积分

论坛元老

积分
3089
发表于 2024-1-4 15:36:42 | 显示全部楼层
wangxi*** 发表于 2024-1-3 08:27
妙啊这个,board有几种,STC8h8k、32g12k128都有吧

stc32 是80251 sdcc只能支持8051. 应该是不行。 其他的stc的8051几乎全都支持。 也可以自定义
不争是争
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:466
  • 最近打卡:2025-06-16 09:07:17

17

主题

533

回帖

1398

积分

金牌会员

积分
1398
发表于 2024-1-5 21:04:27 | 显示全部楼层
这个有时候新建工程会报错, 比如说有些单片机的型号含有特殊字符 我上次新建stc89c51rc+都失败了
自信就会温和,温和就会坚定!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:546
  • 最近打卡:2025-06-16 00:12:17
已绑定手机

1

主题

838

回帖

1687

积分

金牌会员

积分
1687
发表于 2024-1-6 21:01:21 | 显示全部楼层
赞,有机会试一下
靡不有初,鲜克有终
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:45
  • 最近打卡:2024-06-28 23:26:16

0

主题

27

回帖

58

积分

注册会员

积分
58
发表于 2024-1-9 00:12:09 | 显示全部楼层
KEIL用习惯了,用其他的得适应适应
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-17 05:24 , Processed in 0.162497 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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