历史上的今天
返回首页

历史上的今天

今天是: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资源,如果在延时的时候,有其他外部中断或者抢占事件,系统完全没有响应的。这里应该用一个独立的定时装置,来完成这个计时工作,而且需要在计时时间到达时再检测一次按键的电平值。但是还没学到那儿,先暂时这么用着。


推荐阅读

史海拾趣

Dymec公司的发展小趣事

面对数字化浪潮的冲击,Dymec公司积极拥抱变革,推动数字化转型。公司引入了先进的生产管理系统和智能制造技术,提高了生产效率和产品质量。同时,公司还加大了对大数据、云计算等新技术的研究和应用,为未来的发展提供了强有力的技术支撑。

这些故事共同见证了Dymec公司在电子行业中的成长与发展,展现了公司不断创新、追求卓越的精神风貌。

ALD [Advanced Linear Devices]公司的发展小趣事

随着业务的不断拓展,Dymec公司逐渐意识到品质对于品牌的重要性。公司决定加大对产品质量的投入,从原材料采购到生产流程,再到质量检测,每一个环节都严格把控。这种对品质的执着追求使得Dymec公司的产品在市场上获得了良好的口碑,公司也逐渐成为了电子连接器行业的知名品牌。

ATM [Advanced Technical Materials]公司的发展小趣事

中国ATM的发展历程始于20世纪80年代中期。1987年,中国银行在珠海推出了中国大陆第一台ATM,标志着ATM在中国开始了发展。随后,经过数十年的快速发展,中国ATM市场经历了多个阶段,从初级阶段到专业化阶段,再到如今的快速发展阶段。中国ATM市场的繁荣,不仅反映了国内银行业电子化建设的成果,也体现了电子行业的快速发展和普及。

Hewlett Packard Co公司的发展小趣事
通过调节低音控制电位器(如RP4),可以增加或减少低音成分的衰减量。顺时针旋转电位器通常会增加低音输出,逆时针旋转则会减少。
三环(CCTC)公司的发展小趣事

随着科技的不断进步和市场环境的变化,三环(CCTC)公司认识到科技创新是企业持续发展的关键。因此,公司加大了研发投入力度,引进和培养了一批高素质的研发人才,建立了以博士、硕士为主组成的技术研发团队。同时,公司积极承担并完成多个国家、省级重点科研项目,不断开展新材料、新产品、新技术的研究与创新。这些努力使公司在多个领域取得了突破性的成果,实现了转型升级。

BusBoard公司的发展小趣事

随着公司规模的扩大和产品线的丰富,BusBoard公司开始积极寻求市场扩张的机会。通过与国内外知名电子设备制造商建立合作关系,BusBoard公司的产品逐渐打入国际市场。同时,公司还积极参与行业交流和展会,与同行分享经验、探讨合作,共同推动电子行业的发展。这种合作共赢的理念使得BusBoard公司在市场上获得了更多的机会和资源。

问答坊 | AI 解惑

我看FPGA现在难以取代FPGA+DSP的架构,这段时间的思索总结

FPGA现在越做越大了,有些公司如Xilinx推出的FPGA都内嵌了DSP核,很多人都在讨论说FPGA会取代现在主流的复杂数字信号处理系统的架构:FPGA+DSP了,SOC片上系统的时代真的要来了,我也对这个概念很憧憬,但经过一段时间的调研后,觉得现在还不成熟, ...…

查看全部问答>

角度传感器应用2

角度传感器应用2 [ 本帖最后由 小虾米gg 于 2009-9-2 15:27 编辑 ]…

查看全部问答>

请教变量问题

OEMAddressTable     ;;;-------------------------------------------------------------     ;;; Virt Addr   Phys Addr   MB     ;;;-------------------------------------------------- ...…

查看全部问答>

求助:wince socket 蓝牙编程中怎样用OBEX协议封装数据

我是刚接触蓝牙开发的,最近要做一个蓝牙文件传输的应用,就是实现蓝牙设备之间的文件传输, MSDN上研究过SOCKET实现的API函数,但是不知道连接成功后发送的数据怎样才能让对方识别, 网上有人说\"这些数据必须是经过OBEX协议封装好的数据\" 请做过这 ...…

查看全部问答>

FPGA如何与SJA1000连接?

请问各位高手: FPGA可以与SJA1000的RST引脚直接相连吗?…

查看全部问答>

请教:dsp2407a不能进入中断!

各位大侠:你们好!       最近,我在刚做好的一块DSP2407A板上试调程序,不知道为什么程序运行后无法进入中断.我只是编了一个非常简单的小程序,用定时器控制LCD闪烁.整个程序我检察了好多遍,应该没有问题的,但就是无法进入中断子 ...…

查看全部问答>

【视频分享】电源设计小贴士49:多层陶瓷电容器常见小缺陷的规避方法

各位好久不见啦!!最近美女小编感冒了,在家休息,有好一阵子没和大家分享好的东东啦! 今天和大家分享TI电源设计小贴士系列的视频,讲解得十分透彻。 因其小尺寸、低等效串联电阻(ESR)、低成本、高可靠性和高纹波电流能力,多层陶瓷 (MLC) 电容 ...…

查看全部问答>

求助SSI2.DLL

SSI2.DLL是wince里面的一个动态链接库,主要作用是调动设备中的激光扫描头,由于本人不会编程,特此求助附件是相应的.H和.LIB文件,说明文档还有示例文件,希望可以得到帮助,帮忙生成DLL文件 …

查看全部问答>

程序求大神,,,

急求,51芯片的关于计时的程序,,,可医用数码管或者1602显示的程序,,,本人小白,没有做出来只会显示一个,不会从0-999求救 …

查看全部问答>