我是选用第一种方案。
代码如下:
void EXTI0_IRQHandler(void)
{
//if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
if (EXTI_GetITStatus( EXTI_Line0)!= RESET)
{
Mydelay_ms(1000);
EXTI_ClearITPendingBit(EXTI_Line0); //0
Led1_Flag++;//做测试用,发现每次都加了2.
Test3_Led1();
//EXTI_ClearITPendingBit(EXTI_Line0); //最好放在后面以免造成一清0后,因为按键延时又变1。
}
}
这样即使有抖动每次也只会调用一次中断服务函数。 |