输入捕获(Input Capture,IC)是定时器的一种模式,它允许 MCU 精确记录外部信号发生变化的时间(通常是上升沿或下降沿)。输入捕获通道(Input Capture Channel)与定时器配合,在检测到输入信号的边沿时,将当前定时器的计数值保存到寄存器中。- 外部事件时间测量(如超声波测距、通信协议的时间同步)。
测量时间是定时器永恒的话题。
输入捕获模式通常与定时器配合工作,定时器不断计数,而当输入信号的边沿变化时,定时器的当前值会被保存到输入捕获寄存器(ICR)中。外部信号(PWM、方波、传感器信号等)输入到定时器的输入捕获通道(TIMx_CHx)。当输入信号的指定边沿(上升沿/下降沿)被检测到:MCU 立即将当前定时器 CNT 计数值保存到 ICR(输入捕获寄存器)。产生一个输入捕获事件(Capture Event),可以触发中断或 DMA 传输。应用程序读取捕获寄存器的值,计算信号的频率或脉冲宽度。三种触发模式:
- 上升沿捕获(Rising Edge):当输入信号从 低 变为 高 时触发捕获。
- 下降沿捕获(Falling Edge):当输入信号从 高 变为 低 时触发捕获。
- 双边沿捕获(Both Edges):检测 上升沿和下降沿,适用于脉冲宽度测量。
简单来说就是这个事件发生,记录一下时间,一做差就有了。
这是一些寄存器,不做具体的指定,大概就是有这些功能
使用输入捕获通道测量 PWM 信号的周期,从而计算频率。设 T1 为检测到第一个上升沿时的 CNT 值,T2 为下一个上升沿的 CNT 值。1微S一次,回调函数里面计数
- 第一次检测到 PWM 上升沿时,存储 CNT 值(IC_Val1)。
- 第二次检测到上升沿时,计算 Difference = IC_Val2 - IC_Val1。
- 计算 PWM 频率 Frequency = 1,000,000 / Difference(单位 Hz)。