STM32 PWM 速查备忘录
📘 STM32 PWM 核心知识速查卡
一、 产生 PWM 的底层“三剑客”(寄存器)
PWM 的本质是定时器在底层玩“追逐游戏”。
-
CNT (计数器): 负责不断向上数数的“时钟节拍”。
-
ARR (自动重装载寄存器): 决定 CNT 数到哪里归零。它决定了 PWM 的周期(频率)。
-
CCR (捕获/比较寄存器): 设定的对比阈值。它决定了 PWM 的占空比(高电平持续时间)。
-
规则(PWM模式1):
CNT < CCR时输出高电平,CNT >= CCR时输出低电平。
-
二、 定时器的阶级与引脚约束
千万别把普通引脚当 PWM 用!
-
引脚怎么选: 必须查阅数据手册,找到具有 “复用功能 (AF - Alternate Function)” 且标有
TIMx_CHy(通道)的引脚。 -
定时器怎么选:
-
基本定时器 (TIM6/7): 纯后台计时,无通道,不能发 PWM。
-
通用定时器 (TIM2-5, 9-14): 标准干活主力,通常 4 个通道,发标准 PWM。
-
高级定时器 (TIM1/8): 电机专供 VIP。不仅有普通 PWM 引脚,还有带
N的互补输出引脚(如TIM1_CH1N),能在硬件底层输出相反电平,完美适配 H 桥电路。
-
三、 编写代码的“配置五步曲”
通过设置arr重装载值 和psc预分频 单片机会按照分频后的速率将cnt从0加到arr的大小 这个过程就是一个pwm的周期 通过这个周期取倒数 就能得到pwm的频率 要清楚得到有多少个pwm波形 那么在cnt达到arr的值后 产生一次更新中断 再不断将需求步数递减到达0实现的
无论用标准库还是 HAL 库,配置顺序万变不离其宗:
-
开时钟: 打开对应定时器(TIMx)和对应引脚(GPIOx)的硬件时钟。
-
配置 GPIO: 将引脚模式设为复用推挽输出,把控制权交给定时器硬件。
-
配置时基 (PSC & ARR): * 利用预分频器 (PSC) 把系统主频降下来(例如降到 1MHz,即 1微秒数 1 下)。
-
利用 ARR 凑够总周期(例如设为 19999,凑够 20ms)。
-
公式: $PWM频率 = \frac{系统主频时钟}{(PSC+1) \times (ARR+1)}$
-
-
配置比较值 (CCR): 设置初始占空比。
-
启动输出: 调用开启函数(如
HAL_TIM_PWM_Start),让硬件在后台自行运转。在主循环里,只需要动态修改 CCR 的值,就能改变角度
更多推荐


所有评论(0)