ENGINEER INTERVIEW · 嵌入式单片机 / 03
STM32定时器输入捕获面试题,讲解TIM输入捕获CCR、PSC、计数溢出、频率计算、PWM Input模式和滤波调试。
面试回答,先讲核心结论
定时器输入捕获是在输入边沿到来时把当前计数器值锁存到CCR寄存器。连续两次相同边沿的计数差可用于计算周期和频率;若需要占空比,还要测出高电平持续时间,并处理计数器溢出和输入抖动。结果跳变常与定时器时钟、计数溢出、滤波、边沿选择及ISR处理有关。
01 / 输入捕获与PWM输出有什么本质区别
PWM输出由定时器比较事件主动改变输出引脚;输入捕获则被外部信号的边沿触发,将某一时刻的计数值写入CCR。两者都用到定时器,但寄存器作用和数据方向不同。
例如定时器计数频率为1 MHz,连续两个上升沿之间捕获差为1000个计数,则被测信号的周期约1 ms,频率约1 kHz;这是假设未漏掉溢出且计数频率正确的情形。

02 / 占空比计算中最容易漏掉什么
只捕获两个上升沿只能获得周期,不能直接得到高电平持续时间。可以额外捕获下降沿,或者使用器件支持的PWM Input组合模式,计算高电平计数与周期计数的比值。
对于16位计数器,若两次边沿之间超过ARR设置的计数范围,应处理溢出次数。极低频信号可调整预分频,极高频信号则要兼顾定时器分辨率和ISR/DMA吞吐量。
03 / 为什么明明输入稳定,测量值仍会飘
01.检查引脚是否配置到正确的定时器复用功能、定时器实际内核时钟、边沿极性及数字滤波;若输入边沿有毛刺或机械抖动,可能捕获到多余边沿。
02.采用逻辑分析仪或示波器对照真实信号,统计捕获值;软件处理时避免两次捕获读取竞争,必要时使用DMA或滤波,不应直接把个别异常值平均掉。
面试中容易失分的地方
把STM32 APB外设时钟直接当定时器时钟,或计算占空比时把CCR直接除以ARR,往往会得到错误的结果。
面试官可能继续追问
对于1 Hz到100 kHz跨度很大的输入频率,你会怎样选择PSC、计数器位宽与溢出策略?

扫码关注































