![]() |
發布時間: 2021-6-21 08:53
正文摘要:思路是這樣的,通過定時器TIM5,其實哪個定時器都行,5毫秒進入中斷一次,然后創建個函數檢測IO口的狀態,每次進入中斷執行一下函數體的變量左移一位,變量聲明是char型,5*8=40毫秒來進行消抖,這樣不需要Delay這樣 ... |
謝謝大神們的指導,這個函數最初我是在51單片機上做過單個按鍵和多個按鍵的實驗,單片機實現的功能可能單一,沒與出現多個中斷源搶占的情況,可能沒發現一些問題,但感覺32的單片機這樣做按鍵消抖有點多余。 |
黃youhui 發表于 2021-6-21 09:42 這里的壞處2解釋一下,就是正常的軟件延時消抖會在消斗完成后如果是短按的話用while(1)等待按鍵彈起,確保每個按鍵效果只觸發一次。長按的話才會用樓主那種方法使用標志位,但是哪怕是長按不會在處理函數里面刷新標志位的,畢竟長按1秒會被觸發1000/40=25次函數(LED閃爍太快肉眼看不見,可以用串口打印試試) |