欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2718|回復: 4
收起左側

關于STM32用定時器配合做按鍵消抖的程序,請大神們看看我寫的有啥毛病沒,懇請指導

[復制鏈接]
ID:929847 發表于 2021-6-21 08:53 | 顯示全部樓層 |閱讀模式
思路是這樣的,通過定時器TIM5,其實哪個定時器都行,5毫秒進入中斷一次,然后創建個函數檢測IO口的狀態,每次進入中斷執行一下函數體的變量左移一位,變量聲明是char型,5*8=40毫秒來進行消抖,這樣不需要Delay這樣的函數來占用系統的運行時間,這個函數已經通過測試能用,但不知道這樣的方法有啥好處,有啥不好處,還有函數體有沒有什么再優化的地方。請大神們過目

按鍵檢測的函數體,放在TIM5中斷函數中每次調用

按鍵檢測的函數體,放在TIM5中斷函數中每次調用

主程序中執行LED燈的亮與滅

主程序中執行LED燈的亮與滅

按鍵沒按下時候LED1不亮

按鍵沒按下時候LED1不亮

按下彈起LED1亮,一次重復,開關開關

按下彈起LED1亮,一次重復,開關開關
回復

使用道具 舉報

ID:517951 發表于 2021-6-21 09:23 | 顯示全部樓層
好處就是,按鍵掃描期間,CPU不用死等可以干別的事務,不好的地方需要:占用一個定時器硬件資源來完成掃描動作,延時等待是純軟件方式完成的,各有優點,自己按項目做好規劃取舍。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:592807 發表于 2021-6-21 09:42 | 顯示全部樓層
好處。
1. 可以進行多個按鍵測檢測,即組合按鍵檢測
2.按鍵檢測函數不會占用太多CPU時間

壞處。
1必須確保按鍵時長大于40ms,且中斷不會被其中斷打斷
2標志位刷新機制不合理,如標志位改變需要40ms,這40ms里面按鍵標志位被主函數調用多少次?

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:592807 發表于 2021-6-21 09:58 來自觸屏版 | 顯示全部樓層
黃youhui 發表于 2021-6-21 09:42
好處。
1. 可以進行多個按鍵測檢測,即組合按鍵檢測
2.按鍵檢測函數不會占用太多CPU時間

這里的壞處2解釋一下,就是正常的軟件延時消抖會在消斗完成后如果是短按的話用while(1)等待按鍵彈起,確保每個按鍵效果只觸發一次。長按的話才會用樓主那種方法使用標志位,但是哪怕是長按不會在處理函數里面刷新標志位的,畢竟長按1秒會被觸發1000/40=25次函數(LED閃爍太快肉眼看不見,可以用串口打印試試)
回復

使用道具 舉報

ID:929847 發表于 2021-6-21 10:05 | 顯示全部樓層
謝謝大神們的指導,這個函數最初我是在51單片機上做過單個按鍵和多個按鍵的實驗,單片機實現的功能可能單一,沒與出現多個中斷源搶占的情況,可能沒發現一些問題,但感覺32的單片機這樣做按鍵消抖有點多余。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表