打印
[应用相关]

中断标志位为0,却能进入中断

[复制链接]
413|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 | 只看该作者
一旦进入中断是不是就自动清零了

使用特权

评论回复
5
xiaoqizi| | 2021-2-2 23:37 | 只看该作者
感觉应该是哪里出问题了

使用特权

评论回复
6
木木guainv| | 2021-2-2 23:40 | 只看该作者
会不会是其他原因进入的中断啊

使用特权

评论回复
7
海滨消消| | 2021-2-9 10:00 | 只看该作者

同一个中断函数,可能对应多个中断源,可能是其他中断源导致的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1510

主题

4547

帖子

6

粉丝