1. PWM信号基础与测量需求解析
PWM(Pulse Width Modulation)脉宽调制信号是嵌入式系统中最常用的控制信号之一。作为一名嵌入式工程师,我几乎每天都要和PWM打交道。简单来说,PWM就是通过快速开关来控制平均电压的技术。想象一下家里的电灯开关:如果你以极快的速度反复开关,灯就会呈现不同的亮度——这就是PWM的基本原理。
PWM有两个关键参数:
- 周期(T):一个完整波形循环的时间,比如1ms
- 占空比(D):高电平持续时间占整个周期的比例,比如30%
在实际项目中,我们经常需要测量外部输入的PWM信号参数。比如在电机控制中,需要检测转速传感器输出的PWM频率;在遥控接收中,需要解码舵机控制信号的脉宽。STM32的定时器外设提供了强大的输入捕获功能,可以精确测量这些参数。
注意:测量PWM时,信号质量至关重要。实际应用中建议先用示波器确认信号是否干净,避免因噪声导致测量错误。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. STM32定时器架构深度剖析
2.1 定时器基本结构
STM32的通用定时器(如TIM2-TIM5)是一个相当复杂的数字系统。从结构框图来看,主要包含以下几个关键部分:
- 时基单元:由预分频器(PSC)、自动重装载寄存器(ARR)和计数器(CNT)组成,负责产生基准时间
- 输入捕获通道:每个定时器通常有4个独立通道,可配置为输入捕获或PWM输出
- 从模式控制器:用于实现复位、门控、触发等高级功能
- 中断和DMA控制:用于高效处理定时器事件
2.2 输入捕获工作原理
当配置为输入捕获模式时,定时器会监测输入引脚的电平变化。以通道1为例:
- 上升沿触发:捕获当前CNT值到CCR1寄存器
- 下降沿触发:捕获当前CNT值到CCR2寄存器
- 两次捕获的差值即为脉冲宽度
在实际应用中,我习惯开启输入滤波功能(通常设置ICF[3:0]=0011,即4个时钟周期滤波),这样可以有效消除信号抖动。
3. PWM参数测量实现方案
3.1 硬件连接与初始化
假设我们使用TIM3测量外部PWM信号:
- 将PWM信号接入TIM3_CH1引脚(如PC6)
- 配置TIM3时钟源(通常APB1总线)
- 初始化定时器参数:
c复制
