芯片为STM32F407ZG,使用的是高级定时器TIM1的PWM互补PWM输出。
效果:
整体的:(通道0~3分别是CH1、CH1N、CH2、CH2N。)
细节:
CH1和CH1N的死区时间是0.375us(公式算出来应该是公式0.3us左右,跟逻辑分析仪的采样频率有关系)
CH1和CH2、CH1N和CH2N是同步的,以前做H桥的话就需要这种吧(对角同时导通),有相位差的后面再研究。(补充:后面发现这个问题F3系列的芯片比较好实现,用非对称PWM,F4可以用TIM1和TIM8配合实现,原理利用TIM1去触发TIM8)
STM32CubeMX配置:
main函数
/* USER CODE BEGIN 2 */
/****普通定时器***/
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
/****高级定时器互补输出***/
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_2);
/****寄存器方法修改比较寄存器的值,ARR的值cube配置为1000***/
TIM1->CCR1=249;
TIM1->CCR2=249;
/* USER CODE END 2 */
说明:
代码中普通定时器只是为了测试!
高级定时器与普通定时器用法有微笑区别,网上查资料总是误导