STM32
直播中

庞琳

7年用户 210经验值
私信 关注
[问答]

为什么有一些中断服务函数中一定要先读状态才能操作?

为什么有一些中断服务函数中一定要先读状态才能操作?
例如 串口中断,定时器中断要必须先读状态才能操作,
//定时器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))//串口中断中的句子,注释掉后,貌相也不行
...
...
...
...
...
}
如果注释掉定时器中断,串口中断服务程序中的读状态语句,则程序就不执行中断后面的内容了,这是为什么呢?

回帖(9)

翁愿冠

2019-6-24 07:16:15
这个问题,我也很困惑...
举报

李林

2019-6-24 07:25:13
原子哥,我先提出关于这个问题的一个勘误。《例说STM32》125页图12.5最后寄存器的最后一位标志“UIE”应该是“UIF”。我看勘误贴中没有这个信息,麻烦您转过去,谢谢。
举报

h1654155275.5627

2019-6-24 07:40:43
谢谢
举报

张红梅

2019-6-24 07:50:46
是啊,Rtc中断,外部中断却又不用读状态就能操作了。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分