STM32/STM8技术william hill官网
直播中

王娟

7年用户 464经验值
私信 关注
[问答]

STM32F3两个定时器里产生出来的PWM不能同步

在使用STM32F3的tiM1和TIM8产生8路PWM时,有一个问题,就是最后使能TIM1和TIM8时,由于不能同时使能,所以两个定时器里产生出来的PWM不能同步,有一个相位差。
用库函数使能如下,发现相位差较大。
TIM_Cmd(TIM1,ENABLE);//使能TIM1
TIM_Cmd(TIM8,ENABLE);//使能TIM8
改用寄存器使能如下:
TIM1->CR1|=0x01;     //使能定时器1
TIM8->CR1|=0x01;     //使能定时器8
使用寄存器使能可以减小相位差,但是不能使两个PWM同步,请问有没有人有办法可以帮我解决这个困难?

回帖(10)

贾虎世

2018-11-12 17:22:09
用外部信号来触发两个定时器。
比方T1 配置为外部输入触发,TS=101(TI1FP1)SMS =110(触发模式),配置T1的MMS= 001,T1的使能信号作为TRGO输出到T8.

配置T8在T1的TRGO触发下开始运行,配置TS=000,SMS=110
举报

王娟

2018-11-12 17:22:42
好的,试试,多谢
举报

王艳

2018-11-12 17:22:59
其中一个定时器的主模式输出设置为使能,即TIMx_CR2的MMS为001。
另外一个设置为从模式,方式选触发。TIMx_SMCR的SMS为110。
这样设置好了后启动第一个定时器时,第二个会自动启动。
举报

刘军

2018-11-12 17:23:14
  /* Select the Master Slave Mode */
   TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable);
   /* Master Mode selection */
   TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Enable);

   TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Trigger);
   TIM_SelectInputTrigger(TIM8, TIM_TS_ITR0);

运行后T1 MMS=001    T8 SMS=0X06 ;
举报

王娟

2018-11-12 17:25:01
波形如下 6.png
举报

王娟

2018-11-12 17:25:20
一样不同步
举报

王娟

2018-11-12 17:25:32
  改成TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Gated);,就好了
举报

李明

2018-11-12 17:25:46
用一个定时器触发2路 pwm
举报

王超

2018-11-12 17:25:57
能否把配置程序分享一下,谢谢。我现在也是遇到这个问题,改成了门控模式但是TIM8 无输出..
举报

lee_st

2018-11-14 09:34:03
没有同步
举报

更多回帖

发帖
×
20
完善资料,
赚取积分