STM32之系统时基定时器中如何完成按键防抖动问题

在按键演示防抖动部分的主要思路是:利用系统定时器溢出间隔中断来延时防抖。这样做可以提高代码的执行效率。我们怎么去很好的利用这个系统定时器来延时呢?如果只是简单在系统定时器中断中置位延时标志位,没有任何意义,我们需要有一个标志位来允许置延时标志。第一次扫描到有按键按下时,延时标志肯定为空,那么在此置位一个标志位,来允许系统定时器中置位延时标志,就解决了这个问题

软件的逻辑结构是:如果没有延时,则置位允许延时标志置位标志。首先是置位标志位,如果置位了,在系统定时器溢出中断中,就可以置位延时标志位。如果已经置位,处理按键值。

下面给出一个在按键处理中的对延时标志判断的处理。

if(key_bit & 0x02)  //如果按键没有被处理

{

if(key_bit  & 0x01)  //如果已经延时

{

key_bit &= ~0x01;//清0标志位

LED2B();//跳转LED2灯

key_bit |= 0x02;//置位按键处理标志

}

else  //如果没有存在延时

{

key_bit |= 0x04;//置位 允许延时标志位置位 标志位

}

}

你可能感兴趣的:(STM32之系统时基定时器中如何完成按键防抖动问题)