[求助] stm32通用定时器TIMx4个通道都可以触发中断,但TIMx值对应一个中断向量,怎么办

jonny0811   2016-6-5 12:21 楼主
对stm32通用定时器,以TIM3为例,其对应着一个中断向量。而TIM3有4个独立的通道可以分别配置成不同的模式。有些模式是可以触发中断的,那如果我使用了TIM3的4个通道,都配置成了捕获模式并且使能中断。 那四个通道产生中断都进入同一个中断程序啊,还要在中断里面判断是哪个通道引起的中断,对不咯?之前只使用普通的定时器功能还没察觉到这个。 _____________________________________________________________________ 另外,其实可不可以这样说:之所以4个通道能独立工作在不同模式,是因为四个通道都拥有一个比较/捕获寄存器,而各种功能的实现,就是计数器CNT跟这个比较/捕获寄存器联合工作的成果。 谢谢大家 本帖最后由 jonny0811 于 2016-6-5 12:43 编辑

回复评论 (6)

公用中断向量的时候就要靠软件来区分了,就好像串口收发,,,
后面部分说的完全对,就是那么个东西,围绕着那几个关键的寄存器展开。
点赞  2016-6-6 00:26
引用: huo_hu 发表于 2016-6-6 00:26
公用中断向量的时候就要靠软件来区分了,就好像串口收发,,,
后面部分说的完全对,就是那么个东西,围绕 ...

谢谢版主。我昨天想到了一种情况:在stm32的通用定时器的CNT数据上溢或下溢的时候,如果使能了中断,是会触发中断的。那么问题来了啊,在我们初始完timer并将其打开的时候,CNT是从0计数到ARR的(向上计数),那就是说定时器一打开,CNT装0,这个0刚好就会触发中断。是这样子的吗?(网上好像也有人遇到这样的情况)
————————————————————————————————————————
在TI的C2000芯片中,确实是这样子的,一打开定时器的时候,由于将0装入CNT,它马上就会触发一次下溢中断。这就导致了,如果是用中断计数,多进入一次中断,就意味了多计了一次。。。。。
点赞  2016-6-6 13:33
全装好以后清除标记再启动,溢出信号实际就是+-的进借位。不应该是=0,这不仅是多少一次中断的问题,要按你说的周期值得计算也差1个了。 本帖最后由 huo_hu 于 2016-6-6 15:14 编辑
点赞  2016-6-6 15:10
通过不同的标志位来判断是谁触发的中断
点赞  2016-8-5 17:36
引用: huo_hu 发表于 2016-6-6 15:10
全装好以后清除标记再启动,溢出信号实际就是+-的进借位。不应该是=0,这不仅是多少一次中断的问题,要按你 ...

抱歉,回复晚了,谢谢版主。版主有没有试过用stm32做BLDC基于AD采样的控制器啊?
点赞  2016-8-13 01:11
引用: zh2790 发表于 2016-8-5 17:36
通过不同的标志位来判断是谁触发的中断

谢谢
点赞  2016-8-13 01:12
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复