程序没有卡在中断里面,触发函数运行没问题,但触发过后,main中的函数就是不运行了
主函数如下:
- int main(void)
- {
- /* LED 端口初始化 */
- LED_GPIO_Config();
- delay_init(168);
- // key_config();
- EXtiX_Init();
- /* 控制LED灯 */
- while (1)
- {
- // if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 1)
- LED1( OFF ); // 亮
- delay_ms(200);
- // if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0)
- LED1( ON ); // 灭
- delay_ms(200);
- // LED3( ON ); // 亮
- // Delay(0xFFFF);
- // LED3( OFF ); // 灭
- //
- // LED4( ON ); // 亮
- // Delay(0xFFFFFF);
- // LED4( OFF ); // 灭
- }
- }
复制代码中断函数:
- void EXTI0_IRQHandler(void)
- {
- static u8 a = 0;
- u32 b = 0;
- //消抖
- while(b < 0xffff)//注释掉循环问题后正常
- {
- b = 0;
- while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0) == 0)
- {
- b++;
- // delay_ms(1);
- }
- }
- a = !a;
- GPIO_WriteBit(GPIOA, GPIO_Pin_10, a); //蜂鸣器翻转
- EXTI_ClearITPendingBit(EXTI_Line0); //清除LINE0上的中断标志位
- }
复制代码但是这句:while(b < 0xffff)//注释掉循环问题后正常
有大神能解答么,多谢
if(...)
{
delay();
if(...)
{
//you code
}
}
一周热门 更多>