娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月25日(星期二)

正在發生

2021年03月25日 | 單片機上的按鍵檢測框架

發布者:獨行俠客 來源: eefocus關鍵字:單片機  按鍵檢測  框架 手機看文章 掃描二維碼
隨時隨地手機看文章

下面是我之前寫的一個按鍵檢測的框架,適合比較多的按鍵操作,從信號接收、濾波、最好處理按鍵任務,大體上沒什么問題,不過沒具體測試過到時可能會有bug。


  1 /******************************************************************************

  2 * @file    button.c

  3 * @author  wule

  4 * @version 

  5 * @date    

  6 * @brief   

  7 ******************************************************************************

  8 *

  9 *****************************************************************************/

 10 

 11 typedef unsigned char ButtonSizeType;

 12 

 13 typedef enum{

 14                 RESET = 0,

 15                 SET = !RESET,

 16             }FLAG;

 17 

 18 typedef struct button_bit{

 19     ButtonSizeType button1:1;

 20     ButtonSizeType button2:1;

 21     ButtonSizeType button3:1;

 22     ButtonSizeType button4:1;

 23     ButtonSizeType button5:1;

 24     ButtonSizeType button6:1;

 25     ButtonSizeType button7:1;

 26     ButtonSizeType button8:1;

 27 }ButtonBitType;

 28 

 29 typedef union

 30 {

 31     ButtonBitType button_bit;

 32     ButtonSizeType button;

 33 }ButtonType;

 34 

 35 ButtonType InputFlag;

 36 

 37 //初始化按鍵標志狀態

 38 void Init_Button_Variable(void)

 39 {

 40     InputFlag.button = 0;

 41 }

 42 

 43 //判斷函數,讀取每個按鍵的狀態

 44 ButtonSizeType ReadButtonBit(void)

 45 {

 46     ButtonType button_bit;

 47     

 48     button_bit.button = 0;

 49     

 50     button_bit.button_bit.button1 = 1;

 51     button_bit.button_bit.button3 = 1;

 52     button_bit.button_bit.button5 = 1;

 53     

 54     return button_bit.button;

 55 }

 56 //濾波,返回值代表當前按鍵的值

 57 ButtonSizeType Button_Filter(void)

 58 {

 59     ButtonSizeType bf_buf;

 60     static ButtonSizeType bf_pre_buf = 0,bf_backval = 0;

 61     static unsigned char bf_filtercnt = 0;

 62     

 63     bf_buf = ReadButtonBit();

 64 

 65     if(bf_buf != bf_backval && bf_buf == bf_pre_buf)//判斷兩次是否相同

 66     {

 67         bf_filtercnt ++;

 68         if(bf_filtercnt > 50)//作一個簡單的濾波

 69         {

 70             bf_backval = bf_pre_buf;

 71         }

 72     }

 73     else

 74     {

 75         bf_pre_buf = bf_buf;

 76         bf_filtercnt = 0;

 77     }

 78     

 79     return bf_backval;

 80 }

 81 //處在一個時間可控的位置,這里可以實現各種按鍵的操作

 82 void ButtonTask(void)

 83 {

 84     ButtonType bt_state = Button_Filter();//得到按鍵狀態

 85     

 86     if(InputFlag.button_bit.button1 == 0 && bt_state.button_bit.button1 == 1)

 87     {

 88         //單次觸發

 89     }

 90     else if(InputFlag.button_bit.button1 == 1 && bt_state.button_bit.button1 == 0)

 91     {

 92         //單次釋放

 93     }

 94     

 95     

 96     if(bt_state.button_bit.button1 == 1)

 97     {

 98         //計時觸發

 99     }

100     else

101     {

102         //結束判斷按的時間

103     }

104 }


關鍵字:單片機  按鍵檢測  框架 引用地址:單片機上的按鍵檢測框架

上一篇:STM32項目中遇到的一些問題以及解決辦法
下一篇:STM32學習1:GPIO輸出實驗——點亮三色LED

推薦閱讀

Micro LED技術被炒得震天價響,儼然是次世代的顯示技術霸主,更是2018年的顯示明星。然而,目前Micro LED依然存在許多的難題,不管是制程技術、檢驗標準,或者是生產成本,都與大量商業應用有著很大的距離,而其中一個最主要的挑戰,就是如何導入大量生產,以降低其制造成本,而此一環節被稱為「巨量轉移」。要理解巨量轉移,當然要先知道什么是Micro L...
作者:Anton PatyuchenkoWilhelm Conrad R?tgen于1895年發現了X射線,讓他獲得了第一個諾貝爾物理學獎,也為醫療成像領域奠定了基礎。自那以后,X射線技術已經發展成為一門廣泛的科學學科,從最廣泛的意義上說,它是指眾多用于人體內部的無創可視化技術。本文討論一些主要的現代醫療成像系統,這些系統雖然運用完全不同的物理原理和處理技術,但都有一...
麻省理工學院的科學家創造了一種新的仿真系統,他們發明了這種系統來訓練具有無限轉向可能性的自動駕駛汽車。仿真系統的目標是幫助自動駕駛汽車學習駕馭各種最壞情況的場景,然后才能在全國和世界的真實街道上自由行駛。目前自動汽車的控制系統在很大程度上依賴于來自人類駕駛員駕駛軌跡的真實數據集。根據這些數據,自動駕駛汽車可以學習模擬各種情況下的...
自動駕駛仿真的重要性不言而喻,百度、騰訊、華為、WAYMO等巨頭都已經投入研發。 傳統意義上,汽車仿真和交通仿真是分開研究的。在自動駕駛時代(或智能網聯汽車時代),由于逐步實現車輛聯網、車車通信、車路協同、萬物互聯,汽車仿真和交通仿真需要越來越多的協同和融合。通過在擁有豐富的不同道路使用者之間交互的模擬交通流中進行訓練,自動駕駛汽車才...

史海拾趣

問答坊 | AI 解惑

中關村之痛;中關村是如何痛失“技術中心”地位的?

中關村之痛中關村是如何痛失“技術中心”地位的?       2004年,中國高科技產業發展出現拐點:中國高科技產業由于資本市場退出形式的好轉,以及網絡熱潮的重新回暖,而被注入全新活力,開始步入新一輪黃金時期。2003年1 ...…

查看全部問答∨

PB中添加winsock2支持

我在PB中新建的工程,里面添加了MFC,USB鼠標鍵盤,SD卡,FTP等,導出的SDK,在EVC里面編寫程序,不能用winsock2庫,winsock2.h和ws2.lib文件都沒的,但EVC自帶的SDK的目錄下卻有!哪位朋友知道怎么在PB里添加winsock2支持嗎?…

查看全部問答∨

CE60 R3支持手勢功能,它是怎么支持的?提供有API?CE60 R3以前的系統要做手勢功能怎么做?WM_LBUTTONDOWN+WM_MOUSEMOVE?

CE60 R3支持手勢功能,它是怎么支持的?提供有API?CE60 R3以前的系統要做手勢功能怎么做?WM_LBUTTONDOWN+WM_MOUSEMOVE?…

查看全部問答∨

STC12LE5206AD 程序將引腳置為0 卻檢測到為高

有誰能夠幫忙解決下啊? 本人qq:853887107…

查看全部問答∨

【網絡攝像機】如何利用網絡服務器或網絡攝像機控制 PTZ ?

答: 按照普遍理解: 網絡攝影機(或視頻服務器)、解碼器、云臺、鏡頭,在遠程監控、數字化監控,應該理解為前端設備,而我們操作員控制的電腦、軟件,屬于後端控制中心設備; 我們的控制指令,是通過我們操控的電腦、軟件(或網絡攝影機 ...…

查看全部問答∨

電腦USB電壓嚴重偏高的原因??

我家的組裝電腦用了2年多,最近偶然間發現,當指尖與機箱金屬外殼接觸時,有較強烈觸電的感覺,后來用萬用表測試了前后的usb端口電壓竟高達30V,我家用的是華碩P5G4IT-MLX系列主板,以上還請各位大蝦多多指教!!…

查看全部問答∨

VHDL實用100例

比較基礎,適合初學者…

查看全部問答∨

求G2553 SPI 寄存器資料

如題,望大家幫忙,謝謝!!…

查看全部問答∨

交流反相放大

本帖最后由 paulhyde 于 2014-9-15 04:06 編輯 我做了一個基于LM324的交流反相放大,放大可以,但是交流會失真,有沒有哪位同學做過這個的,能不能告訴我你們的參數。。。。。 圖是網上比較容易找到的用LM324的圖,我的電腦有點問題不能上圖。。 ...…

查看全部問答∨

基于bq24161+TPS2419的雙電池供電方案設計分析

本文檔介紹了基于bq24161+TPS2419的雙電池供電方案設計分析,歡迎大家下載分享哦~ …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 安远县| 三明市| 鹿邑县| 万全县| 盘锦市| 泾川县| 扶沟县| 古浪县| 化州市| 鄢陵县| 阿坝| 泾川县| 长武县| 镇沅| 达尔| 永嘉县| 黄平县| 手游| 长岛县| 岫岩| 满城县| 分宜县| 惠安县| 林甸县| 淄博市| 绥芬河市| 安丘市| 仙游县| 建宁县| 东丰县| 马鞍山市| 章丘市| 柳林县| 肥东县| 乐平市| 从化市| 兴安县| 合江县| 张家界市| 岳普湖县| 满城县|