按键消抖
机器设备上的按钮,是控制指令的输入。
跺一下脚,打一声雷,手机来个电,都会触发输入,机器因此会发疯。
对于转瞬即逝的窜扰信号,机器开关有硬件滤波,就是在开关(按钮)上并一个电容,拉高补低。
机器的软件,要对按键进行消抖。
消抖的基本原理:
读你,暂且存下。
过10毫秒,再次读你,
如果两次的键值一样,
那就当真了,
更新按键的值。
uint8_t Xin(uint8_t Port)
{
uint8_t First_Value=Read_Key(Port);
HAL_Delay(10);//延时10毫秒
uint8_t Second_Value=Read_Key(Port);
if(Second_Value==First_Value)
return First_Value;
else return Second_Value;
}
这是硬延时,按键消抖时,CPU在埋头计数,干不了别的事。
触摸屏会迟钝。
旋钮会间断性失效。
用do while实际和delay()一样。
用定时器失效?