2025-11-08 06:24:39
STM32用PWM调东西就像用遥控器控制电视亮度,代码里写几个数字告诉芯片“亮多少暗多少”。比如让电机转快就给高占空比,转慢就调低占空比。定时器负责算时间间隔,GPIO引脚当开关,一开一关就形成脉冲信号。
为什么这么搞呢?因为STM32的定时器能精准计时,比如TIM1时钟是84MHz,算个例子:设自动重装载值2000,那么周期就是84MHz/2000=42kHz。占空比比如给1000,那高电平时间就是1000/2000=50%——这样电机就跑一半速度。实际调的时候发现,占空比从0%到100%能控制亮度或转速,但超过84MHz/2会溢出报错。就像调光笔,往左拧变暗往右变亮,代码里就是改那两个数字。不过要注意,如果定时器时钟不对,比如用了APB1的42MHz,结果就会差两倍。有次我写代码把TIM钟分频搞错了,结果电机转得像打摆子,后来发现是84MHz没除以2,直接当84MHz用了。
本题链接: