完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 超导式 于 2016-9-2 14:45 编辑
简介: MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调处理方式可以简化你的程序逻辑,去除冗余的按键处理硬编码,专注你的程序思路。 该模块已稳定用于公司多款量产智能硬件产品。 使用方法: 1. 先申请一个按键结构 struct Button button1; 2. 初始化按键对象,绑定按键连接的GPIO引脚,read_button_pin() 为按键的GPIO读取函数,后一个参数为设置触发电平 button_init(&button1, read_button_pin, 0); 3. 注册按键事件,共有以下5种事件: CLICK //每次按下都会触发 PRESSED //单击触发 DOUBLE_CLICK //双击触发 LONG_RRESS_START //长按开始触发一次 LONG_PRESS_HOLD //长按过程一直触发 LONG_PRESS_STOP //长按松手触发 button_attach(&button1, SINGLE_CLICK, Callback_SINGLE_CLICK_Handler); button_attach(&button1, DOUBLE_CLICK, Callback_DOUBLE_Click_Handler); ... 4. 启动按键 button_start(&button1); 5. 设置一个5ms间隔的定时器循环调用后台处理函数 while(1) { .... if(timer_ticks == 5) { timer_ticks = 0; button_ticks(); } } 特性: MultiButton 使用C语言实现,基于面向对象方式设计思路,每个按键对象单独用一份数据结构管理:
这样每个按键使用单向链表相连,依次进入 button_handler(struct Button* handle) 状态机处理,所以每个按键的状态彼此独立。 Examples:
模块下载地址: https://github.com/0x1abin/MultiButton |
|
相关推荐
|
|
这模块受内核限制么?51内核能不能用
|
|
|
|
|
|
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11780 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 08:06 , Processed in 0.513516 second(s), Total 67, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号