📘 STM32 PWM 核心知识速查卡

一、 产生 PWM 的底层“三剑客”(寄存器)

PWM 的本质是定时器在底层玩“追逐游戏”。

  • CNT (计数器): 负责不断向上数数的“时钟节拍”。

  • ARR (自动重装载寄存器): 决定 CNT 数到哪里归零。它决定了 PWM 的周期(频率)。

  • CCR (捕获/比较寄存器): 设定的对比阈值。它决定了 PWM 的占空比(高电平持续时间)。

    • 规则(PWM模式1): CNT < CCR 时输出高电平,CNT >= CCR 时输出低电平。

二、 定时器的阶级与引脚约束

千万别把普通引脚当 PWM 用!

  1. 引脚怎么选: 必须查阅数据手册,找到具有 “复用功能 (AF - Alternate Function)” 且标有 TIMx_CHy(通道)的引脚。

  2. 定时器怎么选:

    • 基本定时器 (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 库,配置顺序万变不离其宗:

  1. 开时钟: 打开对应定时器(TIMx)和对应引脚(GPIOx)的硬件时钟。

  2. 配置 GPIO: 将引脚模式设为复用推挽输出,把控制权交给定时器硬件。

  3. 配置时基 (PSC & ARR): * 利用预分频器 (PSC) 把系统主频降下来(例如降到 1MHz,即 1微秒数 1 下)。

    • 利用 ARR 凑够总周期(例如设为 19999,凑够 20ms)。

    • 公式: $PWM频率 = \frac{系统主频时钟}{(PSC+1) \times (ARR+1)}$

  4. 配置比较值 (CCR): 设置初始占空比。

  5. 启动输出: 调用开启函数(如 HAL_TIM_PWM_Start),让硬件在后台自行运转。在主循环里,只需要动态修改 CCR 的值,就能改变角度

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐