打印
[STM32F1]

关于STM32定时器初始化后马上进入中断问题

[复制链接]
769|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cfstep|  楼主 | 2019-12-21 17:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cfstep 于 2019-12-21 17:29 编辑

STM32定时器初始化后马上立即就会进入中断,按网上的方法如果加一句TIM_ClearITPendingBit(TIM3, TIM_IT_Update); 其实还是进入了中断函数内部,只是不执行用户的有效语句.  应该在TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);这句前加TIM3->CR1=TIM_CR1_URS; 这样中断的条件就不满足了,程序就不会进入定时器的中断函数内部了.

使用特权

评论回复
沙发
airwill| | 2019-12-22 21:15 | 只看该作者
嗯, 支持一下,  把遇到的问题的解决办法分享给大家,  是个好做法

使用特权

评论回复
板凳
香水城| | 2020-1-6 17:27 | 只看该作者
其实,那样清除也够了,在使能定时器更新中断前 执行这句TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  是不会发生一使能定时器中断就进中断服务程序的。

如果按你那样操作,那就意味着只有定时器的溢出事件【上溢或下溢】才能触发更新中断。

但有些场合,比如希望软件方式触发 或从模式复位事件触发更新中断,如果此时将URS位清零就没法
产生相应中断了。

使用特权

评论回复
地板
八层楼| | 2020-1-17 12:59 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
观海| | 2020-1-17 13:04 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
guanjiaer| | 2020-1-17 13:20 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
heimaojingzhang| | 2020-1-17 13:24 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
manufact| | 2020-1-17 13:46 | 只看该作者
应该是只需要清除标志位就可以了的

使用特权

评论回复
9
keaibukelian| | 2020-1-17 13:51 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
10
labasi| | 2020-1-17 13:57 | 只看该作者
非常感谢楼主分享

使用特权

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

本版积分规则

5

主题

141

帖子

2

粉丝