精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

按鍵消抖的軟件和硬件方法

CHANBAEK ? 來源:硬件工程師干貨 ? 作者:硬件工程師干貨 ? 2023-03-01 10:53 ? 次閱讀

1、先看一下按鍵抖動波形

采用鍋仔片式按鍵測量波形。 按鍵按下與抬起的部分都出現抖動,大致時間10ms左右。 為了防止按鍵誤按或者重復識別,必須要按鍵消抖處理。 按鍵消抖有軟件方法和硬件方法。

2、硬件方法:

一般增加對地濾波電容,利用電容兩端電壓不能突變的特性減少抖動雜波,使波形更加規整。

其它的復雜方法如RS觸發器電路一般用在沒有軟件的場合,這里就不做介紹了。

3、軟件方法:采用延時檢測的方法錯開抖動區域。

代碼實現1: 這種方法在主循環內輪詢按鍵狀態,查詢GPIO狀態,這種方法最簡單,也最常見,但是會增加主循環的負荷,按鍵按下時會阻塞主循環,降低主循環實時性。 當然主循環的阻塞是否有影響,根據自己情況判斷。

while(1)
{
    if(KeyGpio == 0)
    {
        DelayMs(10);    //延時10ms
        if(KeyGpio == 0)
        {
            //按鍵處理代碼
        }
    }
    //其它代碼
}

代碼實現2: 按鍵GPIO初始化為中斷方式,按鍵按下后產生外部中斷事件,進入中斷處理函數中,延時消抖,最終調用按鍵處理函數,或者設置標志位去主循環里調用按鍵處理函數。 這種在中斷中延時消抖的方法不少人使用,其性能還不如第一種方法,缺點很明顯,中斷中延時會導致低優先級中斷阻塞,也導致主循環阻塞,實時性更差。

void KeyGpio_IrqHandler(void)
{
    if(KeyGpio == 0)
    {
        //延時10ms
        DelayMs(10);
        if(KeyGpio == 0)
        {
            //按鍵處理代碼
            KeyFunction(); 
        }
    }
    ClearIrqFlag();
}

代碼實現3: 按鍵GPIO初始化為中斷方式,按鍵按下后產生外部中斷事件,進入中斷處理函數中,不采用延時消抖,而是開啟了一個定時器,定時器設定為10ms后產生中斷,定時器中斷后再次檢測按鍵GPIO,如果仍然是按下狀態則調用按鍵處理函數。 中斷中只是開啟了定時器,并未阻塞,主循環也沒有阻塞,從性能上最優,但是這種方法用到了一個定時器,占用了處理器資源。

void KeyGpio_IrqHandler(void)
{
    if(KeyGpio == 0)
    {
        //未開啟定時情況下進入,防止重復開啟定時器
        if(isTimerStart() == 0)
        {
              // 設置定時器時間為10ms
            InitTimer(10);
            // 開啟定時器
            StartTimer();
        }
    }
    ClearKeyIrqFlag();
}


void Timer_IrqHandler(void)
{
    StopTimer();
    if(KeyGpio == 0)
    {
        //按鍵處理代碼
        KeyFunction(); 
    }
    ClearTimerIrqFlag();
}

以上示例偽代碼采用10ms延時,使用時可根據實際情況調整。

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

    關注

    69

    文章

    4770

    瀏覽量

    87157
  • 波形
    +關注

    關注

    3

    文章

    378

    瀏覽量

    31506
  • 觸發器
    +關注

    關注

    14

    文章

    1995

    瀏覽量

    61051
  • GPIO
    +關注

    關注

    16

    文章

    1196

    瀏覽量

    51915
  • 按鍵消抖
    +關注

    關注

    2

    文章

    27

    瀏覽量

    10442
收藏 人收藏

    評論

    相關推薦

    按鍵硬件電路原理詳解

    按鍵通常的按鍵所用開關為機械彈性開關,當機械觸點斷開、閉合時,由于機械觸點的彈性作用,一個按鍵開關在閉合時不會馬上穩定地接通,在斷開時也
    的頭像 發表于 02-02 09:42 ?9344次閱讀
    <b class='flag-5'>按鍵</b>的<b class='flag-5'>硬件</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>電路原理詳解

    單片機的按鍵與幾種按鍵電路

    按鍵電路 一、 硬件按鍵電路控制電路 所示利用RC 積分電路來達成雜波的濾除
    的頭像 發表于 12-17 07:45 ?10.6w次閱讀
    單片機的<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>與幾種<b class='flag-5'>按鍵</b>電路

    按鍵

    請問大家的按鍵是用什么方法解決的,如普通的按鍵如何
    發表于 09-26 22:17

    FPGA按鍵方法

    FPGA按鍵方法
    發表于 05-01 16:12

    技術分享:明德揚按鍵的原理和基于fpga的設計

    按鍵按鍵可分為硬件
    發表于 08-02 10:38

    按鍵硬件原理

    按鍵硬件原理:利用電容充放電特性來實現,因為電容為儲能元件。它兩端的電壓不能出現突變,即有一個充放電的過程下降沿觸發電路:上升沿觸發電路:什么是RC電路?STM8S手冊中IO口的邏
    發表于 12-07 12:47

    有什么方法去實現按鍵

    怎樣用軟件即程序來實現按鍵呢?有什么方法去實現按鍵
    發表于 12-15 07:25

    介紹獨立按鍵方法

    目錄按鍵介紹按鍵方法按鍵檢測原理C51例程歡迎加QQ及郵件交流
    發表于 01-14 07:49

    按鍵延時方法和目的分別是什么

    的地方,開發成本高,操作難度大,可移植性差。軟件就相對較好些,新手即可操作,延時,并非
    發表于 01-17 06:26

    按鍵都有哪些處理方式?

    按鍵都有哪些處理方式除了硬件電路用軟件怎么實
    發表于 11-01 07:06

    基于FPGA的按鍵電路設計

    采用了VHDL語言編程的設計方法,通過FPGA來實現按鍵硬件電路。論述了基于計數器、RS觸發器和狀態機3種
    發表于 12-05 14:13 ?224次下載

    VHDL—按鍵

    按鍵檢測需要,一般有硬件軟件兩種方式。硬件就是加去抖動電路,這樣從根本上解決
    發表于 11-11 17:17 ?2次下載

    使用51單片機實現按鍵的資料和程序免費下載

    抖動是機械按鍵存在的現象,是必須要進行處理的。一般處理有兩種方式:一種是硬件,另一種是軟件
    發表于 07-05 17:41 ?5次下載
    使用51單片機實現<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>的資料和程序免費下載

    【單片機】按鍵及原理(硬件軟件方法詳解)

    淺談:在設計單片機按鍵輸入的時候,進行按鍵是防止按鍵輸入被CPU誤讀多次的必要手段。一、按鍵
    發表于 11-11 12:06 ?15次下載
    【單片機】<b class='flag-5'>按鍵</b><b class='flag-5'>消</b><b class='flag-5'>抖</b>及原理(<b class='flag-5'>硬件</b>和<b class='flag-5'>軟件</b><b class='flag-5'>方法</b>詳解)

    按鍵/開關量信號監測實現方案

    關于按鍵或者開關量信號監測,可以參考本公眾號的另外一篇原創文章:按鍵常用的軟
    的頭像 發表于 09-19 11:35 ?946次閱讀