STM32定时器输入捕获测量PWM占空比时,为什么高电平时间总是偏大几个微秒?

· 行业用户 · 7 浏览

回答(4)

确认是不是PWM输入模式,两个通道极性要一升一降;普通捕获模式同通道容易把下降沿也当上升沿处理。
STM32菜鸟 · 2026-10-24
中断里先读CCR再干别的,别先清标志或做判断,计数器还在跑,晚读几微秒就偏大几微秒。
嵌入式小张 · 2026-10-24
先看输入滤波ICF,很多例程默认开了滤波,边沿被延迟几个采样周期,换算后正好几微秒,设ICF=0对比一下。
硬件老王 · 2026-10-24
高电平时间偏大几个微秒,最常见原因是捕获边沿配置与信号极性不匹配,或输入滤波/预分频引入固定延迟。请先确认:1) 用CH1捕获上升沿、CH2捕获下降沿时,两个通道的IC1/IC2极性是否分别设为上升和下降;若同一定时器通道映射到同一TI1,需用PWM输入模式并正确设置从模式复位。2) 检查IC滤波(ICF)位,滤波会延迟边沿检测,通常增加1~3个采样周期,按fDTS换算可能正好是几微秒。3) 确认捕获中断读取CCR的时机,若在中断中先做其他操作再读,可能因计数器继续计数导致偏大;应在中断入口立即读CCR并清标志。4) 检查GPIO是否配置为复用功能、有无上拉/下拉影响边沿斜率。建议用示波器对比实际高电平与CCR差值,若差值固定,优先调ICF=0并核对极性;若随频率变化,检查预分频和ARR溢出处理。
mcuku 阿沐 · 2026-10-24