最近在用STM32调试按键,通过按下一个按键来切换不同的状态,如:第一次按下,OLED显示“IntelligentModel”,第二次按下显示“CommonModel ”。结果写好之后,按下按键,不能一次切换过去,要按下多次才能切换,而且OLED的屏幕一直在闪烁这几个字符。于是我想想到了按键消抖的问题,加一个延时10ms,结果不行,当我延时到50ms时,问题解决了!当出现类似问题时,可以适当加大延时,也许就可以解决按键抖动的问题。下面是部分代码:
while(1)
{
key = KEY_Scan(0);
if(KEY0 == 0)
{
delay_ms(50);
if(KEY0 == 0)
{
delay_ms(50);
flag = ~flag;
if(flag)
{
OLED_ShowStr(0, 1, (unsigned char*)"IntelligentModel");
}
else
{
OLED_ShowStr(0, 1, (unsigned char*)"CommonModel");
}
}
}
}