huo_hu 发表于 2019-12-6 18:54
你可以算一下,f4定时器1和8时钟最大168M,500K的话周期回0值为168*2=336,168M/336=500K,168M/335=501.429K,1 ...
请教版主,我用STM32F103VCT6的TIM+DMA方式发PWM,DMA改变TIM->CCRx来改变计数周期,DMA长度减少到0进中断清空TIM->CCRx,停止TIM发送脉冲。我因为要在1ms内去输出脉冲,打个比方,发10个脉冲的话,我需要将PSC设置为100-1,arr是72-1,也就是输出的频率是10KHz。这个我在发PWM前会调用自带的函数修改。然后当我需要发送500个脉冲的时候,就需要500KHz,但我接收的脉冲数却是501个,往后的脉冲数越高,多出来的脉冲数也就越多。想问问是怎么回事?我换成407VET6之后,500个脉冲正常了,发1000个就会多1个。我怀疑是性能引起的问题,导致DMA进中断里来不及关TIM导致多产生了脉冲。但因为用DMA的原因,我没法知道,如何验证这个可能?如果不是这个可能,那么,该是怎样的问题?