1. 输入捕获技术概述
输入捕获(Input Capture,简称IC)是嵌入式系统中用于精确测量外部信号时间参数的核心技术。当我们需要测量脉冲信号的频率、周期、占空比或特定边沿间隔时,输入捕获模块能够提供硬件级的精确计时方案。
在STM32等现代微控制器中,输入捕获功能通常集成在定时器外设内。其核心原理是利用定时器的计数器(CNT)作为时间基准,当检测到指定边沿(上升沿或下降沿)时,硬件自动将当前CNT值锁存到捕获/比较寄存器(CCR)中。这种机制相比软件轮询GPIO的方式具有显著优势:
- 纳秒级响应:硬件自动触发,不受软件中断延迟影响
- 零CPU开销:捕获过程无需处理器干预
- 高精度计时:直接利用定时器时钟源(通常72MHz)
关键提示:输入捕获特别适合测量高频信号(>10kHz),此时软件轮询方式已无法满足实时性要求。
2. 硬件架构与工作原理
2.1 STM32输入捕获模块结构
STM32的输入捕获功能涉及多个协同工作的硬件单元:
- GPIO引脚:信号输入接口(如PA6对应TIM3_CH1)
- 滤波器:消除信号抖动(可配置1-15个时钟周期的滤波)
- 边沿检测器:识别上升沿/下降沿事件
- 预分频器:对捕获事件进行分频(如每N个边沿捕获一次)
- 捕获寄存器:存储事件发生时的CNT值(CCR1/CCR2)

(图示:信号从GPIO进入,经滤波、边沿检测后触发捕获)
2.2 PWM输入模式详解
PWM输入是输入捕获的特殊工作模式,可同时测量周期和占空比。其独特之处在于:
- 使用两个捕获通道(CCR1和CCR2)
- 自动配置从模式触发逻辑
- 单次捕获即可获得完整PWM参数
配置关键步骤:
c复制TIM_ICInitTypeDef ic;
ic.TIM_Channel = TIM_Channel_1;
ic.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_PWMIConfig(TIM3, &ic); // 自动配置CH1为周期捕获,CH2为占空比捕获
TIM_SelectSlaveMode(TIM3, TI
