久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2733|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

分享已在項目中使用的多功能按鍵程序-基于stm32 Hal庫的多功能按鍵程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:142059 發(fā)表于 2021-7-18 12:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
有需求的可以參考
在cubemx中將key引腳重命名為KEY,并設(shè)為下降沿觸發(fā)、上拉。
其中斷優(yōu)先級要設(shè)置比systick中斷要低。其他的具體使用請查看key.h
STM32單片機源程序如下:
  1. #include "key.h"

  2. KEY_PARAM key_param;

  3. void key_once_click_result_calculate(void)
  4. {
  5.         u32 priod_t=KEY_PRESS_TIMEOUT-key_param.press_time_count;
  6.         if(priod_t<1000)
  7.         {
  8.                 if(key_param.fun_once_click!=NULL) key_param.fun_once_click();//單擊
  9.         }
  10.         else if(priod_t<2500)
  11.         {
  12.                 if(key_param.fun_once_click_2s!=NULL)key_param.fun_once_click_2s();//單擊長按2s
  13.         }
  14.         else if(priod_t<KEY_PRESS_TIMEOUT)
  15.         {
  16.                 if(key_param.fun_once_click_4s!=NULL)key_param.fun_once_click_4s();//單擊長按2s
  17.         }                                
  18.         key_param.press_up_time_count=0;
  19.         key_param.bool_press=FALSE;
  20. }
  21. <blockquote>void key_timer_handler(void)
復(fù)制代碼

  1. #ifndef _KEY_H_
  2. #define _KEY_H_
  3. #include "main.h"


  4. #define STRAIGHT_CLIK_NUM_MAX  3  //最多連續(xù)點擊次數(shù)
  5. #define KEY_PRESS_TIMEOUT 5000
  6. #define NO_CLIK_TIMEOUT 500

  7. //動作定義
  8. typedef enum
  9. {
  10.           KEY_NONE=0,                //無按下 - 無功能
  11.         KEY_TIMEOUT,        //超時  -
  12.         KEY_ONCE,                //單擊        -               
  13.         KEY_DOUBLE,                //雙擊        -               
  14.         KEY_LONG_2S,        //單擊后長按2秒        -        
  15.         KEY_LONG_4S                //單擊后長按4秒        -        
  16. }KEY_ACTION;

  17. typedef struct
  18. {
  19.         u32 press_time_count;
  20.         u32 press_down_time_count;
  21.         u32 press_up_time_count;
  22.         u8 press_result;
  23.         u8 press_count;
  24.         u8 funcode;
  25.         u8 bool_press;
  26.         u8 bool_press_double_start;
  27.         u8 bool_ok;
  28.         u8 bool_pass;
  29.         fun fun_click_down;                        //按鍵按下的事件
  30.         fun fun_click_up;                        //按鍵抬起事件
  31.         fun fun_once_click;                 //單擊事件
  32.         fun fun_once_click_2s;                //長按2S事件
  33.         fun fun_once_click_4s;                //長按4秒事件
  34.         fun fun_once_click_timeout;        //長按超時事件
  35.         fun fun_double_click;                //雙擊事件
  36. }KEY_PARAM;
  37. extern KEY_PARAM key_param;

  38. void key_handler(void);//放在按鍵中斷函數(shù)中,按鍵中斷優(yōu)先級必須比systick的小。

  39. #endif

  40. /*使用說明
  41. *配合HAL庫使用
  42. *需要在stm32xx_it.c中包含key.h頭文件
  43. *在按鍵中斷函數(shù)中調(diào)用key_handler()函數(shù)
  44. *在main函數(shù)中初始化綁定按鍵事件
  45. *綁定按鍵事件未例:
  46.   key_param.fun_click_down=led_on;
  47.   key_param.fun_click_up=led_off;
  48.   key_param.fun_once_click_2s=device_report_start;
  49.   key_param.fun_once_click_4s=device_report_end;
  50.   key_param.fun_once_click_timeout=device_reboot;
  51.   
  52.   其中l(wèi)ed_on、led_off等是用戶函數(shù),即
  53.   void led_on(void);
  54.   void led_off(void);等
  55.   按鍵采用綁定功能函數(shù)形式,增加靈活性。
  56.   除了初始化綁定外,還可以進程中動態(tài)綁定或更改綁定。

  57. */


復(fù)制代碼


為了方便保存,上面2個文件打包下載(或者直接從網(wǎng)頁復(fù)制粘貼也行):
stm32-hal多功能按鍵.zip (2.05 KB, 下載次數(shù): 42)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:978762 發(fā)表于 2023-12-14 15:50 | 只看該作者
學(xué)習(xí)了,正在研究這玩意兒
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产91久久久久福利 | 天天综合网天天综合色 | 日韩伦理一区二区三区 | 成人性视频在线播放 | 99热成人在线| 99国内精品久久久久久久 | 日本一区二区三区在线观看 | 国内自拍偷拍 | 久久久成人免费视频 | 亚洲 欧美 精品 | 亚洲成人精品 | 日韩精品一区二 | 成人视屏在线观看 | 精品亚洲一区二区三区 | 亚洲精品一区二区三区在线观看 | 一级视频黄色 | 国产不卡在线 | 亚洲精品字幕 | 精品一区精品二区 | 国产美女精品视频 | 日本视频免费 | 日韩一区不卡 | 一区二区三区欧美在线 | 成人在线免费观看 | 国产成人免费视频网站高清观看视频 | 欧美视频精品 | 精品国产伦一区二区三区观看体验 | 欧美一区二区在线看 | 国产精品二区三区 | 韩日一区| 成人一区二区三区在线观看 | 欧美精品在欧美一区二区 | 麻豆changesxxx国产 | 99国产精品99久久久久久 | 在线免费视频一区 | 91久久精品国产91久久性色tv | 九九久久精品视频 | 久久之精品 | 欧美黄色一级毛片 | 亚洲午夜av | 色精品视频 |