关于定时器主从模式

2019-08-17 07:37发布

最近做项目,看多代码有些地方又有些迷糊了,希望高手给解答一下。
例如:TIM1是从模式,TIM2是主模式。
根据TIM_SelectInputTrigger(TIM2, TIM_TS_TI1F_ED)设置,又有下图

  
TIM2起的作用是:当捕获到霍尔传感器的异或值有变化时,就触发TIM2的中断。TIM2的CCR1用来存储捕获
发生时TIM2_CNT的值,然后CCR1清零。主定时器再去触发从定时器中断,从而实现换相。在这个过程中我有
三点不明白,希望高手给指点一下,在这里谢谢了。
  
            1、主定时器是如何去触发从定时器中断(COM事件)的,在何时去触发的?

            2、 TIM_SelectSlaveMode(主定时器还是从定时器?, TIM_SlaveMode_Reset),红 {MOD}字体部分是应该
                   写成TIM2(主定时器)还是TIM1(从定时器),有此疑问是因为两种写法的都有,怎么理解呢?

            3、 TIM_TimeBaseStructure.TIM_Prescaler = 71;
                  TIM_TimeBaseStructure.TIM_Period =50000;
                   TIM_OCInitStructure.TIM_Pulse =1023; 看到很多人在主定时器配置中都有这句,不理解是怎么来的?

          希望明白的人能给指点一二,谢谢...

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
lycreturn
1楼-- · 2019-08-17 11:33
1、主定时器可以选择送出 多种TRGO信号到其他定时器(从模式定时器)  包括复位,使能,更新,比较脉冲等TRGO信号(参考TIMx-CCR2),其中比较脉冲信号是指在主定时器发生捕获或者比较时,送出一个正脉冲到从定时器,这个实用你上面的条件
2、根据函数名也可看出是配置从模式寄存器的,所以应该是TIM1,而且参数TIM_SlaveMode_Reset 是指从模式定时器收到主模式的上升沿(上面1所说的正脉冲)触发信号后,从模式定时器复位
3、这个是在定时器做输出时使用,比如输出PWM, 红 {MOD}部分就用作调节PWM占空比的
这些参考手册都有说明,下去认真看看应该可以理解
烟酒不沾
2楼-- · 2019-08-17 14:34
关注!望高手 指点一下!
侃侃
3楼-- · 2019-08-17 15:05
回复【3楼】lycreturn:
---------------------------------
谢谢你的回复。我再理解理解....
侃侃
4楼-- · 2019-08-17 17:18
 精彩回答 2  元偷偷看……
lycreturn
5楼-- · 2019-08-17 21:42
回复【5楼】侃侃:
---------------------------------
当你使用 TIM_SelectSlaveMode 函数的时候,定时器已经被你配置为从模式了,并非主模式
侃侃
6楼-- · 2019-08-17 23:49
定时器1的配置如下:



定时器3的配置如下:


这是电机换相程序的定时器配置片段,换相是在定时器1中进行的,由定时器3去触发定时器1,
依据参考文档,定时器3应该是主定时器,定时器1应该是从定时器,可是本程序在定时器3中加入了
 TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);  我验证了这段程序是好使的。
这个怎么从原理上说通呢?我知道我的理解肯定是有误区的。

一周热门 更多>