日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > strongerHuang
[導(dǎo)讀]關(guān)注星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容作者?|?0x1abin編排|strongerHuang按鍵在我們生活中無處不在,買一塊開發(fā)板,按鍵是必備的一個(gè)功能。肯定有人會(huì)說:按鍵就一個(gè)檢測(cè)IO狀態(tài),有什么難度?你單純的檢測(cè)一個(gè)按鍵,確實(shí)難度很低。但如果檢測(cè)單擊、雙擊、三擊,長(zhǎng)按、短按等操作呢...


作者 | 0x1abin


編排 | strongerHuang



按鍵在我們生活中無處不在,買一塊開發(fā)板,按鍵是必備的一個(gè)功能。
肯定有人會(huì)說:按鍵就一個(gè)檢測(cè)IO狀態(tài),有什么難度?
你單純的檢測(cè)一個(gè)按鍵,確實(shí)難度很低。但如果檢測(cè)單擊、雙擊、三擊,長(zhǎng)按、短按等操作呢?如果再將其嵌入到復(fù)雜的項(xiàng)目中呢?

有些功能看似很簡(jiǎn)單,實(shí)際項(xiàng)目中其實(shí)不簡(jiǎn)單。就好比“LED亮燈,如果能將“LED點(diǎn)燈運(yùn)用在各種不同的項(xiàng)目中,你就能超越很多人了。
今天就來分享一個(gè)關(guān)于按鍵的開源軟件模塊:MultiButton(事件驅(qū)動(dòng)型按鍵驅(qū)動(dòng)模塊)。

簡(jiǎn)介


MultiButton 是一個(gè)小巧簡(jiǎn)單易用的事件驅(qū)動(dòng)型按鍵驅(qū)動(dòng)模塊,可無限量擴(kuò)展按鍵,按鍵事件的回調(diào)異步處理方式可以簡(jiǎn)化你的程序結(jié)構(gòu),去除冗余的按鍵處理硬編碼,讓你的按鍵業(yè)務(wù)邏輯更清晰。




開源地址:


https://github.com/0x1abin/MultiButton





1.特性


MultiButton 使用C語言實(shí)現(xiàn),基于面向?qū)ο蠓绞皆O(shè)計(jì)思路,每個(gè)按鍵對(duì)象單獨(dú)用一份數(shù)據(jù)結(jié)構(gòu)管理:


struct Button { uint16_t ticks; uint8_t repeat: 4; uint8_t event : 4; uint8_t state : 3; uint8_t debounce_cnt : 3; uint8_t active_level : 1; uint8_t button_level : 1; uint8_t (*hal_button_Level)(void); BtnCallback cb[number_of_event]; struct Button* next;};


這樣每個(gè)按鍵使用單向鏈表相連,依次進(jìn)入 button_handler(struct Button* handle) 狀態(tài)機(jī)處理,所以每個(gè)按鍵的狀態(tài)彼此獨(dú)立。




2.按鍵事件


事件 說明
PRESS_DOWN 按鍵按下,每次按下都觸發(fā)
PRESS_UP 按鍵彈起,每次松開都觸發(fā)
PRESS_REPEAT 重復(fù)按下觸發(fā),變量repeat計(jì)數(shù)連擊次數(shù)
SINGLE_CLICK 單擊按鍵事件
DOUBLE_CLICK 雙擊按鍵事件
LONG_PRESS_START 達(dá)到長(zhǎng)按時(shí)間閾值時(shí)觸發(fā)一次
LONG_PRESS_HOLD 長(zhǎng)按期間一直觸發(fā)


使用方法


1.先申請(qǐng)一個(gè)按鍵結(jié)構(gòu)
struct Button button1;
2.初始化按鍵對(duì)象,綁定按鍵的GPIO電平讀取接口read_button_pin() ,后一個(gè)參數(shù)設(shè)置有效觸發(fā)電平。
button_init(
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉