泽文i 发表于 2021-4-18 17:34:11

【开源】8051 ELL函数库 完美支持STC8系列 支持VsCode协同开发!

本帖最后由 泽文i 于 2021-4-19 01:27 编辑

ELL函数库简介

8051 ELL函数库,是我针对其丰富的芯片资源,基于keil开发的软件包。函数库采用了LL库的编程思想,充分考虑8051的特性,结合硬件条件,提供大量标准的API函数,供开发者访问底层硬件细节。并且函数库的大小可裁剪,在代码密度和执行效率上做了很好的平衡。

为考虑函数库的兼容性,我在编写规则及注释上面选择了全英文的方式,若开发者不习惯全英文,可以通过库函数提供的开发者文档了解API函数的具体使用方法,我们在文档里提供了详细丰富的中文注解和说明。
不过在1.1.7版本以后,将在ELL库源代码中提供中英文注释都,采用UTF-8的字符编码(Keil默认是GB2312,需要手动调整一下),这样做的目的是为了兼容Vscode协同开发(vscode默认UTF-8)。

函数库遵循 Apache 许可证 2.0 版本,可免费在商业产品中使用,不需要公布应用程序源码,没有潜在商业风险。



下载链接(gitee仓库)
下载链接(github仓库)
开发者文档









ELL是efficient low-layer的缩写,意思是高效低封装,结合了HAL库和LL库的编程思想,既保证了通用性又降低了flash的过度占用。可谓是一举两得,高效、简洁、好用!

开发函数库,最初是为了满足我自己的生产需求,后来经过深思熟虑,我想做一个好用的通用库,所以把它开源出来,分享给广大工程师们。

函数库是基于Keil开发,支持Keil4和Keil5,支持Vscode协同开发,推荐使用EIDE插件。目前函数库主要适配了STC公司的单片机型号,以STC8系列为主。后续计划增加STC12、STC15、STC16系列。





新手如何入门

如果你明白了ELL函数库的架构,那么对你学习本库会有非常大的帮助!函数库采用了一个裸机框架来组织库文件。框架包括两大部分:工程文件和库文件。

工程文件主要存放Keil工程、Vscode文件、用户代码。这里可以根据你的编程习惯进行安排,非常的自由!库文件才是我们的重头戏,它主要分为四个部分:核心文件夹、片内外设库、组件库、设备驱动库。

核心文件夹: 存放各种MCU的寄存器头文件、函数库重定义数据类型头文件、函数库常用数据结构头文件

片内外设库: 存放MCU的片内外设模块,是库的主要构成单元。

组件库: 配套8051内核开发的好用组件,具有一定的抽象性和封装性,能加速项目的开发,比如TMT时间片任务进程组件。

设备驱动库: 一些常用的外围芯片、模块,通过统一的驱动框架进行封装,方便开发。



整个固件库,充分利用了keil的一些特性,比如使用LX51扩展链接器/定位器,优化了BL51的功能,可以生成更小的目标文件等。


开发心得

函数库是我2020年开始做的,起因是在学校参加电赛以后,想着手编写自己的库,来提高开发效率。后来学习STM32以后,觉得HAL库和LL库的思想不错,综合考虑,选择了以LL库的思想对51单片机的寄存器进行封装。

致谢

MCU我选择的是STC系列,在库编写的过程中,和STC的技术工程师做了大量的交流。

特别感谢STC姚永平老师在库开发过程中给的支持和鼓励!感谢STC工程师刘工、陈工在库开发中给予的技术支持。

感谢工程师张工在使用ELL库时提供的技术测试,张工是ELL库的先行者,已经使用ELL库率先开发了成熟的商业产品。

ELL库在CSDN、2IC、51黑、gitee、GitHub、B站均有开源,现在来到阿莫论坛,我比较喜欢这里的氛围,很纯粹,所以也想让这个开源项目,给需要使用STC单片机的工程师带来一些便利。

自ELL库正式开源以来,帮助许多公司完成从STM8、STM32到STC的替换,帮助他们快速迭代开发!



下载链接(gitee仓库)
下载链接(github仓库)
开发者文档




泽文i 发表于 2021-4-18 17:40:15

本帖最后由 泽文i 于 2021-4-18 17:56 编辑

开发者文档我会另开帖子(刚才我测试贴在评论区并不好查看)。
如果你觉得本项目对你有所帮助,可以的gitee仓库,给我一个star,永久免费!

打星地址:gitee仓库


泽文i 发表于 2021-4-18 22:26:40

本帖最后由 泽文i 于 2021-4-19 12:32 编辑

泽文i 发表于 2021-4-18 17:40
开发者文档我会另开帖子(刚才我测试贴在评论区并不好查看)。
如果你觉得本项目对你有所帮助,可以的gitee ...
此楼层盖楼回复问题:

1.1.7版本将在代码中正式加入中文注释(中英文都有)
采用UTF-8编码



使用Vscode开发时,将鼠标移动到在定义的句柄和函数上面,会浮现代码注解
在1.1.7版本将加入中文注释





为了考虑ELL库效率,我们对需要经常工作的寄存器,采用宏函数封装
在Keil预编译阶段会替换成寄存器操作,零消耗。



泽文i 发表于 2021-4-18 17:40
开发者文档我会另开帖子(刚才我测试贴在评论区并不好查看)。
如果你觉得本项目对你有所帮助,可以的gitee ...
此楼层盖楼回复问题:

1.1.7版本将在代码中正式加入中文注释(中英文都有)
采用UTF-8编码



使用Vscode开发时,将鼠标移动到在定义的句柄和函数上面,会浮现代码注解
在1.1.7版本将加入中文注释





为了考虑ELL库效率,我们对需要经常工作的寄存器,采用宏函数封装
在Keil预编译阶段会替换成寄存器操作,零消耗。


1.1.7版本将引入startup启动文件(汇编语言),解决STC8G STC8H STC16 中断号超出Keil中断向量表的问题

泽文i 发表于 2021-4-25 19:27:39

8051ELL库已经支持了STC硬件仿真,另有开发者文档中心正在努力搭建中!

https://b23.tv/6kyR4H

NM2012 发表于 2021-4-18 17:40:18

支持。   

zlutian 发表于 2021-4-18 17:47:57

支持楼主。

nds_shenzhen 发表于 2021-4-18 17:52:30

支持楼主

泽文i 发表于 2021-4-18 17:54:34

NM2012 发表于 2021-4-18 17:40
支持。

大家觉得好用,给的star!

一号纵队 发表于 2021-4-18 18:11:05

强烈支持,老姚应该发来贺电。

泽文i 发表于 2021-4-18 18:18:37

一号纵队 发表于 2021-4-18 18:11
强烈支持,老姚应该发来贺电。

姚老师知道滴,哈哈,希望可以上STC的官网!

zcllom 发表于 2021-4-18 18:21:27

热烈欢迎,不吹牛,我是第一个把你的库用在项目中的人。目前差不多要量产了。

rclong 发表于 2021-4-18 18:21:57

{:lol:}登录进去一看我发现我已经全平台star了
B站也三连了

一号纵队 发表于 2021-4-18 18:26:33

51内核的,STC是老大?求解惑。

无心星矢 发表于 2021-4-18 18:32:53

支持,赞一下。

rei1984 发表于 2021-4-18 18:39:24

lz的 工作。是把stm的那一套 转移到了51上。还是麻烦了一点

泽文i 发表于 2021-4-18 18:51:18

rei1984 发表于 2021-4-18 18:39
lz的 工作。是把stm的那一套 转移到了51上。还是麻烦了一点

感谢您的提议!

其实我只是吸收了STM32LL库的理念,但是所有代码,都是我自己写的,还有许多算法,优化策略,有为了提高开发效率的,也有为了减少ROM占用的。

大佬可以体验一下,哈哈哈!

taoworking 发表于 2021-4-18 19:19:41

支持,赞

motor_control 发表于 2021-4-18 19:23:46

51直接寄存器编程就好了,32位的才有必要吧。

泽文i 发表于 2021-4-18 19:27:42

motor_control 发表于 2021-4-18 19:23
51直接寄存器编程就好了,32位的才有必要吧。

不建议 STC89 系列使用库开发
但是STC8 和 STC16 外设比较丰富,如果有一个稳定好用的驱动库,还是比较适合项目开发的,尤其是这个芯片你不熟悉的情况下。

lzg1987 发表于 2021-4-18 19:51:40

感谢分享,stc库函数有好几个,选一个好用的就会一直用下去了。

泽文i 发表于 2021-4-18 20:10:19

lzg1987 发表于 2021-4-18 19:51
感谢分享,stc库函数有好几个,选一个好用的就会一直用下去了。

选择ELL库准没错!

lzg1987 发表于 2021-4-18 20:12:16

任务管理的思路是什么呢?定时器中断时间算一个任务时间单位,任务管理器分配好时间,按照每个任务的时间长度来顺序执行么? 我都是定时器树立标志位,每个中断执行一个任务,顺序执行下去。

tangmin 发表于 2021-4-18 20:13:21

不错,谢谢分享!

liang_work 发表于 2021-4-18 20:35:55

支持楼主。

tim 发表于 2021-4-18 20:44:29

支持STC15系列吗?

泽文i 发表于 2021-4-18 20:53:11

lzg1987 发表于 2021-4-18 20:12
任务管理的思路是什么呢?定时器中断时间算一个任务时间单位,任务管理器分配好时间,按照每个任务的时间长 ...

任务进程管理组件,本质还是时间片,前后台系统或者叫软件定时器。只不过是帮你封装好了,你不需要再自己写,避免大量的全局变量做标志位,降低出错的概率,提高开发效率。

你只需要按照提供的函数,就可以编写你的任务逻辑,这个组件可以移植到其他平台,都是兼容的,只需要占用一个定时器。

泽文i 发表于 2021-4-18 20:53:54

tim 发表于 2021-4-18 20:44
支持STC15系列吗?

STC15的还未支持,看情况,如果大家很需要的话,ELL库可以提供支持。

qwe2231695 发表于 2021-4-18 21:01:01

支持楼主,很棒

泽文i 发表于 2021-4-18 21:13:49

qwe2231695 发表于 2021-4-18 21:01
支持楼主,很棒

感谢支持!支持国产!

kundi 发表于 2021-4-18 22:25:16

最好把链接和介绍说明书,放到STC官方网站首页,显得不比ST差很多

amigenius 发表于 2021-4-18 22:34:52

就这点外设的寄存器,还是直操寄存器比较好点吧,省掉的Flash能干好多事。人家HAL和LL用在某32bitMCU上有的是Flash和RAM以及速度,加上寄存器多,为了简便牺牲点没所谓。

Kengcc 发表于 2021-4-18 22:48:21

在做个上位机就完美了

bad_fpga 发表于 2021-4-18 23:02:20

谢谢,先看一下,万一要用到呢

szman5108 发表于 2021-4-18 23:43:21

当务之急是买不到芯片吧,哈哈

泽文i 发表于 2021-4-19 00:57:03

amigenius 发表于 2021-4-18 22:34
就这点外设的寄存器,还是直操寄存器比较好点吧,省掉的Flash能干好多事。人家HAL和LL用在某32bitMCU上有的 ...

ELL库已经在极致压缩ROM 的占用了,同时保证不牺牲MCU的速度,这点经过产品验证还是很可靠的。
有的时候我们提供库开发,就是提供一个稳定的平台,省掉了重复造轮子的工作。
我们写寄存器也需要函数来简单封装一下, 而不是堆一堆,不论是产品迭代,还是换了人维护,库开发总是有好处的。
当然了,仁者见仁,智者见智,工具没有好坏之分!看用的人的水平!

泽文i 发表于 2021-4-19 00:57:35

szman5108 发表于 2021-4-18 23:43
当务之急是买不到芯片吧,哈哈

哈哈哈哈真相实锤!{:lol:}

泽文i 发表于 2021-4-19 01:51:03

kundi 发表于 2021-4-18 22:25
最好把链接和介绍说明书,放到STC官方网站首页,显得不比ST差很多

等大家用的多了,自然而然就可以放上去了!

lnso 发表于 2021-4-19 06:31:50

稳定吗?稳定胜过一切

泽文i 发表于 2021-4-19 08:08:24

lnso 发表于 2021-4-19 06:31
稳定吗?稳定胜过一切

稳定!提高丰富例程!已经投入实际生产当中

innovision 发表于 2021-4-19 08:25:44

厉害了,这个得花好多时间啊

泽文i 发表于 2021-4-19 08:29:19

innovision 发表于 2021-4-19 08:25
厉害了,这个得花好多时间啊

一年多了,继续加油!熬了无数的通宵!

leicai05 发表于 2021-4-19 08:38:31

挺好的,支持

zenghl 发表于 2021-4-19 08:50:05

支持楼主,方便了开发者快速项目开发,让开发者更多时间去想功能实现

toptrying 发表于 2021-4-19 08:55:59

支持,感谢

泽文i 发表于 2021-4-19 09:08:34

zenghl 发表于 2021-4-19 08:50
支持楼主,方便了开发者快速项目开发,让开发者更多时间去想功能实现

感谢支持,如果好用的话,记得给个star

motor_control 发表于 2021-4-19 10:14:04

泽文i 发表于 2021-4-18 19:27
不建议 STC89 系列使用库开发
但是STC8 和 STC16 外设比较丰富,如果有一个稳定好用的驱动库,还是比较适 ...

个人觉得简单的事情还是简单做,把精力花在算法上更值得。
可以给st的g0什么的写个类似标准库的比较好,这个蛮需求的。

tim 发表于 2021-4-19 10:30:34

泽文i 发表于 2021-4-18 20:53
STC15的还未支持,看情况,如果大家很需要的话,ELL库可以提供支持。

STC说现在只有15系列供货有保证,能支持15系列还是有意义的

泽文i 发表于 2021-4-19 10:54:40

motor_control 发表于 2021-4-19 10:14
个人觉得简单的事情还是简单做,把精力花在算法上更值得。
可以给st的g0什么的写个类似标准库的比较好, ...

挺好的,不过我这个项目已经快做完了,哈哈哈!

我还年轻,还阔以多尝试,我也喜欢做算法!

泽文i 发表于 2021-4-19 10:55:11

tim 发表于 2021-4-19 10:30
STC说现在只有15系列供货有保证,能支持15系列还是有意义的

建议采纳了!

记得给个star!

qd118118 发表于 2021-4-19 11:01:49

不知在哪里star?感觉你做ELL就像我玩3A游戏,乐在其中!乐在其中才是关键

泽文i 发表于 2021-4-19 11:03:44

qd118118 发表于 2021-4-19 11:01
不知在哪里star?感觉你做ELL就像我玩3A游戏,乐在其中!乐在其中才是关键

大佬请看顶楼评论!

xfdr 发表于 2021-4-19 13:07:21

已经Star

zjwzcn 发表于 2021-4-19 14:08:12

期待支持stc15

luohui5003 发表于 2021-4-19 14:11:43

多谢楼主。

huike 发表于 2021-4-19 15:06:27

API手册
1. 十六位乘法
函数名        描述
MUL_16_BIT(mol, den, quo, rem)        十六位乘法
mul1:乘数1
mul1:乘数2
pro:乘积

{:sweat:}{:sweat:}{:sweat:}

kundi 发表于 2021-4-19 17:44:30

不光是STC16也需要做ELL库,到时候STC32M4等32位机也需要做,方便移植

cat3902982 发表于 2021-4-19 17:48:12

看上去不错,抽时间把你得库移植到我公司得芯片上去{:biggrin:}

chinaboy25 发表于 2021-4-19 20:24:02

泽文i 发表于 2021-4-18 18:51
感谢您的提议!

其实我只是吸收了STM32LL库的理念,但是所有代码,都是我自己写的,还有许多算法,优化 ...

这个是高手

泽文i 发表于 2021-4-19 21:06:02

huike 发表于 2021-4-19 15:06
API手册
1. 十六位乘法
函数名        描述


哈哈哈,我会改的!

armok. 发表于 2021-4-20 07:24:48

精华,打赏!

泽文i 发表于 2021-4-20 12:42:34

kundi 发表于 2021-4-18 22:25
最好把链接和介绍说明书,放到STC官方网站首页,显得不比ST差很多

在等半年,彻底稳定以后,再大幅度推广!

泽文i 发表于 2021-4-20 12:43:02

armok. 发表于 2021-4-20 07:24
精华,打赏!

感谢阿莫!

泽文i 发表于 2021-4-20 12:43:55

huike 发表于 2021-4-19 15:06
API手册
1. 十六位乘法
函数名        描述


准备建设一个新的在线文档网站,方便查看!

MagicYang 发表于 2021-4-20 13:15:14

已给star!

lly10011 发表于 2021-4-20 14:52:46

楼主厉害

泽文i 发表于 2021-4-20 15:33:00

luohui5003 发表于 2021-4-19 14:11
多谢楼主。

谢谢支持!

泽文i 发表于 2021-4-20 15:33:25

MagicYang 发表于 2021-4-20 13:15
已给star!

感谢支持!!

zcllom 发表于 2021-4-20 15:42:12

我也打赏支持

泽文i 发表于 2021-4-20 15:44:31

zcllom 发表于 2021-4-20 15:42
我也打赏支持

老铁给力!!

zwxoec 发表于 2021-4-23 22:26:55

AVR缺货,STM缺货,重新回归8051,上一次使用8051已是20多年前了,恍如隔世!感谢楼主!库函数能大大提高开发效率,应该能用得上。

lb0857 发表于 2021-4-24 09:14:17

做一个StcMcuCubeMx   图形界面随便动动鼠标 之后自动生成外设基础
当然,对于stc来说有一个真正的硬件仿真器才是王道.
不知道是技术力量问题还是芯片知识产权方面因素.

泽文i 发表于 2021-4-25 03:02:37

lb0857 发表于 2021-4-24 09:14
做一个StcMcuCubeMx   图形界面随便动动鼠标 之后自动生成外设基础
当然,对于stc来说有一个真正的硬件 ...

硬件仿真的问题,ELL库解决了!

RFman 发表于 2021-4-25 09:01:34

楼主用心了{:hug:}

zhq0571 发表于 2021-4-25 09:05:47


已经Star

markdif 发表于 2021-4-25 16:01:55

支持,加油!

eddia2012 发表于 2021-5-14 21:57:42

我也在看楼主库开发例程,准备用于新项目开发。

泽文i 发表于 2021-5-15 09:47:25

eddia2012 发表于 2021-5-14 21:57
我也在看楼主库开发例程,准备用于新项目开发。

可以去ELL文档中心(官网)查看快速搭建的教程,可以在API手册中心查看常用函数,欢迎加群讨论交流

lwy86 发表于 2021-5-15 13:42:54

再搞个Arduino库 合并到PlatformIO就完美了。
前几个月开始用VScode+ PlatformIO+Arduino+ STM32开发,效率高了N倍。

ts-fjw 发表于 2021-5-15 15:37:07

8051 ELL函数库 收下 这样

Phonse 发表于 2021-7-15 12:01:19

厉害,之前一直用的就是STC的片子。。赞一个

ltby00 发表于 2021-7-16 08:34:15

下次试用一下!感谢分享!

lixiaoxu186 发表于 2021-12-7 16:18:26

这个确实是好东西,类似STM32 HALL
页: [1]
查看完整版本: 【开源】8051 ELL函数库 完美支持STC8系列 支持VsCode协同开发!