【开源】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:56 编辑
开发者文档我会另开帖子(刚才我测试贴在评论区并不好查看)。
如果你觉得本项目对你有所帮助,可以的gitee仓库,给我一个star,永久免费!
打星地址:gitee仓库
本帖最后由 泽文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中断向量表的问题
8051ELL库已经支持了STC硬件仿真,另有开发者文档中心正在努力搭建中!
https://b23.tv/6kyR4H 支持。 支持楼主。 支持楼主 NM2012 发表于 2021-4-18 17:40
支持。
大家觉得好用,给的star! 强烈支持,老姚应该发来贺电。 一号纵队 发表于 2021-4-18 18:11
强烈支持,老姚应该发来贺电。
姚老师知道滴,哈哈,希望可以上STC的官网! 热烈欢迎,不吹牛,我是第一个把你的库用在项目中的人。目前差不多要量产了。 {:lol:}登录进去一看我发现我已经全平台star了
B站也三连了 51内核的,STC是老大?求解惑。 支持,赞一下。 lz的 工作。是把stm的那一套 转移到了51上。还是麻烦了一点 rei1984 发表于 2021-4-18 18:39
lz的 工作。是把stm的那一套 转移到了51上。还是麻烦了一点
感谢您的提议!
其实我只是吸收了STM32LL库的理念,但是所有代码,都是我自己写的,还有许多算法,优化策略,有为了提高开发效率的,也有为了减少ROM占用的。
大佬可以体验一下,哈哈哈! 支持,赞 51直接寄存器编程就好了,32位的才有必要吧。 motor_control 发表于 2021-4-18 19:23
51直接寄存器编程就好了,32位的才有必要吧。
不建议 STC89 系列使用库开发
但是STC8 和 STC16 外设比较丰富,如果有一个稳定好用的驱动库,还是比较适合项目开发的,尤其是这个芯片你不熟悉的情况下。 感谢分享,stc库函数有好几个,选一个好用的就会一直用下去了。 lzg1987 发表于 2021-4-18 19:51
感谢分享,stc库函数有好几个,选一个好用的就会一直用下去了。
选择ELL库准没错! 任务管理的思路是什么呢?定时器中断时间算一个任务时间单位,任务管理器分配好时间,按照每个任务的时间长度来顺序执行么? 我都是定时器树立标志位,每个中断执行一个任务,顺序执行下去。 不错,谢谢分享! 支持楼主。 支持STC15系列吗? lzg1987 发表于 2021-4-18 20:12
任务管理的思路是什么呢?定时器中断时间算一个任务时间单位,任务管理器分配好时间,按照每个任务的时间长 ...
任务进程管理组件,本质还是时间片,前后台系统或者叫软件定时器。只不过是帮你封装好了,你不需要再自己写,避免大量的全局变量做标志位,降低出错的概率,提高开发效率。
你只需要按照提供的函数,就可以编写你的任务逻辑,这个组件可以移植到其他平台,都是兼容的,只需要占用一个定时器。 tim 发表于 2021-4-18 20:44
支持STC15系列吗?
STC15的还未支持,看情况,如果大家很需要的话,ELL库可以提供支持。 支持楼主,很棒 qwe2231695 发表于 2021-4-18 21:01
支持楼主,很棒
感谢支持!支持国产! 最好把链接和介绍说明书,放到STC官方网站首页,显得不比ST差很多 就这点外设的寄存器,还是直操寄存器比较好点吧,省掉的Flash能干好多事。人家HAL和LL用在某32bitMCU上有的是Flash和RAM以及速度,加上寄存器多,为了简便牺牲点没所谓。 在做个上位机就完美了 谢谢,先看一下,万一要用到呢 当务之急是买不到芯片吧,哈哈 amigenius 发表于 2021-4-18 22:34
就这点外设的寄存器,还是直操寄存器比较好点吧,省掉的Flash能干好多事。人家HAL和LL用在某32bitMCU上有的 ...
ELL库已经在极致压缩ROM 的占用了,同时保证不牺牲MCU的速度,这点经过产品验证还是很可靠的。
有的时候我们提供库开发,就是提供一个稳定的平台,省掉了重复造轮子的工作。
我们写寄存器也需要函数来简单封装一下, 而不是堆一堆,不论是产品迭代,还是换了人维护,库开发总是有好处的。
当然了,仁者见仁,智者见智,工具没有好坏之分!看用的人的水平! szman5108 发表于 2021-4-18 23:43
当务之急是买不到芯片吧,哈哈
哈哈哈哈真相实锤!{:lol:} kundi 发表于 2021-4-18 22:25
最好把链接和介绍说明书,放到STC官方网站首页,显得不比ST差很多
等大家用的多了,自然而然就可以放上去了! 稳定吗?稳定胜过一切 lnso 发表于 2021-4-19 06:31
稳定吗?稳定胜过一切
稳定!提高丰富例程!已经投入实际生产当中 厉害了,这个得花好多时间啊 innovision 发表于 2021-4-19 08:25
厉害了,这个得花好多时间啊
一年多了,继续加油!熬了无数的通宵! 挺好的,支持 支持楼主,方便了开发者快速项目开发,让开发者更多时间去想功能实现 支持,感谢 zenghl 发表于 2021-4-19 08:50
支持楼主,方便了开发者快速项目开发,让开发者更多时间去想功能实现
感谢支持,如果好用的话,记得给个star 泽文i 发表于 2021-4-18 19:27
不建议 STC89 系列使用库开发
但是STC8 和 STC16 外设比较丰富,如果有一个稳定好用的驱动库,还是比较适 ...
个人觉得简单的事情还是简单做,把精力花在算法上更值得。
可以给st的g0什么的写个类似标准库的比较好,这个蛮需求的。 泽文i 发表于 2021-4-18 20:53
STC15的还未支持,看情况,如果大家很需要的话,ELL库可以提供支持。
STC说现在只有15系列供货有保证,能支持15系列还是有意义的 motor_control 发表于 2021-4-19 10:14
个人觉得简单的事情还是简单做,把精力花在算法上更值得。
可以给st的g0什么的写个类似标准库的比较好, ...
挺好的,不过我这个项目已经快做完了,哈哈哈!
我还年轻,还阔以多尝试,我也喜欢做算法! tim 发表于 2021-4-19 10:30
STC说现在只有15系列供货有保证,能支持15系列还是有意义的
建议采纳了!
记得给个star! 不知在哪里star?感觉你做ELL就像我玩3A游戏,乐在其中!乐在其中才是关键 qd118118 发表于 2021-4-19 11:01
不知在哪里star?感觉你做ELL就像我玩3A游戏,乐在其中!乐在其中才是关键
大佬请看顶楼评论! 已经Star 期待支持stc15 多谢楼主。 API手册
1. 十六位乘法
函数名 描述
MUL_16_BIT(mol, den, quo, rem) 十六位乘法
mul1:乘数1
mul1:乘数2
pro:乘积
{:sweat:}{:sweat:}{:sweat:} 不光是STC16也需要做ELL库,到时候STC32M4等32位机也需要做,方便移植 看上去不错,抽时间把你得库移植到我公司得芯片上去{:biggrin:} 泽文i 发表于 2021-4-18 18:51
感谢您的提议!
其实我只是吸收了STM32LL库的理念,但是所有代码,都是我自己写的,还有许多算法,优化 ...
这个是高手 huike 发表于 2021-4-19 15:06
API手册
1. 十六位乘法
函数名 描述
哈哈哈,我会改的! 精华,打赏! kundi 发表于 2021-4-18 22:25
最好把链接和介绍说明书,放到STC官方网站首页,显得不比ST差很多
在等半年,彻底稳定以后,再大幅度推广! armok. 发表于 2021-4-20 07:24
精华,打赏!
感谢阿莫! huike 发表于 2021-4-19 15:06
API手册
1. 十六位乘法
函数名 描述
准备建设一个新的在线文档网站,方便查看! 已给star! 楼主厉害 luohui5003 发表于 2021-4-19 14:11
多谢楼主。
谢谢支持! MagicYang 发表于 2021-4-20 13:15
已给star!
感谢支持!! 我也打赏支持 zcllom 发表于 2021-4-20 15:42
我也打赏支持
老铁给力!! AVR缺货,STM缺货,重新回归8051,上一次使用8051已是20多年前了,恍如隔世!感谢楼主!库函数能大大提高开发效率,应该能用得上。 做一个StcMcuCubeMx 图形界面随便动动鼠标 之后自动生成外设基础
当然,对于stc来说有一个真正的硬件仿真器才是王道.
不知道是技术力量问题还是芯片知识产权方面因素.
lb0857 发表于 2021-4-24 09:14
做一个StcMcuCubeMx 图形界面随便动动鼠标 之后自动生成外设基础
当然,对于stc来说有一个真正的硬件 ...
硬件仿真的问题,ELL库解决了! 楼主用心了{:hug:}
已经Star 支持,加油! 我也在看楼主库开发例程,准备用于新项目开发。 eddia2012 发表于 2021-5-14 21:57
我也在看楼主库开发例程,准备用于新项目开发。
可以去ELL文档中心(官网)查看快速搭建的教程,可以在API手册中心查看常用函数,欢迎加群讨论交流 再搞个Arduino库 合并到PlatformIO就完美了。
前几个月开始用VScode+ PlatformIO+Arduino+ STM32开发,效率高了N倍。 8051 ELL函数库 收下 这样 厉害,之前一直用的就是STC的片子。。赞一个 下次试用一下!感谢分享! 这个确实是好东西,类似STM32 HALL
页:
[1]