[应用相关] 中断标志位为0,却能进入中断

[复制链接]
728|6
 楼主| jcky001 发表于 2021-1-6 17:17 | 显示全部楼层 |阅读模式
用的是STM32F407IG,同时开启TIM1, TIM3, 外部计数,开启更新中断
每个定时器中断函数都做了类似如下处理,各自清除自己的标志位,如TIM3中断中清除TIM3-SR,其他定时器SR &  1 是应用需求。
但是在测试中发现,偶然出现 ,进入了中断,但是 if (TIM1->SR) 无法满足的情况,其他定时器也会出现这种情况
程序中没有在其他地方清除SR

void TIM1_UP_TIM10_IRQHandler(void)
{
       if (TIM1->SR)
       {
             // 省略应用程序。

            TIM1->SR  = 0;
            TIM3->SR &= 1;
       }
}

void TIM3_IRQHandler(void)
{
       if (TIM3->SR)
       {
             // 省略应用程序。

            TIM1->SR  &= 1;
            TIM3->SR = 0;
       }
}

renzheshengui 发表于 2021-2-2 23:25 | 显示全部楼层
会不会是判定条件出现问题了啊
wakayi 发表于 2021-2-2 23:28 | 显示全部楼层
是不是已经自己清除标志位了啊
wowu 发表于 2021-2-2 23:34 | 显示全部楼层
一旦进入中断是不是就自动清零了
xiaoqizi 发表于 2021-2-2 23:37 | 显示全部楼层
感觉应该是哪里出问题了
木木guainv 发表于 2021-2-2 23:40 | 显示全部楼层
会不会是其他原因进入的中断啊
海滨消消 发表于 2021-2-9 10:00 | 显示全部楼层

同一个中断函数,可能对应多个中断源,可能是其他中断源导致的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1652

主题

5762

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部