历史上的今天
今天是:2025年01月14日(星期二)
2019年01月14日 | STM32延时消除抖动个人理解
2019-01-14 来源:eefocus
今天在一段中断服务子程序中发现这么一句话。
delay_ms(10);//消抖 于是很好奇什么是抖动,以及为什么要消除抖动,还有抖动该怎么消除。
1.先讲一下什么是抖动:
通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的抖动。这是我画的丑图,按键一按下时会产生一连串的抖动:

2.为什么要消除抖动:
按键稳定闭合时间长短是由操作人员决定的,通常都会在100ms以上,刻意快速按的话能达到40-50ms左右,很难再低了。抖动时间是由按键的机械特性决定的,一般都会在10ms以内,为了确保程序对按键的一次闭合或者一次断开只响应一次,必须进行按键的消抖处理。当检测到按键状态变化时,不是立即去响应动作,而是先等待闭合或断开稳定后再进行处理。
3.抖动该怎么消除:
消除抖动有硬件消抖和软件消抖两种方法,其中硬件消抖实用性不强,所以一般采用软件消抖。软件消抖如下代码:
void EXTI9_5_IRQHandler(void)
{
delay_ms(10);//延时消抖
if(KEY0_GET() == 0){
PAout(8) = ~PAout(8);
}
EXTI->PR = 1<<5;
}
然而这样写的代码太过于暴力,在延时的时候一直占用CPU资源,如果在延时的时候,有其他外部中断或者抢占事件,系统完全没有响应的。这里应该用一个独立的定时装置,来完成这个计时工作,而且需要在计时时间到达时再检测一次按键的电平值。但是还没学到那儿,先暂时这么用着。
史海拾趣
|
我看FPGA现在难以取代FPGA+DSP的架构,这段时间的思索总结 FPGA现在越做越大了,有些公司如Xilinx推出的FPGA都内嵌了DSP核,很多人都在讨论说FPGA会取代现在主流的复杂数字信号处理系统的架构:FPGA+DSP了,SOC片上系统的时代真的要来了,我也对这个概念很憧憬,但经过一段时间的调研后,觉得现在还不成熟, ...… 查看全部问答> |
|
求助:wince socket 蓝牙编程中怎样用OBEX协议封装数据 我是刚接触蓝牙开发的,最近要做一个蓝牙文件传输的应用,就是实现蓝牙设备之间的文件传输, MSDN上研究过SOCKET实现的API函数,但是不知道连接成功后发送的数据怎样才能让对方识别, 网上有人说\"这些数据必须是经过OBEX协议封装好的数据\" 请做过这 ...… 查看全部问答> |
|
各位大侠:你们好! 最近,我在刚做好的一块DSP2407A板上试调程序,不知道为什么程序运行后无法进入中断.我只是编了一个非常简单的小程序,用定时器控制LCD闪烁.整个程序我检察了好多遍,应该没有问题的,但就是无法进入中断子 ...… 查看全部问答> |
|
【视频分享】电源设计小贴士49:多层陶瓷电容器常见小缺陷的规避方法 各位好久不见啦!!最近美女小编感冒了,在家休息,有好一阵子没和大家分享好的东东啦! 今天和大家分享TI电源设计小贴士系列的视频,讲解得十分透彻。 因其小尺寸、低等效串联电阻(ESR)、低成本、高可靠性和高纹波电流能力,多层陶瓷 (MLC) 电容 ...… 查看全部问答> |
|
SSI2.DLL是wince里面的一个动态链接库,主要作用是调动设备中的激光扫描头,由于本人不会编程,特此求助附件是相应的.H和.LIB文件,说明文档还有示例文件,希望可以得到帮助,帮忙生成DLL文件 … 查看全部问答> |




