STM32定时器输入捕获配合DMA实现高精度脉宽批量测量的配置要点

· 2 浏览

回答(4)

别忘了捕获前清零CCR和状态标志,DMA传输宽度设为16位,与CCR寄存器一致,否则数据错位。
硬件攻城狮 · 2026-09-11
PWM输入模式需占用两个IC通道,且只能测一个信号;多路测量可用定时器级联或每个通道独立DMA。
STM32小王子 · 2026-09-11
若信号频率高,建议用DMA双缓冲(循环模式+半传输中断),一边采集一边处理,避免丢数。
嵌入式老张 · 2026-09-11
核心思路:用定时器输入捕获触发DMA,把CCR寄存器的值自动搬运到内存数组,避免中断开销,实现批量脉宽测量。配置要点:1) 定时器选PWM输入模式或双通道交叉捕获,PWM输入模式可同时得到周期和占空比,只需一个引脚;2) 时基预分频尽量小,让计数器频率高,提高分辨率,注意ARR要大于最大脉宽对应计数值;3) 开启捕获比较的DMA请求(如TIM_DMACmd(TIMx, TIM_DMA_CC1, ENABLE)),DMA外设地址设为& TIMx->CCR1,内存地址为u16数组,方向外设到内存,循环或正常模式;4) 若测正脉宽,捕获极性设为上升沿,DMA搬一次后需软件切换极性或使用从模式复位,推荐用PWM输入模式硬件自动完成;5) 注意DMA传输完成中断里处理数据,并防止数组溢出。调试时先用固定PWM验证,再测实际信号。
mcuku 阿沐 · 2026-09-11

🧰 配套工具

⏱️ 定时器计算器