[STM32F3]

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

[复制链接]
1588|10
手机看帖
扫描二维码
随时随地手机跟帖
chb_mcu|  楼主 | 2016-4-15 16:40 | 显示全部楼层 |阅读模式
在使用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同步,请问有没有人有办法可以帮我解决这个困难?
xmshao| | 2016-4-15 18:00 | 显示全部楼层
用外部信号来触发两个定时器。
比方T1 配置为外部输入触发,TS=101(TI1FP1)SMS =110(触发模式),配置T1的MMS= 001,T1的使能信号作为TRGO输出到T8.

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

使用特权

评论回复
chb_mcu|  楼主 | 2016-4-15 18:06 | 显示全部楼层
好的,试试,多谢

使用特权

评论回复
ctsdswk| | 2016-4-15 19:37 | 显示全部楼层
其中一个定时器的主模式输出设置为使能,即TIMx_CR2的MMS为001。
另外一个设置为从模式,方式选触发。TIMx_SMCR的SMS为110。
这样设置好了后启动第一个定时器时,第二个会自动启动。

使用特权

评论回复
chb_mcu|  楼主 | 2016-4-16 08:00 | 显示全部楼层
  /* 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 ;

使用特权

评论回复
chb_mcu|  楼主 | 2016-4-16 08:01 | 显示全部楼层
波形
无标题.png

使用特权

评论回复
chb_mcu|  楼主 | 2016-4-16 08:02 | 显示全部楼层
一样不同步

使用特权

评论回复
chb_mcu|  楼主 | 2016-4-16 08:17 | 显示全部楼层
  改成TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Gated);,就好了,多谢xmshao ctsdswk 回复

使用特权

评论回复
chb_mcu|  楼主 | 2016-4-16 08:19 | 显示全部楼层
波形
无标题.png

使用特权

评论回复
icecut| | 2016-4-16 14:29 | 显示全部楼层
用一个定时器触发2路 pwm

使用特权

评论回复
肖胡志| | 2018-11-12 15:21 | 显示全部楼层
chb_mcu 发表于 2016-4-16 08:17
改成TIM_SelectSlaveMode(TIM8, TIM_SlaveMode_Gated);,就好了,多谢xmshao ctsdswk 回复

能否把配置程序分享一下,谢谢。我现在也是遇到这个问题,改成了门控模式但是TIM8 无输出..

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

9

帖子

1

粉丝