用exit的方式连接了5个按键,每个按键边上有个104电容。 gpio配置为IPU,然后按下exit4的时候回触发exit5 其他的按键也有这个现象(概率不太好说,差不多没5-10下回触发一下)。
不加电容exti中断会进入的次数多一些,我一般加个延时消抖效果也挺好的。但是我不明白为什么会乱触发。
附上中断里面的代码
void EXTI9_5_IRQHandler(void)
{//printf("k2222y1\n");
if(EXTI_GetITStatus(EXTI_Line5)!=RESET){
printf("key1\n");
EXTI_ClearITPendingBit(EXTI_Line5);
}else if(EXTI_GetITStatus(EXTI_Line6)!=RESET){
printf("key2\n");
EXTI_ClearITPendingBit(EXTI_Line6);
}else if(EXTI_GetITStatus(EXTI_Line7)!=RESET){
printf("key3\n");
EXTI_ClearITPendingBit(EXTI_Line7);
}else if(EXTI_GetITStatus(EXTI_Line8)!=RESET){
printf("key4\n");
EXTI_ClearITPendingBit(EXTI_Line8);
}else if(EXTI_GetITStatus(EXTI_Line9)!=RESET){
printf("key5\n");
EXTI_ClearITPendingBit(EXTI_Line9);
}
}
要不说什么延时消抖很垃圾,我觉得满足需求就好了,软件延时软件写起来方便多了。另外本人亲手验证加个104的电容有利于按键消抖。 |