为什么有一些中断服务函数中一定要先读状态才能操作?
例如 串口中断,定时器中断要必须先读状态才能操作,
//定时器2中断服务函数
u8
tiM2_IRQHandler(void)
{
if(TIM2->SR&(1<<0))//(检查状态) //假如注释掉,则LED0不闪动
{ //假如注释掉,则LED0不闪动
LED0=~LED0;
i=~i;
} //假如注释掉,则LED0不闪动
TIM2->SR&=(~(1<<0));
return i;
}
void USART1_IRQHandler(void)
{
if(USART1->SR&(1<<5))//串口中断中的句子,注释掉后,貌相也不行
...
...
...
...
...
}
如果注释掉定时器中断,串口中断服务程序中的读状态语句,则程序就不执行中断后面的内容了,这是为什么呢?