• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

为什么一些中断服务函数都是要先判断是否发生中断才继续执行呢?判断中断是否发生是不是多余的呢?

万里追牛 2021-02-26 浏览量:1471
想请问为什么经常看到一些中断服务函数都是要先判断是否发生中断才继续执行呢?  如果已经都能进入中断函数了,不就代表中断发生了吗?

例如下面定时器中断的if语句用来判断是否发生中断是不是多余的呢?没有if不行吗
//定时器3中断服务程序
void TIM3_IRQHandler(void)   //TIM3中断
{
        if (TIM_GetITStatus(TIM3 TIM_IT_Update) != RESET)  //检查TIM3更新中断发生与否
                {
                TIM_ClearITPendingBit(TIM3 TIM_IT_Update  );  //清除TIMx更新中断标志
                LED1=!LED1;
                }
}

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 注意看里面的那个参数,TIM_IT_Update,有可能是一个中断函数里面可能发生好几个中断,所以必须判断是由于什么引起的中断。还有可能是不同的中断只有一个中断函数入口。
    • 发布于 2021-02-26
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:4
  • 因为一个中断函数里面可以有很多中断源,所以需要判断哪个中断源
    • 发布于2021-02-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个和中断的实际入口处理有关,因为中断资源的有限性,其实很多中断(同类)是只有一个入口的,需要进一步根据其它信息判断是否应由当前中断实际处理程序进行处理,如果是就处理,否则就直接退出,交由其它中断实际处理程序处理。
    • 发布于2021-03-01
    • 举报
    • 评论 0
    • 0
    • 0

  • 这里是TIM3的所有的中断源的入口,要先确定是哪个中断源引起的中断啊
    • 发布于2021-03-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是判断中断源是哪个,所有定时器的中断都进这个函数
    • 发布于2021-03-11
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

为什么一些中断服务函数都是要先判断是否发生中断才继续执行呢?判断中断是否发生是不是多余的呢?