stm32 PWM调节有延迟

今天遇到一个问题,PWM输出时,如果使能exti外部中断,PWM空占比的调节有延迟。刚发现问题时表现为呼吸灯乱跳,psc的值0还好,但也肉眼可见,设置个二三十就延迟严重,阶梯性的跳亮度。设置一千多就完全找不到亮度变化的规律了。原本以为逻辑上搞错了,检查了一下发现没问题,然后看初始化部分,对照教程来看也没啥问题。然后翻出400多大洋的F407,例程是没问题的,我这个就有问题。因为就是瞎搞,所以我的test project里面是include了一大堆,然后把所有的多余部分都注释掉,发现也能正确运行。然后就一个个试,发现是exti的问题。把中断处理函数的内容都清空,只剩一条清除挂起位,也还是不行。然后我就加了个串口调试,发现psc的值变化是正常的。本来么,换一个端口就没问题了,不过问题还是没有解决,心里实在是痒的慌,到这里碰到瓶颈了,换了一个端口TIM4的,发现问题没有出现。又去查资料,发现 TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable); 这条,Enable是要等到下个周期才会变化,Disable就会立即变化。之前问题算是解决了。不过问题又来了,为毛设置为Enable的时候,不使能exti就没问题,使能了就有问题?!不过这个问题先留着下次再研究吧。等看到一定程度回来可能会比较好。现在这一块对我来说有点深入了。