按鍵消抖


之前我們的按鍵程序沒有考慮抖動的情況。

按鍵按下的會有尖峰脈沖,常見的兩種消抖方式:

第一:硬件消抖

並聯一個電容,利用電容的充放電過程消抖。

第二:軟件消抖

一般的用法就是一個延時,在不是us、ns必爭的的場合,延時個幾毫秒(一般5-10ms)再讀取按鍵值就可以消除抖動了。

韋老師的方法是在按鍵中斷鍵值讀取之前加了一個10ms的定時器延時。

在按鍵中斷的服務函數中,開啟一個10ms的定時器,然后10ms定時器時間到了之后,再去讀取按鍵值。

這里主要學習幾個內核函數和幾個timer的概念。

上面的HZ是一個宏,HZ定義成多少我們不用關心,只用知道用HZ代表的單位是秒。所以HZ/100就是10ms的時間了。

jiffies是一個全局變量,它代表了內核的時基。

 

 

 

 

時間結構體是一個鏈表,暫時我只用關心怎么初始化里面的元素,怎么調用可以實現定時器,進階的待閱讀源碼。

定時器使用步驟:

1.先定義一個定時器的鏈表,然后初始化鏈表init_timer函數,給定時器回調函數賦值buttons_timer.function =XXX,添加定時器add_timer函數

2.需要更改定時器的值調用mod_timer函數

3.定時器時間到了之后,在定時器回調函數中執行想要的操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM