在使用
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同步,请问有没有人有办法可以帮我解决这个困难?
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 ;
另外一个设置为从模式,方式选触发。TIMx_SMCR的SMS为110。
这样设置好了后启动第一个定时器时,第二个会自动启动。
一周热门 更多>