延时滤波法-最简单的软件消抖实现
延时滤波(Delay Debounce)是最常见、最易于理解的按键软件消抖方法。它通过在检测到按键状态变化后引入一个短暂的延时,再次确认状态是否稳定,来屏蔽机械抖动造成的误触发。
一、基本原理
当按键被按下或释放时,由于金属接触片弹跳,会在短时间内产生高频电平抖动(通常持续 5~20ms)。延时滤波法的思路是:
初次检测到按键状态变化(如从高变低);
启动一次短时间延时(如 10~20ms);
延时结束后再次读取按键状态;
若状态与第一次一致,则认为按键状态有效,否则忽略本次触发。
这种方式简单直接,适用于裸机或非实时需求的场景。
bool is_key_pressed(GPIO_TypeDef* port, uint16_t pin) {
if (HAL_GPIO_ReadPin(port, pin) == GPIO_PIN_RESET) {
HAL_Delay(15); // 延时 15ms,屏蔽抖动
if (HAL_GPIO_ReadPin(port, pin) == GPIO_PIN_RESET) {
return true; // 状态稳定,确认按下
}
}
return false;
}
适用范围:
- 独立检测某个输入引脚;
- 非中断响应模式;
- 对响应时延不敏感。
欢迎使用66资源网
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » 延时滤波法-最简单的软件消抖实现
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
7. 本站有不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
66源码网 » 延时滤波法-最简单的软件消抖实现
