|
本帖最后由 robinsonlin 于 2021-4-8 13:54 編輯
1,在1ms定時(shí)器中斷里面建一個(gè) unsigned long SysTick++;
2,當(dāng)檢測(cè)到按鍵響應(yīng)時(shí),變量TKey = SysTick,采集此時(shí)的系統(tǒng)時(shí)鐘,同時(shí)KeyCount變量+1;
3,在SysTick - Tkey<=1500時(shí),如果還有按鍵響應(yīng),就KeyCount++;
4,當(dāng)SysTick - TKey>1500時(shí),執(zhí)行switch(KeyCount), break后KeyCount變量清零。
附長(zhǎng)短周期判斷,長(zhǎng)短周期判斷,實(shí)際是檢測(cè)按鍵的連續(xù)性, 需要再加一個(gè)10ms的定時(shí)器做按鍵判斷。在10ms定時(shí)器中,設(shè)定按鍵檢測(cè)標(biāo)志,并記錄SysTick,如按下時(shí),TFlag = 1; KeyDelay = SysTick;這個(gè)操作記得加鎖,只執(zhí)行一次。 當(dāng)檢測(cè)到按鍵彈起,TFlag = 0; 然后判斷 SysTick - KeyDelay是否大于500,如果大于就是長(zhǎng)按鍵,KeyCount += 10;如果SysTick - KeyDelay小于500ms,就是短按鍵,KeyCount ++ ; KeyCount 十位就是長(zhǎng)按次數(shù),個(gè)位是短按次數(shù)。 SysTick - Tkey > 1500時(shí),記得清理keyCount。
|
評(píng)分
-
查看全部評(píng)分
|