历史上的今天
返回首页

历史上的今天

今天是:2024年12月31日(星期二)

正在发生

2019年12月31日 | AVR单片机教程——EasyElectronics Library v1.0手册

2019-12-31 来源:eefocus

1. 概述

1.1 背景

EasyElectronics Library v1.0是开发板EasyElectronics配套的库。

EasyElectronics是一款基于AVR单片机的开发板,以板载资源丰富、使用简便为特色。

1.2 库组织结构

库由C语言编写,release中包含若干头文件与一个静态库文件。

在头文件中,ee.h直接或间接地包含了所有其他头文件。

用户手动include ee.h中没有直接include的头文件是不推荐的,但也不会报错。

1.3 版本号

本手册对应的库版本号为1.0。

版本号由两位构成,前一位为主版本号,当库有结构性的变化或不与先前版本兼容时,此位+1;后一位为副版本号,当库中加入少量新内容时,此位+1。

对于修正版本,版本号不变,不另行通知。

 

2. 库函数

1. bit.h

bit.h定义了用于位操作的宏函数,适用于8或16位整数。

set_bit(r, b):将r的第b位置为1。

reset_bit(r, b):将r的第b位置为0。

read_bit(r, b):读取r的第b位,若为1则返回(1 << b),否则返回0。

cond_bit(c, r, b):若c为真,则将r的第b位置为1,否则置为0。

clock(r, b):将r的第b位置为1后立即置为0。

flip(r, b):将r的第b位取反。

BIT_MASK(n, b):返回从第b位开始的高n位全1的二进制数。

2. delay.h

delay.h定义了延时函数。

void delay(uint16_t _time):延时_time毫秒。

 

3. pin.h

pin.h定义了引脚操作的函数。

pin_t:类型别名,可以表示引脚。

PIN_NULL:宏常量,表示空引脚。所有接受pin_t参数的函数如果接受PIN_NULL参数,则不会执行任何动作,返回void或0。

PIN_?:宏常量,?为0~9或A~F,pin_t类型,表示对应引脚。

INPUT:宏常量,表示输入。

OUTPUT:宏常量,表示输出。

void pin_mode(pin_t _pin, bool _mode):_mode应为上述2个宏之一,将_pin引脚设为_mode模式。

LOW:宏常量,输入模式下表示高阻态,输出模式下表示低电平。

HIGH:宏常量,输出模式下表示高电平。

PULLUP:宏常量,输入模式下表示上拉。

void pin_write(pin_t _pin, bool _level):_level应为上述3个宏之一,将_pin引脚设为_level状态。

PIN_BIT(p):宏函数,内部使用。

void pin_write_multi(pin_t _pin, uint8_t _mask, uint8_t _value):内部使用。

void pin_flip(pin_t _pin):将_pin引脚电平翻转。

bool pin_read(pin_t _pin):返回_pin引脚电平是否为高。

4. tone.h

tone.h定义了输出指定频率方波的函数。

TODO

5. pwm.h

pwm.h定义了输出PWM波形的函数。

TODO

6. uart.h

uart.h定义了串口收发的函数。

TODO

7. adc.h

adc.h定义了ADC操作的函数。

TODO

8. led.h

led.h定义了板载LED操作的函数。

LED_COUNT:宏常量,LED的个数。

void led_init():初始化LED。

LED_RED:宏常量,表示红色LED。

LED_YELLOW:宏常量,表示黄色LED。

LED_GREEN:宏常量,表示绿色LED。

LED_BLUE:宏常量,表示蓝色LED。

LED_OFF:宏常量,表示LED不亮。

LED_ON:宏常量,表示LED亮。

void led_set(uint8_t _which, bool _on):_which应为上述表示LED的宏,_on应为上述表示LED状态的宏,将_which设为_on的状态。

void led_flip(uint8_t _which):_which应为上述表示LED的宏,将_which的状态翻转。

void led_on():点亮所有LED。

void led_off():关闭所有LED。

9. rgbw.h

rgbw.h定义了驱动板载RGBW LED的函数。

RGBW_COUNT:宏常量,RGBW LED的颜色数。

RGBW_RED:宏常量,表示红色LED。

RGBW_GREEN:宏常量,表示绿色LED。

RGBW_BLUE:宏常量,表示蓝色LED。

RGBW_WHITE:宏常量,表示白色LED。

rgbw_pin:pin_t类型数组,存储RGBW LED的颜色对应的引脚。

void rgbw_init(pin_t _r, pin_t _g, pin_t _b, pin_t _w):初始化RGBW LED,4个参数分别为红、绿、蓝、白LED的引脚。

void rgbw_set(uint8_t _which, uint8_t _value):_which应为上述表示LED的宏,_value为亮度值。对于4~7号引脚,_value为亮度;对于其他引脚,_value≥128则LED亮。

RGBW_COLOR(r, g, b, w):宏函数,接受4个0~3的数,生成一个表示颜色的数。

void rgbw_color(uint8_t _color):_color应为RGBW_COLOR生成的数,使RGBW LED显示相应的颜色。

void rgbw_off():关闭RGBW LED。

10. segment.h

segment.h定义了驱动板载2位7段数码管的函数。

TODO

11. buzzer.h

buzzer.h定义了驱动板载蜂鸣器的函数。

TODO

12. button.h

button.h定义了读取板载按键状态的函数。

BUTTON_COUNT:宏常量,按键个数。

BUTTON_?:宏常量,?为0~3,表示按键。

void button_init(pin_t _button2, pin_t _button3):_button2与_button3分别为按键2和3连接的引脚,可以为PIN_NULL。初始化按键操作。

bool button_down(uint8_t _index):返回第_index个按键是否被按下。

bool button_pressed(uint8_t _index):对于每个_index值,返回从前一次调用开始对应按键是否被按下。

13. switch.h

switch.h定义了读取板载开关状态的函数。

TODO

14. rotary.h

rotary.h定义了读取板载旋转编码器输入的函数。

TODO

15. pot.h

pot.h定义了读取板载电位器输入的函数。

TODO

16. ldr.h

ldr.h定义了读取板载光敏电阻输入的函数。

TODO

17. dac.h

dac.h定义了驱动板载10位DAC的函数。

TODO

18. exout.h

exout.h定义了驱动板载74HC595扩展输出的函数。

TODO

19. exin.h

exin.h定义了读取板载74HC165扩展输入的函数。

TODO

20. lcd.h

lcd.h定义了驱动连接到板载接口上的1602 LCD模块的函数。

TODO


推荐阅读

史海拾趣

Advanced Microelectronic Products Inc公司的发展小趣事

随着公司业务的不断发展,AMP公司意识到与国际伙伴合作的重要性。于是,公司积极寻求与国际知名企业的战略合作,通过技术交流和资源共享,共同开发新型电子产品。这些国际合作不仅提升了AMP公司的技术水平,还进一步提升了其品牌影响力和国际知名度。公司因此获得了更多海外市场的认可,实现了业务的全球化布局。

ARCOL公司的发展小趣事

为了进一步扩大市场份额,ARCOL公司积极寻求与国内外知名企业的合作机会。通过与合作伙伴建立战略合作关系,ARCOL成功打入国际市场,产品销量大幅提升。同时,公司还积极参加各类国际电子展会和交流活动,与全球客户建立了紧密的合作关系,为公司的全球化发展打下了坚实的基础。

Deutronic Elektronik GmbH公司的发展小趣事

Deutronic Elektronik GmbH深知客户服务的重要性,始终将客户需求放在首位。公司建立了完善的客户服务体系,为客户提供全方位的服务支持。通过优质的产品和服务,Deutronic Elektronik GmbH赢得了客户的广泛赞誉和信任。同时,公司也注重品牌建设和提升,通过品牌推广和营销活动,进一步提升了品牌知名度和美誉度。

请注意,以上故事概要基于假设和逻辑构建,可能不完全符合Deutronic Elektronik GmbH公司的实际发展历程。如需更详细和准确的信息,请参考公司官方发布的历史资料和新闻报道。

南京中科微公司的发展小趣事

CSM自成立以来,便积极承担国家和地方具有战略性意义的重大攻关研发项目。其中,公司前身南京市物联网研究与产业化有限公司RFID事业部申报的“超高频与微波RFID读写器射频芯片研发”项目获得了国家工信部物联网专项资金项目资助,并在江苏省名列第一。这些项目的成功完成不仅展示了CSM在技术研发方面的实力,也为国家科技进步和产业发展做出了积极贡献。

爱特姆(ATOM)公司的发展小趣事

爱特姆科技自在美国德克萨斯州休斯顿市成立以来,便致力于电子行业的创新与发展。1998年,公司成功创立了“ATOM”品牌,标志着其正式踏入了品牌化发展的道路。起初,爱特姆以台湾、深圳、昆山为主要研发生产基地,凭借对技术的不断追求和对市场的敏锐洞察,逐渐在连接器领域取得了突破。

GWP Group公司的发展小趣事

爱特姆在国内市场取得一定成绩后,开始积极拓展国际市场。通过与欧洲、美国等国家的知名企业建立合作关系,爱特姆的产品逐渐打入国际市场,并赢得了良好的口碑。同时,公司还积极参加国际电子展会,与全球同行交流学习,不断提升自身的国际竞争力。

问答坊 | AI 解惑

电力变电站蓄电池日常巡检维护必备工具——福光电子M6800P蓄电池电导仪

一、电力变电站蓄电池维护难题 电力变电站蓄电池一直都是变电站维护的重点和难点。当电网发生事故时,交流输入电压下降使变电站充电模块不能正常工作,就需要蓄电池无间断的向直流母线送电而不影响直流电源屏的对外功能,保证二次设备和断路器的正确 ...…

查看全部问答>

section lma overlaps previous sections

大家好!最近因为某种原因,换了交叉编译工具链,以前是3.4.3,现在是4.2.3。 同样的源码,在编译应用程序模块时部分模块出现了类似如下的错误信息。 BFD: /home/***/HG553V100R001/targets/fs.src/bin/stALGP14: section .interp lma 0x4000f4 o ...…

查看全部问答>

这个放大电路出了什么问题?

我先用一个运放THS3001射随隔离,然后用THS3120进行功率放大,调试时,射随电路的芯片THS3001很热,结果冒烟了两片,查了一下板子,焊接都没有问题,不知道问题出在哪了,为什么会出现这样的情况啊?好郁闷啊!模拟高手给点指导吧!谢谢啊! &nbs ...…

查看全部问答>

zigbee的PHY层和MAC层产品疑问

想法是这样的:使用无线实现类似于以太网中的PTP时钟同步协议,想用zigbee来做无线收发部分。现在已经有了以太网转zigbee的产品,但是它的zigbee模块是整合在单芯片上的,那么就没法在类似于MII接口的接近硬件处取得数据。   所以,请问,有 ...…

查看全部问答>

把旅行变成修行之“装备篇(上)”

灵魂自行车的“心脏”——链条发电机及摩电发电机的原理   自行车骑行作为一项“绿色”环保的旅行方式,已经被越来越多的户外旅行爱好者所推崇。而在我的上一篇博文《把旅行变成修行--TI销售工程师的15天绿色环岛骑行梦》中也特别强调了这是 ...…

查看全部问答>

Raspberry Pi (树莓派)新手入门教程系列(第一课)——转载

首先将Raspberry Pi (树莓派)拆包装,放好。准备好一张8GB SD存储卡。读卡器,网线,手机数据线(micro USB数据线) 本课教程以局域网环境进行配置,不涉及ADSL拨号上网环境。 首先我们需要下载系统镜像 下载地址:http://115.com/file/c2g03en6 ...…

查看全部问答>

EEworld下载中心鼎力奉献--proteus教程专辑(二)

本帖最后由 tiankai001 于 2014-1-4 11:10 编辑 EEworld下载中心鼎力奉献--proteus教程专辑(二) 说明:上接《EEworld下载中心鼎力奉献--proteus教程专辑(一)》,由于EEWORLD下载中心关于proteus的教程资源实在是太丰富了,并且这些教程都各 ...…

查看全部问答>

atmega16 AD采样问题

我AD用的是片内2.56V的基准电压,当输入电压大于2.56V是显示是2,56V,但是输入在2.56V以下的时候,是输入电压一半…

查看全部问答>

介绍一款高速过零比较器

我要把100M的正弦波转化成方波,大家有什么好的芯片介绍下 …

查看全部问答>

【FreeUI文档】例说菜单组织思路

本帖最后由 辛昕 于 2016-2-6 21:09 编辑        我一直在思索如何更好说明 FreeUI 采用的 对 界面的组织方式,因为我发现,在FreeUI之外,还存在很多种不一样,也许各有所长的 人机界面组织方式。因为我还未曾去仔细分析它 ...…

查看全部问答>