请教定时器中断中更新中断和计数器中断的区别问题

2019-07-21 07:21发布

            
书上给的例子是500ms的计时,每次传入的形参是4999(arr),那意思是不是就是每次从4999开始递减,减到0便进入中断,可是也没见设置计数器的计数方向是向下计数,还有这个更新中断和计数器中断有什么区别,为啥这里面还要弄一个允许更新中断。比喻51里面,我给一个重装值,使能定时器中断允许位,那么当这个数加到了65536就可以触发定时器中断。类比STM32,对于那个计数方向的设置和其他相关使能位还能理解,但是对于冒出这么一个更新中断很是不理解,不知道他放在这里有啥优点,又能解决啥问题。


上面这个图是不是也说明计数器溢出自己就会触发中断,不需要弄个更新事件中断?拜托学懂了的人帮忙提点一下。谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
33条回答
lingyue502
1楼-- · 2019-07-21 11:15
还有说掉了一句,什么时候可以不用那个允许更新中断
正点原子
2楼-- · 2019-07-21 14:32
没有配置的就代表用默认值,默认值是0,那么请去<stm32参考手册>找到计数器方向控制位,去看看0代表什么方向.
更新中断一般就是指计数器的上溢/下溢时产生的中断,你的截图上面就是CNT值到达ARR了,重新归零,此时产生了更新中断标志位.
正点原子
3楼-- · 2019-07-21 16:10
回复【2楼】lingyue502:
---------------------------------
你不想产生更新中断的时候,就可以不要.
lingyue502
4楼-- · 2019-07-21 19:53
 精彩回答 2  元偷偷看……
shuidi_wangdan
5楼-- · 2019-07-21 20:07
回复【3楼】正点原子:
---------------------------------
TIM3->DIER|=1<<0;   //允许更新中断
TIM3->DIER|=1<<6;   //允许触发中断
触发中断与更新中断
是不是说定时器到时间用的是触发中断,而计数器更新数据用的是更新中断呢?
原子哥请指教?
正点原子
6楼-- · 2019-07-22 00:56
回复【6楼】shuidi_wangdan:
---------------------------------
不是,注释掉触发中断,也是可以正常运行的。。。
触发是指外部触发,比如ETR之类的。。。

一周热门 更多>