OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8657|回复: 16

关于定时器主从模式

[复制链接]

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
发表于 2015-8-4 09:53:46 | 显示全部楼层 |阅读模式
5金钱
最近做项目,看多代码有些地方又有些迷糊了,希望高手给解答一下。
例如:TIM1是从模式,TIM2是主模式。
根据TIM_SelectInputTrigger(TIM2, TIM_TS_TI1F_ED)设置,又有下图

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

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

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

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

最佳答案

查看完整内容[请看2#楼]

1、主定时器可以选择送出 多种TRGO信号到其他定时器(从模式定时器)  包括复位,使能,更新,比较脉冲等TRGO信号(参考TIMx-CCR2),其中比较脉冲信号是指在主定时器发生捕获或者比较时,送出一个正脉冲到从定时器,这个实用你上面的条件 2、根据函数名也可看出是配置从模式寄存器的,所以应该是TIM1,而且参数TIM_SlaveMode_Reset 是指从模式定时器收到主模式的上升沿(上面1所说的正脉冲)触发信号后,从模 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2015-8-4 09:53:47 | 显示全部楼层
1、主定时器可以选择送出 多种TRGO信号到其他定时器(从模式定时器)  包括复位,使能,更新,比较脉冲等TRGO信号(参考TIMx-CCR2),其中比较脉冲信号是指在主定时器发生捕获或者比较时,送出一个正脉冲到从定时器,这个实用你上面的条件
2、根据函数名也可看出是配置从模式寄存器的,所以应该是TIM1,而且参数TIM_SlaveMode_Reset 是指从模式定时器收到主模式的上升沿(上面1所说的正脉冲)触发信号后,从模式定时器复位
3、这个是在定时器做输出时使用,比如输出PWM, 红色部分就用作调节PWM占空比的
这些参考手册都有说明,下去认真看看应该可以理解
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-8-4 17:00:35 | 显示全部楼层
关注!望高手 指点一下!
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-5 10:20:04 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
谢谢你的回复。我再理解理解....
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-5 16:20:25 | 显示全部楼层
回复【3楼】lycreturn:
---------------------------------
你说的第二点不对。我做试验了。这个函数是可以配置到主定时器里面的,它的作用应该是当有外部触发时,
复位自己的计数器。跟主从端没有关系。
回复

使用道具 举报

3

主题

2165

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5773
金钱
5773
注册时间
2013-11-22
在线时间
1211 小时
发表于 2015-8-5 16:56:45 | 显示全部楼层
回复【5楼】侃侃:
---------------------------------
当你使用 TIM_SelectSlaveMode 函数的时候,定时器已经被你配置为从模式了,并非主模式
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-6 18:28:22 | 显示全部楼层
定时器1的配置如下:



定时器3的配置如下:


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

回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-6 18:29:25 | 显示全部楼层
回复【6楼】lycreturn:
---------------------------------
看看我在6楼的回复,你是怎么理解的呢?
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-6 18:29:56 | 显示全部楼层
回复【2楼】烟酒不沾:
---------------------------------
看看我在6楼的回复,大家一起交流一下。
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-8-7 08:19:47 | 显示全部楼层
回复【9楼】侃侃:
---------------------------------
本人认为这里的从模式和主从关系不能理解成主从模式,这里的主从关系是定时器2为主,定时器1为从,主定时器负责产生触发信号,从定时器是根据收到主定时器产生的触发做出某种响应,而从模式只是定时工作时的模式,在从模式下可以和一个外部的触发实现同步,从模式有复位模式、门控模式和触发模式。我们这里说的主从关系下的定时器如功能需要都可以工作在从模式或是不工作在从模式,而不是从定时器一定要配置成从模式,主定时器就要配置成主模式(那主模式又是什么样的一个配置呢?),所以这里的定时器2是主定时器但是工作在从模式复位,我是这样理解的,不知正确否,大家一起交流!
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-7 08:39:12 | 显示全部楼层
回复【10楼】烟酒不沾:
---------------------------------
恩,我也觉得只有这么理解才能在原理上说的通。有没有高手能给个确定的答案。
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-8-7 11:29:59 | 显示全部楼层
回复【11楼】侃侃:
---------------------------------
我的定时器设置代码和你这一样,可是定时器2就是触发不了定时器1进入中断完成换相,所以我也只能在定时器2的中断里完成换相,不知你调试时有没有遇到这种情况,是什么原因呢?
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-7 14:40:37 | 显示全部楼层
回复【12楼】烟酒不沾:
---------------------------------
单方面这么说我也不知道具体是什么原因。这跟你的硬件电路,电机编码器,程序逻辑都有关系。你可以用
示波器观察一下波形。看看定时器2的输出是什么样的,根据现象再来确定原因究竟在什么地方。
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-8-7 16:10:29 | 显示全部楼层
回复【13楼】侃侃:
---------------------------------
不会吧,定时器2是在内部触发定时器1的,你用示波器看?
回复

使用道具 举报

3

主题

12

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-9-15
在线时间
0 小时
 楼主| 发表于 2015-8-8 12:46:59 | 显示全部楼层
回复【14楼】烟酒不沾:
---------------------------------
晕...我写错了定时器1的输出。
回复

使用道具 举报

10

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2016-1-11
在线时间
54 小时
发表于 2017-6-14 17:40:05 | 显示全部楼层
TIM3的从模式设置是不是作为触发触发源的从模式设置,TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset),触发之后复位。
回复

使用道具 举报

5

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2020-3-7
在线时间
12 小时
发表于 2020-3-29 22:52:10 | 显示全部楼层
也有同样的疑惑来看看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-23 23:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表