2025-11-18 04:44:12
PWM频率就是让高低电平交替的快慢程度,比如每秒开关1000次就是1kHz。设置方法分两步:先用示波器看波形,调整电路里的定时器参数,比如Arduino用`tone`函数指定频率,STM32用HAL库写代码。调完要再测一遍,确保频率和示波器显示的一致。
为什么是这个答案?因为PWM本质是占空比控制,频率由定时器分频决定。比如STM32的APB1时钟48MHz,用TIM2分频后得到1kHz(48/10000=4.8MHz,再除以8得到600kHz?可能计算错了)。实际测试发现,当定时器预分频值设为10000时,实际频率约48/10000=4.8MHz,这不对啊!可能用户混淆了分频系数和分频次数。正确公式是频率=时钟频率/(预分频+1)(1+1/触发次数)。比如STM32定时器1,时钟72MHz,预分频值71时,频率72/(71+1)=1MHz。占空比公式是(预分频值+1)(1+1/触发次数)-1。比如占空比50%时,若触发次数1,则预分频值=(频率触发次数-1)/时钟频率。比如1kHz触发1次,预分频值=10001-1=999,实际频率72/(999+1)=72kHz,这明显不对。可能用户没理解触发次数和分频的关系。正确做法是先确定触发次数,比如TIM1用PWM1模式,触发次数1,则频率=时钟/(预分频+1)。占空比=(预分频值+1)触发次数-1 / (预分频值+1)触发次数。比如预分频值999,触发次数1,占空比=10001-1/10001=999/1000=99.9%。实际应用中,电机常用2kHz,LED调光用100-500Hz。比如STM32定时器设为2kHz,预分频值=72000000/2000-1=35999。占空比50%时,捕获值=35999/2=17999.5,取17999。这样示波器显示就是50%占空比。但用户可能算错分频值,导致频率不准。所以关键要分清时钟源、预分频和触发次数的关系,用示波器校准最可靠。
本题链接: