中斷模式下如何實現按鍵消抖

2021-10-01 20:47:14 字數 724 閱讀 4267

本實現方法為邊沿觸發方式:定義乙個標誌位,中斷處理程式只負責處理該標誌位,主函式負責處理主要中斷任務與標誌位。具體實現過程如下所示:

①:將標誌位清零。

//定義全域性變數用於實現消抖

unsigned

int flag_isr_eint2 =

0;

② 在主函式內使用switch case實現對不同按鍵狀態的判斷與功能。標誌位flag_isr_eint2 為外部中斷2標誌位,為0表示按鍵還沒按下,為1表示按鍵已經按下,為2表示正在等待按鍵彈起,為3表示按鍵已經彈起。各部分功能如下所示:

switch

(flag_isr_eint2)

case2:

break

;//等待按鍵彈起

case3:

//表示按鍵已經彈起

default

:break

;}

③ 在中斷處理程式中依次處理該標誌位。

// 中斷標誌位置操作,用於消抖

switch

(flag_isr_eint2)

case1:

break

;//等待彈起

case2:

default

:break

;}

中間使用延時20ms不是很符合實時性的要求,讀者可嘗試改用定時器方式實現。

驅動 按鍵 中斷模式

驅動 按鍵 中斷模式 eint drv.c 驅動 include include include include include include include include include include include static struct class eintdrv class sta...

運用外部中斷檢測按鍵實現任務

stm32的每個io都可以作為外部中斷輸入,stm32的中斷控制器支援19哥外部中斷 事件請求 0 15 i o輸入中斷 16 連線到pvd輸出。17 連線到rtc鬧鐘事件。18 連線到usb喚醒事件。1 上公升沿 exti initstructure.exti trigger exti trigg...

python檢測按鍵按下 如何檢測按鍵是否被按下?

對於python,作為乙個新手,我嘗試著用一本指南來編寫我自己的遊戲。不過,在這個遊戲中,我試著檢測什麼時候乙個鍵一直被按住而不是僅僅按下。我使用的當前 不會使字元移動,而且如果沒有實現halt self,evt 會導致飛船在按住按鈕足夠長時間後無法控制地加速。在from tkinter impor...