概述
本章通过STM32CUBEIDE配置STM32F407的定时器TIM1与TIM8输出多路PWM
原理
T型三电平逆变器相较于其他的逆变器,其具有12个开关管 ,即需要6路互补且带死区的PWM波,实现逆变。
STM32F407具有两个高级定时器,即TIM1与TIM8,两个均可实现输出互补带死区的PWM波,即IDE操作如下
IDE操作
本次设计的开关频率为10kHz,采用的为中心对齐模式1
开关频率计算为定时器时钟/(arr+1)*(psc+1)*2
TIM8配置与之相同
在main.c文件中进行操作
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim8, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim8, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim8, TIM_CHANNEL_3);
通常我会把占空比赋值程序写进中断回调函数里
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim == (&htim1))
{
TIM1->CCR1=800;
TIM8->CCR2=800;
TIM1->CCR3=800;
TIM8->CCR1=800;
TIM1->CCR2=800;
TIM8->CCR3=800;
}
}
其每一路互补PWM波形如下图所示