色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

MultiButton事件驅動型按鍵驅動移植測試

冬至子 ? 來源:兆易創新GD32 MCU ? 作者:羈傲不馴ぃ ? 2022-10-11 11:11 ? 次閱讀

前言

剛收到開發板,發現社區朋友收到的開發板是GD32F310K,也就是封裝為QFN32,但是我自己收到的是QFN28,芯片面積約為上面的1/4(QAQ),在參考demo時需要注意兩者開發板IO口有些許差異,參考工程需要參考:GD32330G_START_Demo_Suites文件夾中的project文件夾。

GD32F3作為一個小而美的MCU,小容量的RAM,確實不適合跑系統或者過于冗余性的東西,作為一個協處理器,用作常用外設控制,當為其用武之地。

MultiButton

MultiButton 是一個小巧簡單易用的事件驅動型按鍵驅動模塊,可無限量擴展按鍵,按鍵事件的回調異步處理方式可以簡化你的程序結構,去除冗余的按鍵處理硬編碼,讓你的按鍵業務邏輯更清晰。(搬運自github)

移植過程

下載gitbub倉庫,在當前工程中clone倉庫代碼:

poYBAGNE3nWALKNbAABv6nKgYaw917.png

添加進工程,并包含頭文件

pYYBAGNE3qyAVYHWAADlZWyHNK4496.png
poYBAGNE3rGABnx1AADkGseSKt0697.png

pYYBAGNE3raANemsAACQOVf9qQo341.png

添加定時器中斷,將定時器中斷改為5ms中斷一次。

參考,測試代碼。

void gd_timer0_config(uint32_t arr,uint16_t prescaler)
{
 timer_parameter_struct timer0initpara;
 /* enable the timer0 clock */
 rcu_periph_clock_enable(RCU_TIMER1);//掛在AHB=72MHz上面

 /* 初始化timer0 定時器參數,設置自動重裝載值,分頻系數,計數方式 */
 timer0initpara.clockdivision=TIMER_CKDIV_DIV1;//分頻因子
 timer0initpara.alignedmode=TIMER_COUNTER_EDGE;//邊沿對齊
 timer0initpara.counterdirection=TIMER_COUNTER_UP;//向上計數
 timer0initpara.period=arr;//自動重新加載值
 timer0initpara.prescaler=prescaler;//預分頻值 if=1時就是72Mhz else=72/(prescaler/2)
 //timer0initpara.repetitioncounter=;//重復計數器值
 timer_init(TIMER1,&timer0initpara);
 //允許更新中斷
 timer_interrupt_enable(TIMER1,TIMER_INT_UP);
 //TIMER0中斷優先級設置
 nvic_irq_enable(TIMER1_IRQn,1,1);//搶占優先級,響應優先級
 //使能TIME0
 timer_enable(TIMER1);
}
/*中斷初始化*/
gd_timer0_config(5000-1,144-1);//72MHz/(144/2)=1us  1us*1000=1ms  1us*5000=5ms

/*中斷回調函數*/
void TIMER1_IRQHandler(void)
{
 if(SET==timer_interrupt_flag_get(TIMER1,TIMER_INT_UP))
 {
   //gd_eval_led_toggle(LED1);
         button_ticks();
 }
 timer_interrupt_flag_clear(TIMER1,TIMER_INT_UP);
}

main函數初始化

     /*注冊一個按鍵對象*/
     button_init(&btn1, gd_eval_key_state_get, SET, bt1_id);
     /*注冊按鍵事件*/
     button_attach(&btn1, PRESS_DOWN,       BTN1_PRESS_DOWN_Handler);
     button_attach(&btn1, PRESS_UP,         BTN1_PRESS_UP_Handler);
     button_attach(&btn1, PRESS_REPEAT,     BTN1_PRESS_REPEAT_Handler);
     button_attach(&btn1, SINGLE_CLICK,     BTN1_SINGLE_Click_Handler);
     button_attach(&btn1, DOUBLE_CLICK,     BTN1_DOUBLE_Click_Handler);
     button_attach(&btn1, LONG_PRESS_START, BTN1_LONG_PRESS_START_Handler);
     button_attach(&btn1, LONG_PRESS_HOLD,  BTN1_LONG_PRESS_HOLD_Handler);
     button_start(&btn1);

添加相關回調

/*按下事件*/
void BTN1_PRESS_DOWN_Handler(void *btn){
 gd_eval_led_on(LED1);
}
/*彈起事件*/
void BTN1_PRESS_UP_Handler(void *btn){
 gd_eval_led_off(LED1);
}
/*重復按下事件 變量repeat計數連擊次數*/
void BTN1_PRESS_REPEAT_Handler(void *btn){
 uint8_t i = 0;
 for(i = 0; i <= btn1.repeat; i++){
     gd_eval_led_toggle(LED1);
     delay_1ms(250);
     gd_eval_led_toggle(LED1);
     delay_1ms(250);
 }
}
/*單擊按鍵事件*/
void BTN1_SINGLE_Click_Handler(void *btn){
}
/*雙擊按鍵事件*/
void BTN1_DOUBLE_Click_Handler(void *btn){
}
/*達到長按時間閾值時觸發一次*/
void BTN1_LONG_PRESS_START_Handler(void *btn){
}
/*長按期間一直觸發*/
void BTN1_LONG_PRESS_HOLD_Handler(void *btn){
}

結果展示

通過事件回調,可以輕松實現按鍵的按下、松開、連擊、長按等事件對應不通過回調~




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 協處理器
    +關注

    關注

    0

    文章

    75

    瀏覽量

    18191
  • 按鍵驅動
    +關注

    關注

    0

    文章

    11

    瀏覽量

    7154
  • GD32F103
    +關注

    關注

    5

    文章

    18

    瀏覽量

    9449
收藏 人收藏

    評論

    相關推薦

    Linux下如何使用中斷的方式來驅動按鍵

    Linux下的按鍵輸入驅動開發模板一文中介紹了基本的按鍵輸入捕獲流程,這里將進一步介紹如何使用中斷的方式來驅動按鍵,同時通過定時器實現
    發表于 07-29 08:59 ?983次閱讀

    MultiButton】并發狀態事件驅動按鍵驅動模塊,量產產品實踐

    本帖最后由 超導式 于 2016-9-2 14:45 編輯 簡介:MultiButton 是一個小巧簡單易用的事件驅動按鍵驅動模塊,
    發表于 09-02 14:44

    【星空派GD32F303開發板試用體驗】+移植MultiButton按鍵+串口+LED

    本帖最后由 cooldog123pp 于 2021-11-6 22:08 編輯 板卡初次試用,先體驗一下按鍵,串口,以及LED,這里移植MultiButton,即按下按鍵2,L
    發表于 11-06 22:05

    介紹一個事件驅動按鍵驅動模塊MultiButton

    MultiButton MultiButton,一個小巧簡單易用的事件驅動按鍵驅動模塊,作者
    發表于 01-10 07:28

    MultiButton使用步驟和代碼的問題

    、短按,如果沒有一個按鍵驅動框架是很難實現的 ,在這里推薦一個非常好用的按鍵處理框架MultiButton
    發表于 01-21 06:03

    超精簡的按鍵組件MultiButton概括

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

    【中科昊芯Start_DSC28027勇士開發板試用體驗】開源庫MultiButton移植

    一、開源庫MultiButton介紹MultiButton 是一個小巧簡單易用的事件驅動按鍵驅動
    發表于 07-01 23:04

    如何將MultiButton按鍵驅動模塊移植到MM32F5270開發板上

    簡介MultiButton 是一個小巧簡單易用的事件驅動按鍵驅動模塊,可無限量擴展按鍵
    發表于 08-23 15:43

    怎樣將MultiButton按鍵驅動模塊移植到MM32F5270開發板上呢

    簡介MultiButton 是一個小巧簡單易用的事件驅動按鍵驅動模塊,可無限量擴展按鍵
    發表于 11-11 15:52

    MCU之按鍵驅動 -剝離按鍵驅動和事件處理

    ButtonDrive 自己寫的一個按鍵驅動,支持單雙擊、連按、長按;采用回調處理按鍵事件(自定義消抖時間),使用只需3步,創建按鍵按鍵
    發表于 10-28 19:21 ?18次下載
    MCU之<b class='flag-5'>按鍵</b><b class='flag-5'>驅動</b> -剝離<b class='flag-5'>按鍵</b><b class='flag-5'>驅動</b>和事件處理

    一種按鍵的處理方法方式:MultiButton

    MultiButton一個小巧簡單易用的事件驅動按鍵驅動模塊,可無限量擴展按鍵
    的頭像 發表于 04-28 14:58 ?1835次閱讀

    Linux驅動開發-編寫按鍵驅動

    這篇文章介紹,如何使用雜項設備框架編寫一個簡單的按鍵驅動,完成編寫、編譯、安裝、測試等流程,了解一個雜項字符設備驅動的開發流程。
    的頭像 發表于 09-17 15:08 ?1667次閱讀
    Linux<b class='flag-5'>驅動</b>開發-編寫<b class='flag-5'>按鍵</b><b class='flag-5'>驅動</b>

    【中科昊芯Start_DSC28027勇士開發板試用體驗】開源庫MultiButton移植

    MultiButton 是一個小巧簡單易用的事件驅動按鍵驅動模塊,可無限量擴展按鍵
    的頭像 發表于 11-21 11:06 ?555次閱讀
    【中科昊芯Start_DSC28027勇士開發板試用體驗】開源庫<b class='flag-5'>MultiButton</b><b class='flag-5'>移植</b>

    按鍵驅動的實驗

    按鍵驅動實驗與LED以及Beep在整體使用邏輯上一樣,只是按鍵是輸入模式。
    的頭像 發表于 03-02 16:25 ?761次閱讀
    <b class='flag-5'>按鍵</b><b class='flag-5'>驅動</b>的實驗

    基于狀態機的按鍵驅動設計

    按鍵作為單片機的輸入設備,可以向單片機輸入數據、傳輸命令等,是設置參數和控制設備的常用接口。所以,學會按鍵驅動也是初學者必不可少的能力。說到按鍵驅動
    的頭像 發表于 07-04 11:43 ?1458次閱讀
    基于狀態機的<b class='flag-5'>按鍵</b><b class='flag-5'>驅動</b>設計
    主站蜘蛛池模板: 亚洲 综合 欧美在线 热| 涩涩网站在线看| 国产亚洲精品字幕在线观看| V8成品人视频| 2021全国精品卡一卡二| 伊人最新网址| 永久免费在线看mv| 亚洲偷自拍精品视频在线观看| 性做久久久久久久久浪潮| 手机在线亚洲日韩国产| 日本特交大片免费观看| 人淫阁| 人妻天天爽夜夜爽三区麻豆A片| 男人桶爽女人| 内射爽无广熟女亚洲| 男女XX00上下抽搐动态图| 免费 高清 中文在线观看| 免费国产久久拍久久爱| 男的插曲女的下面免费APP| 嫩草影院久久国产精品| 男女全黄h全肉细节文| 暖暖 视频 免费 高清 在线观看| 男女后进式猛烈xx00动态图片| 奶水太多h室友| 强开乳罩摸双乳吃奶视频| 秋霞av伦理片在线观看| 色噜噜噜亚洲男人的天堂| 天天综合亚洲综合网站| 性夜a爽黄爽| 亚洲一区在线播放| 最近2019中文字幕MV免费看| 97人妻中文字幕免费视频| abp-146| 丰满艳妇亲伦| 国产日韩欧美三级| 好大的太粗好深BL| 久久婷五月综合色啪首页| 男人边吃奶边挵进去呻吟漫画| 人人插人人射| 亚洲AV午夜福利精品香蕉麻豆| 亚洲人成无码久久久AAA片|