日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

日常用到開源組件—MultiButton

恩智浦MCU加油站 ? 來源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-08-11 09:04 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家都知道“Stop Trying to Reinvent the Wheel”不要重復(fù)造輪子,但作為嵌入式程序猿每個項(xiàng)目都難免重復(fù)造些輪子。這個系(天)列(坑)會挨個介紹一些我日常用到開源組件,前人栽樹后人乘涼,縮減項(xiàng)目的開發(fā)周期好去摸(填)魚(坑)。

第一個組件,我重點(diǎn)推薦MultiButton!

按鍵!幾乎每個MCU級別的嵌入式項(xiàng)目都要用到,這是個天天要用的輪子,所以MultiButton這個組件就是我墻裂推薦的。感謝作者0x1abin

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

License也非常的友好:MIT license

bec1be16-190c-11ed-ba43-dac502259ad0.png

可以去這里下載到

0x1abin/MultiButton: Button driver for embedded system (github.com)

https://gitee.com/mirrors_0x1abin/MultiButton

使用方法

1. 先申請一個按鍵結(jié)構(gòu)

struct Button button1
2.初始化按鍵對象,綁定按鍵的GPIO電平讀取接口read_button_pin() ,后一個參數(shù)設(shè)置有效觸發(fā)電平
button_init(&button1, read_button_pin, 0, 0);
3. 注冊按鍵事件
button_attach(&button1, SINGLE_CLICK, Callback_SINGLE_CLICK_Handler);
button_attach(&button1, DOUBLE_CLICK, Callback_DOUBLE_Click_Handler);
....

4.啟動按鍵
button_start(&button1);

5.設(shè)置一個5ms間隔的定時器循環(huán)調(diào)用后臺處理函數(shù)
while(1) {
    ...
    if(g_TimerTicks >= 5) {
        g_TimerTicks = 0;
        button_ticks();
    }
}

特性

MultiButton 使用C語言實(shí)現(xiàn),基于面向?qū)ο蠓绞皆O(shè)計思路,每個按鍵對象單獨(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  button_id;
     uint8_t  (*hal_button_Level)(uint8_t  button_id_);
     BtnCallback  cb[number_of_event];
     struct Button* next;
};

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

按鍵事件

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

基于LPC系列的移植參考

以下代碼截圖基于NXP官方的LPC804開發(fā)板。

實(shí)際使用的時候,coder還要去看下multi_button.h里的兩個宏定義,TICKS_INTERVAL默認(rèn)是5即5mS,這個與它實(shí)例間隔5mS是對應(yīng)的。DEBOUNCE_TICKS默認(rèn)是3最大是8,用于按鍵消抖。長按和短按的時間靠LONG_TICKS和SHORT_TICKS設(shè)置或者說優(yōu)化,這兩個宏定義也在multi_button.h中。

beda8586-190c-11ed-ba43-dac502259ad0.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    19160

    瀏覽量

    404844
  • 嵌入式
    +關(guān)注

    關(guān)注

    5210

    文章

    20680

    瀏覽量

    337429
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    4368

    瀏覽量

    46474

原文標(biāo)題:避免重復(fù)造輪子系列之按鍵組件-MultiButton

文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    EMFILE是否包含開源組件?

    的問題是“可能”。有人知道這到底是什么意思嗎?EMFILE是否包含開源組件?如果是,哪些組件是什么是他們的執(zhí)照嗎?這對我的所有權(quán)代碼有什么影響?有沒有人這么做過?謝謝你的幫助,古斯塔沃
    發(fā)表于 08-08 10:47

    經(jīng)常使用到開源免費(fèi)軟件分享

    工欲善其事,必先利其器。首先介紹下項(xiàng)目開發(fā)中個人經(jīng)常使用到開源免費(fèi)軟件:1、虛擬機(jī)虛擬機(jī)使用VMware player,個人發(fā)現(xiàn)使用Virtualbox ubuntu虛擬機(jī)會經(jīng)常崩潰,選用免費(fèi)
    發(fā)表于 11-04 06:38

    HarmonyOS組件更新,新增700+開源組件

    組件是對數(shù)據(jù)和方法的簡單封裝,通過使用現(xiàn)成的組件讓應(yīng)用開發(fā)更加簡單高效。自HarmonyOS組件開源以來,經(jīng)兩次上線,已開源了700+的Ja
    發(fā)表于 11-18 11:17

    介紹一個事件驅(qū)動型按鍵驅(qū)動模塊MultiButton

    MultiButton MultiButton,一個小巧簡單易用的事件驅(qū)動型按鍵驅(qū)動模塊,作者 0x1abin,目前收獲 222 個star,遵循 MIT 開源許可。這個項(xiàng)目非常精簡,只有兩個文件
    發(fā)表于 01-10 07:28

    MultiButton使用步驟和代碼的問題

    單片機(jī)系統(tǒng)一個非常實(shí)用的按鍵處理框架MultiButton前言一、MultiButton 是什么?2. 使用步驟和代碼的問題2.1 使用步驟2.2 按鍵庫的問題2.3 按鍵庫一些默認(rèn)參數(shù)的配置3.
    發(fā)表于 01-21 06:03

    什么是Ardunio?常用組件有哪些?

    什么是Ardunio?常用組件有哪些?
    發(fā)表于 01-24 06:44

    日常我們用到的JTAG和SWD兩種模式的接口是怎樣的

    我們常用到的有哪幾種模式的接口?日常我們用到的JTAG和SWD兩種模式的接口是怎樣的?
    發(fā)表于 02-23 07:14

    超精簡的按鍵組件MultiButton概括

    Growing up’s a funny thing. Sneaks up on you.長大是件很有趣的事,不經(jīng)意間就發(fā)生了。一、概括項(xiàng)目的倉庫大佬的超精簡的軟件定時器multi_timer已經(jīng)讓人眼前一亮,如今這個按鍵組件MultiButton更令我折服。把按鍵的各種
    發(fā)表于 02-28 11:19

    【中科昊芯Start_DSC28027勇士開發(fā)板試用體驗(yàn)】開源MultiButton移植

    一、開源MultiButton介紹MultiButton 是一個小巧簡單易用的事件驅(qū)動型按鍵驅(qū)動模塊,可無限量擴(kuò)展按鍵,按鍵事件的回調(diào)異步處理方式可以簡化你的程序結(jié)構(gòu),去除冗余的按鍵處理硬編碼,讓
    發(fā)表于 07-01 23:04

    實(shí)戰(zhàn)中經(jīng)常用到的元器件PCB封裝庫

    實(shí)戰(zhàn)中經(jīng)常用到的元器件PCB封裝庫
    發(fā)表于 03-13 16:29 ?0次下載

    日常生活中常用到的接口介紹

    日常使用手機(jī)、電腦以及其他電子產(chǎn)品,免不了要跟各種接口打交道。周末花了些時間查了些資料,并總結(jié)自己的實(shí)際使用經(jīng)驗(yàn),跟大家聊一聊我們日常使用手機(jī)、iPad、電腦、外設(shè)中常用到的接口。
    發(fā)表于 10-22 16:27 ?4691次閱讀

    HarmonyOS新增開源組件概覽

    組件是對數(shù)據(jù)和方法的簡單封裝,通過使用現(xiàn)成的組件讓應(yīng)用開發(fā)更加簡單高效。自HarmonyOS組件開源以來,經(jīng)兩次上線,已開源了700+的Ja
    的頭像 發(fā)表于 11-22 10:46 ?3528次閱讀
    HarmonyOS新增<b class='flag-5'>開源</b><b class='flag-5'>組件</b>概覽

    常用日常電路圖匯總

    常用日常電路圖匯總
    發(fā)表于 12-06 13:57 ?135次下載

    2022 OpenHarmony組件大賽,共建開源組件

    原標(biāo)題:共建開源組件生態(tài) 2022 OpenHarmony組件大賽等你來 2022年4月15日,2022 OpenHarmony組件大賽(下稱“大賽”)報名通道正式開啟,開發(fā)者登錄
    的頭像 發(fā)表于 04-26 17:31 ?2235次閱讀
    2022 OpenHarmony<b class='flag-5'>組件</b>大賽,共建<b class='flag-5'>開源</b><b class='flag-5'>組件</b>

    【中科昊芯Start_DSC28027勇士開發(fā)板試用體驗(yàn)】開源MultiButton移植

    本文來源電子發(fā)燒友社區(qū),作者:xiaopeng, 帖子地址: https://bbs.elecfans.com/jishu_2290815_1_1.html 一、開源MultiButton介紹
    的頭像 發(fā)表于 11-21 11:06 ?2095次閱讀
    【中科昊芯Start_DSC28027勇士開發(fā)板試用體驗(yàn)】<b class='flag-5'>開源</b>庫<b class='flag-5'>MultiButton</b>移植
    伊金霍洛旗| 高淳县| 新建县| 财经| 德安县| 湾仔区| 石林| 庐江县| 枣强县| 电白县| 玉门市| 乃东县| 息烽县| 云阳县| 武夷山市| 高碑店市| 阿拉尔市| 遂宁市| 石门县| 德惠市| 正定县| 霍林郭勒市| 航空| 华亭县| 长丰县| 安徽省| 陇川县| 呼玛县| 古浪县| 阜城县| 仙居县| 前郭尔| 凤城市| 天津市| 清苑县| 泾阳县| 凌云县| 洛川县| 新邵县| 浏阳市| 顺昌县|