STM32输入捕获模式实战:精准测量频率与占空比

1. 输入捕获模式基础:从零理解测量原理

我第一次接触STM32输入捕获功能时,也是一头雾水。后来在实际项目中才发现,这简直就是测量频率和占空比的神器!简单来说,输入捕获就像是给定时器装了个"抓拍相机",每当检测到信号边沿时,就会立即拍下当前计数器的值。

核心工作原理其实很直观:定时器CNT计数器一直在后台嘀嗒计数,当我们配置好输入捕获通道后,一旦检测到指定的信号边沿(上升沿或下降沿),就会立即把当前的CNT值"抓拍"保存到CCR寄存器中。这样我们通过计算两次抓拍之间的时间差,就能精确算出信号的周期和频率。

这里有个实用技巧:测频法 vs 测周法的选择。高频信号适合用测频法(固定时间内计数脉冲个数),低频信号适合用测周法(测量一个完整周期的时间)。我在电机控制项目中就深有体会——当信号频率超过10kHz时,测周法的误差会明显增大,而测频法则稳定得多。

2. 硬件连接与配置:避开那些坑

实际接线时要注意,STM32的定时器通道与GPIO引脚有固定的映射关系。以TIM3_CH1为例,它对应PA6引脚(部分型号可能支持重映射)。我建议先用万用表确认引脚连接,曾经就因为一个虚焊点折腾了大半天!

关键配置步骤

  • 开启对应定时器和GPIO时钟
  • 配置GPIO为上拉输入模式(避免浮空状态误触发)
  • 设置时基单元:预分频器PSC和自动重装载值ARR
  • 配置输入捕获参数:极性、分频、滤波器等

这里有个容易踩的坑:滤波器设置。如果输入信号有毛刺,可以适当增大滤波器值。但要注意,滤波器会引入少量延迟,对于高频测量需要权衡取舍。我一般从较小值开始调试,逐步增加直到信号稳定。

// GPIO初始化示例
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitSt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值