问题
STM32F103控制下,定时器3的捕获PWM模式下的中断里的全局变量psc = 20,中断触发后,主函数while循环里TIM1_PWM_Init(1451,psc)函数初始化正弦波,用了中断传过来的全局变量psc后,为什么PWM频率不是PWM = 72000000.0 / ((145 * (psc1+1))=24.8Khz左右,而是250KHZ。当debug单步调试时PWM频率才正常
原因
在STM32F103控制下,定时器3的捕获PWM模式下的中断里的全局变量psc = 20,中断触发后,主函数while循环里调用了TIM1_PWM_Init(1451,psc)函数初始化正弦波,使用了中断传过来的全局变量psc。但是PWM频率不是预期的PWM = 72000000.0 / ((145 * (psc+1))=24.8Khz左右,而是250KHZ。这种情况可能是因为主函数中的while循环速度过快,导致定时器的计数不准确。
在单步调试时,程序会逐行执行,每个语句都会执行完毕才会进入下一个语句,因此PWM频率能够正常。而在正常运行时,while循环速度过快,导致定时器的计数不准确,从而导致PWM频率不是预期值。
为了避免这种情况,可以在while循环中加入延时函数,控制while循环速度,或者使用其他方式实现精确控制。这样就可以确保定时器计数的准确性,从而得到预期的PWM频率。
这可能是由于中断触发的频率非常高,导致主循环几乎没有机会运行。这可能是因为中断触发的频率比较高,导致主循环几乎没有机会运行