需求,输出两组互补PWM,频率为100KHz,占空比可调,死区时间600nS。 对于STM32的定时器配置,主要涉及3部分,时基设置,输出设置以及死区与刹车功能,其配置方法如下: - void TIMER_Config(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
- TIM_BDTRInitTypeDef TIM_BDTRInitStructure;
-
- TIM_TimeBaseStructure.TIM_Prescaler = 0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseStructure.TIM_Period = 720 - 1;
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
-
- TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
- TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
-
-
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
- TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_High;
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
- TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;
- TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
- TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCNIdleState_Reset;
- TIM_OCInitStructure.TIM_Pulse = 100;
- TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);
- TIM_OC1PreloadConfig(TIM8, TIM_OCPreload_Enable);
- TIM_OC1Init(TIM1, &TIM_OCInitStructure);
- TIM_OC1Init(TIM8, &TIM_OCInitStructure);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- TIM_BDTRInitStructure.TIM_Break = TIM_Break_Disable;
- TIM_BDTRInitStructure.TIM_BreakPolarity = TIM_BreakPolarity_Low;
- TIM_BDTRInitStructure.TIM_OSSRState = TIM_OSSRState_Enable;
- TIM_BDTRInitStructure.TIM_OSSIState = TIM_OSSIState_Enable;
- TIM_BDTRInitStructure.TIM_LOCKLevel = TIM_LOCKLevel_OFF;
- TIM_BDTRInitStructure.TIM_DeadTime = 0x2B;
- TIM_BDTRInitStructure.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable;
- TIM_BDTRConfig(TIM1, &TIM_BDTRInitStructure);
- TIM_BDTRConfig(TIM8, &TIM_BDTRInitStructure);
-
- TIM_Cmd(TIM1, ENABLE);
- TIM_Cmd(TIM8, ENABLE);
- TIM_CtrlPWMOutputs(TIM1, ENABLE);
- TIM_CtrlPWMOutputs(TIM8, ENABLE);
- }
希望两组PWM波具有独立性,互补干涉,无牵制,考虑到功能余量较大,就将TIM1和TIM8都用上,分别用来才生一组互补pwm,所带来问题就是两组波形之间产生了一个相对稳定的相位差,解决方法是引入第三个定时器,柯采用普通定时器,作为TIM1和TIM8的同步时钟,消除这个相位差的存在。 |