初级会员

- 积分
- 105
- 金钱
- 105
- 注册时间
- 2013-4-3
- 在线时间
- 2 小时
|
发表于 2014-5-18 10:36:24
|
显示全部楼层
刚开始做这个实验时,我也遇到过着个困惑。我用的mini版库函数,当时按键时会出现动作异常。表现为:按键时,灯的状态能翻转,但是松开按键后灯的状态又会翻转一次。
mini版的外部中断函数
void EXTI0_IRQHandler(void)
{
delay_ms(10);
if(EXTI_GetITStatus(EXTI_Line0) != RESET)
{
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
后来参考战舰版的函数,修改了一下,就没有异常了
void EXTI0_IRQHandler(void)
{
delay_ms(10);
if(KEY2==1) //就是这里修改了
{
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
我觉得按键时,松开按键后的抖动(出现下降或者上升沿),又会触发一次外部中断,
但是战舰版的if(KEY2==1),可以在按键松开抖动触发中断时,屏蔽不必要的动作 |
|