1. STM32定时器输入捕获功能概述
在嵌入式系统开发中,精确测量外部信号的时间参数是常见需求。STM32系列微控制器的定时器模块提供了强大的输入捕获功能,能够准确测量脉冲宽度、频率等关键参数。输入捕获的基本原理是通过检测GPIO引脚上的信号边沿变化,记录定时器计数器的当前值,从而计算出信号的时间特性。
作为STM32开发者,我经常使用输入捕获功能来实现各种测量任务。相比软件轮询方式,硬件输入捕获具有更高的精度和更低的CPU占用率。特别是在需要同时处理多个信号的场合,输入捕获功能显得尤为重要。
2. STM32定时器输入捕获硬件结构
2.1 定时器基本组成单元
STM32的通用定时器主要由以下几部分组成:
- 时基单元:包含预分频器(PSC)、自动重装载寄存器(ARR)和计数器(CNT)
- 输入捕获通道:每个通道对应一个GPIO引脚
- 捕获/比较寄存器(CCR):存储捕获到的计数器值
- 中断和DMA控制逻辑
以TIM2为例,这是一个通用定时器,具有4个独立的输入捕获/输出比较通道。每个通道都可以配置为输入捕获模式,用于测量外部信号。
2.2 输入捕获通道的信号路径
当配置为输入捕获模式时,信号从GPIO引脚到捕获寄存器的路径如下:
- 外部信号通过GPIO引脚进入定时器
- 经过输入滤波器和边沿检测电路
- 触发捕获事件,将当前计数器值锁存到CCR寄存器
- 可选地产生中断或DMA请求
这个路径上的每个环节都可以通过寄存器进行配置,提供了极大的灵活性。例如,可以设置滤波器参数来消除信号抖动,或者选择捕获上升沿、下降沿或双边沿。
3. 输入捕获工作模式详解
3.1 基本捕获模式
在基本捕获模式下,定时器会检测指定边沿(上升沿或下降沿),并在边沿到来时将当前计数器值捕获到CCR寄存器。这种模式适合测量单个边沿的时间戳。
配置步骤:
- 配置GPIO引脚为复用功能模式,连接到定时器通道
- 设置定时器时基参数(预分频器、重装载值)
- 配置输入捕获通道参数(极性、滤波器、分频)
- 使能捕获中断(如果需要)
- 启动定时器
3.2 PWM输入模式
PWM输入模式是输入捕获的特殊应用,用于测量PWM信号的周期和占空比。它使用两个捕获通道协同工作:
- 通道1捕获上升沿,
