我是选用第一种方案。
代码如下:
- 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。
- }
- }
这样即使有抖动每次也只会调用一次中断服务函数。
|