本帖最后由 damiaa 于 2020-6-18 15:57 编辑
按下按键
这个一般不用EXIT中断。 因为按下一次其实会有下降沿 上升沿 还有中间的毛刺。产生几次正常。
要解决好这个问题最好用定时中断(10毫米)。定时中断里面检测下降沿 上升沿 多测几次滤除毛刺。
定时中断里:
{
static uint8_t Key_IO_stats=0;
static uint8_t Key_IO_Oldstats=0;
Key_IO_stats <<=1;
if(Key_IO)
Key_IO_stats +=1;
}
你只需要在程序的某个地方检测Key_IO_stats
这里还要记住上次的状态
如果是变为0xFF 那就是变高了
if((Key_IO_stats==0xff)&&(Key_IO_Oldstats==0))
{
Key_IO_Oldstats=0xff;
}
如果是变为0 那就是变低了
if((Key_IO_stats==0)&&(Key_IO_Oldstats==0xff))
{
Key_IO_Oldstats=0;
}
其他时候就是正在检测中(8次检测过滤 8次连续为1才为高,8次连续第才为低,其他的都不算。检测次数可以调整 )
|