在使用 STM32 定时器捕获功能测量 40-65Hz 方波信号时,如果上升沿出现干扰脉冲,可以通过 硬件定时器捕获功能结合软件滤波 有效地滤除干扰脉冲。以下是具体方法。
1. 问题分析
-
目标信号特性:
-
干扰脉冲特性:
- 干扰脉冲的时间间隔通常非常短(如几微秒到几毫秒)。
- 因此,干扰脉冲对应的捕获值会显著低于有效信号的下限值。
-
解决核心:
- 检测捕获值的时间间隔,如果小于设定的下限值(例如
15,000
对应 15ms),认为是干扰脉冲,直接丢弃。
- 检测捕获值的时间间隔,如果小于设定的下限值(例如
2. 方法实现
以下是具体的软件和硬件相结合的滤波方案:
2.1 利用捕获值范围进行滤波
在捕获中断中判断两次捕获的时间间隔是否在设定的有效范围内,超出范围的捕获值直接丢弃。
代码实现:
#include "stm32f4xx.h" // 定义捕获值范围(单位:定时器计数) #define MIN_VALID_PERIOD 15380 // 4