在使用STM32F030的互补pwm的时候,在变频过程中,总是出现互补波形偶尔发生无波形输出的情况,大概持续一段时间后(该时间段约等于调频周期),波形又恢复正常输出。经排查是定时器配置问题,在之前,配置为
TIM17_Handler.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
修改为
TIM17_Handler.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
后,功能正常。
原因大致如下: AutoReloadPreload 使能前,调频过程在ARR的值在当次计数周期内立即生效,这样有可能打断原有的输出比较关系,即ARR和CNT的关系,使得输出比较异常进而导致输出波形异常;AutoReloadPreload使能后,调频过程在ARR的值在下次计数周期才生效,不会打断ARR和CNT预设的输出比较逻辑,引出即使调频不断改变ARR值,互补pwm波形也能正常输出。