systick延时程序在中断后陷入死循环

2019-07-20 22:40发布

[mw_shl_code=c,true]void delay_ms( u32 time ) //72HMZ { u32 temp; SysTick->LOAD = 9*time*1000; /* 时间加载 */ SysTick->VAL = 0X00; /* 清空计数器 */ SysTick->CTRL = 0X01; /* 使能计数器 */ do { temp = SysTick->CTRL; }while( (temp&0X01) && !( temp & (1<<16 ))); SysTick->CTRL = 0X00; /* 关闭计数器 */ SysTick->VAL = 0X00; /* 清空计数器 */ } void EXTI0_IRQHandler( void ) { delay_ms(20); if( (GPIOE->IDR &= 1)==0 ) { printf("你按下了KEY1 "); while( (GPIOE->IDR &= 1)==0 ); } } [/mw_shl_code] 松开按键后  程序在delay_ms函数中死循环?这是为啥   该怎么解决??? 求助  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。