用高级定时器TIM1产生PWM的程序和通用定时器一样么?

2019-07-21 05:19发布

就是说,是不是只需要配置:
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure; TIM_OCInitTypeDef  TIM_OCInitStructure; 这两项就可以了?

我目前知道的区别是:使能定时器时钟APB2
那么关于刹车和死区的配置: TIM_BDTRInitTypeDef TIM_BDTRInitStructure; 是否是必要的呢?还是说,只有同时应用互补输出通道TIM1_CHXN的时候才需要配置BDTR

另外, TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCIdleState_Reset;也是只有用到chxn才要配置的么?

最后,请问一下 TIM_CtrlPWMOutputs(TIM1,ENABLE);这个语句在PWM产生中有什么作用么?必须要用么?我看到通用定时器是没有这个函数的,所以这是TIM1特有的?产生PWM必用??


   




友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
馨馨泡沫
2019-07-21 12:44
回复【2楼】745021926:
---------------------------------
那么我这么配置就可以了么:
TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
TIM_BDTRInitStructure.TIM_OSSRState=TIM_OSSRState_Enable;
TIM_BDTRInitStructure.TIM_OSSIState=TIM_OSSIState_Enable;
TIM_BDTRInitStructure.TIM_LOCKLevel=TIM_LOCKLevel_1;
TIM_BDTRInitStructure.TIM_DeadTime=0x7F;
TIM_BDTRInitStructure.TIM_Break=TIM_Break_Disable;
TIM_BDTRInitStructure.TIM_BreakPolarity=TIM_BreakPolarity_High;
TIM_BDTRInitStructure.TIM_AutomaticOutput=TIM_AutomaticOutput_Enable;
TIM_BDTRConfig(TIM1,&TIM_BDTRInitStructure);
TIM_CtrlPWMOutputs(TIM1,ENABLE);

想请问:TIM_BDTRInitStructure.TIM_DeadTime这个是设置死区时间的,指定了输出和打开关闭状态之间的延时。通用定时器没有这项,是不是就相当于我把这个deadtime设置为0呢?如果我使用TIM1的同时还使用了TIM2,为了让他们同时输出,我是不是应该把这个设置为0?

另外:TIM_OCInitStructure.TIM_OCIdleState=TIM_OCIdleState_Set;
TIM_OCInitStructure.TIM_OCNIdleState=TIM_OCIdleState_Reset;
这个是必须的么??

谢谢!

一周热门 更多>