|
用了好久delay20ms的按键消抖,觉得很不爽! 我这么牛B的工程师怎么能用delay呢! 于是手撸一个无延迟的按键消抖. #define KEY2 GPIOE, 4 uint32_t Key2Level, Key2Tick; int main() { Tick_Init(); // Tick是开机以来的微秒数 IO_Config(KEY2, IO_IN_PU); EXTI_Config(KEY2, EXTI_RISING|EXTI_FALLING); Key2Level = IO_IN(KEY2); NVIC_EnableIRQ(EXTI4_IRQn); for (;;); } int n; ISR(EXTI4_IRQn) { if (Key2Level && Tick - Key2Tick > 10000) { n++; // 做你喜欢做的事 } EXTI_ClearFlag(KEY2); Key2Level = IO_IN(KEY2); Key2Tick = Tick; } |
微信公众号
手机版