# 基于STC8系列的ECBM函数库V2 **Repository Path**: xddcore/ecbm_library ## Basic Information - **Project Name**: 基于STC8系列的ECBM函数库V2 - **Description**: 该库为ECBM的发行版的V2版本,是基于STC8单片机的外设函数库,目前已经测试通过的型号有STC8F全系列,STC8A全系列,STC8G部分型号。 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 99 - **Created**: 2020-08-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ECBM库 #### 介绍 该GIT仓库为ECBM的发行版,ECBM库能帮助你更快更简单地实现你的电子创意。 ECBM寓意为:**E***verything* **C***an* **B***e* **M***odule*,即:***一切都可以模块化*** 造轮子一时爽,一直造一直爽。编程即是思想,不同的人有着不同的思想模式,就会有不同的编程风格。 我也使用过很多库,发现可以分为两种: * 一种是简单封装成函数,没有一个好的体系。 这类库一般由DIY爱好者编写,由于是用到什么写什么,所以很容易出现一套库不同风格的问题。甚至库的发布者本身就是搜罗网上其他人写的库,导致库之间冲突严重,风格混乱。 * 一种是按某种风格和规则封装,但是复杂的文件结构和代码规则让新手望而却步。这类库一般由工程师编写,有很好的框架,但是英文注释、英文文档和复杂的结构成为学习的难点。 这两种都不符合我的需求,于是我便自己造轮子,这才有了ECBM项目。 ECBM分为两部分:**软件** 和 **硬件** #### 软件特性 * 基于C语言,并按照统一的风格编写,方便记忆。当你理解之后,甚至可以不用看说明就能立即使用新加入的库。 * 利用KEIL的特性,使得在KEIL环境下可以使用**图形化编辑工具**,这极大地方便了我们配置外设! * 用简单粗暴的方法实现了**关联性**和**可移植性**的共存! * 不同的库之间的关联性越强,冲突就越少。比如UART库使用定时器1,TIMER库也要使用定时器1,两者不协商的话就会引发冲突。若UART库关联了TIMER库,可在使用串口时禁止定时器1再次被使用,从而解决冲突。 * 可移植性讲究的是程序“内敛”,对全局变量、外部库函数等函数外资源的使用得越少移植性就越高。移植性越好,关联性就越弱。移植性的例子见于页尾的注解1。 * 采用了不规范的单.h文件的做法。不像正规库那样:.c和.h还要分别放到各自的文件夹、还要填写头文件加载地址、还要把.c文件放入工程等等。ECBM库就是直接增减.h文件就行(仅有一层文件夹用于分类)。使用起来够方便! * 外设驱动代码采用类似于面向对象结构,虽然达不到arduino那样完全的C++结构,但是也拥有很好的器件复用、IO随意转移等特性。 * 一键新建工程,繁琐的事情原来可以这么简单。 * **全中文注释**,更符合国人习惯。 #### 硬件特性 ECBM项目的使用者定位是单片机新手和电子DIY爱好者。这一点和arduino一致,因此也提供一些板子供新手和爱好者使用。如果你有一定的硬件基础,也可以使用任意一款STC8开发板。 * 为何使用51单片机? * 51是很老的单片机了,但是确实很简单。对比stm32单片机来说,不需要那么多的初始化,拿来就能用。对比PIC和AVR来说,8051的编译环境易搭建、资料丰富,甚至很多大学都开设有8051的课程。上过类似课程的同学可以迅速入门ECBM。 * 另外,在STM32CubeMX的加持下,stm32单片机也变得很简单了,所以下一步ECBM将会有stm32的板子出现。 * 为何是STC8单片机? * 库要求要有通用性,为了保证通用性就不能为了运行速度而优化。这就要求使用一款运行速度快的51单片机。 * STC8在整型计算略低于stm32f030(同等运行频率下),在浮点计算中略高于stm32f030(也是同等运行频率下)。所以STC8的性能值得肯定。 * ECBM板子有何特点? * ECBM有四个主系列:智能、实用、学习、极致。 * 智能:即插即用,搭积木式编程。硬件统一、通信统一,将精力集中在**实现功能**上,而不是**如何实现功能**上。 * 实用:标准接口小板,标准的2.54排针,方便使用面包板或杜邦线来实现创意,随心所欲。最大程度集成化,只需一条USB即可开始创作。 * 学习:中型板子,外设丰富。适合对电路一窍不通、未来想发展软件的同学。 * 极致:各种奇葩(褒义)板子,刷新你对开发板的刻板印象。 * ECBM板子是否开源? * 板子的电路就是基本的最小系统+一定的外设。自己去打板、焊接所花的钱和时间还不如购入一款STC8开发板。由于任意STC8开发板都能使用ECBM库,所以硬件不开源。但肯定只有官方出的板子兼容性最好,而且也不算太贵(ノ ̄▽ ̄)。这是[购买地址](https://shop179570892.taobao.com/index.htm?spm=2013.1.w5002-21430097888.2.54374be8ul78Pw),您的一份支持便是对我的极大鼓励。 #### 参与贡献 1. 加入QQ群778916610。 2. 提交建议或者BUG。 3. 等待确认。 4. 代码库升级。 #### 注解 1. 可移植性好和可移植性差的区别: int max(int a,int b){ if(a>b)return a; else return b; } max函数没有引用外部变量和外部函数。你可以不进行修改,直接移植到各种单片机平台。 bit key(){ if(P0==0xDD)reutrn 0; else return 1; } key函数使用了51的关键字bit和51的寄存器P0。当你想移植到stm32单片机时,就得把每个限定运行在51单片机的语句都进行修改才能移植。