【STM32】按键抖动及消除

由于按键的抖动会导致一次按键动作被当成多次按键,为确保MCU对按键的一次闭合仅作一次处理,必须消除按键的抖动,在按键处于稳定状态时读取按键的状态。

 

按键的去抖动,通常有硬件消抖和软件消抖两种方式。

(1)硬件消抖

在按键数目较少时,可以采用硬件的方法消除按键抖动。比较简单的硬件电路是利用电阻和电容构成的RC低通滤波器来实现,电路结构如图所示。

采用RC低通滤波器实现硬件去抖的关键是选择适当的电阻值和电容值。由于人按键的频率一般低于1kHz,而按键抖动的频率一般是几十到几百kHz。因此,可以将低通滤波器的截止频率选择为10kHz。根据截止频率计算式fLP=1/2πRC可以选取160 Ω的电阻以及0.1 pF的电容来构成RC低通滤波器。

(2)软件消抖

如果按键数目较多,可以采用软件的方法消除按键抖动。处理流程如下:当检测到按键按下后执行一个延时程序,延时时间为5~10 ms。当前沿抖动消失后,再次检测按键的状态,如果仍然保持按下状态,则确认按键真正按下,并执行按键处理任务。同样,对于按键的释放,也需要采用延时函数去掉后沿的抖动。