关于NUC029的GPIO中断消抖功能的疑惑,求解答

[复制链接]
17413|14
 楼主| 礦ision5 发表于 2024-7-10 20:26 | 显示全部楼层 |阅读模式
关于NUC029的GPIO中断消抖功能的疑惑,求解答


NUC029中,GPIO有一个中断去抖功能。在“中断去抖周期控制(DBNCECON)”这个寄存器中需要配置采样周期。
图片好像发不了,只能复制文字。该寄存器的DBCLKSEL位描述如下:
去抖动采样周期选择
0000 = 每 1 个时钟周期采样中断输入一次.
0001 = 每 2 个时钟周期采样中断输入一次.
0010 = 每 4 个时钟周期采样中断输入一次.
0011 = 每 8 个时钟周期采样中断输入一次.
0100 = 每16 个时钟周期采样中断输入一次.
0101 = 每32 个时钟周期采样中断输入一次.
0110 = 每64 个时钟周期采样中断输入一次.
0111 = 每128 个时钟周期采样中断输入一次.
1000 = 每256 个时钟周期采样中断输入一次.
1001 = 每2*256 个时钟周期采样中断输入一次.
1010 = 每4*256 个时钟周期采样中断输入一次.
1011 = 每8*256 个时钟周期采样中断输入一次.
1100 = 每16*256 个时钟周期采样中断输入一次.
1101 = 每32*256 个时钟周期采样中断输入一次.


我对GPIO中断去抖功能的理解是:在GPIO边沿触发中断时,在经过DBCLKSEL位配置的采样周期后再进行一次检测,然后再判断是否进入中断处理函数,这个过程由硬件完成。
我想知道GPIO中断去抖功能是不是我理解的这样。不对的话,希望大佬指正下。
weifeng90 发表于 2024-7-11 08:31 来自手机 | 显示全部楼层
按键消抖主要从硬件和软件上滤除
呐咯密密 发表于 2024-7-11 10:05 | 显示全部楼层
是在DBCLKSEL位配置的采样周期中只会输入一次中断请求,比如按键按下会有多个抖动,把这个时钟周期设置的大于这个时间,就会只进入一次中断,中间很多次抖动都会屏蔽掉

评论

谢谢大佬解惑  发表于 2024-7-11 11:03
xionghaoyun 发表于 2024-7-13 09:18 | 显示全部楼层

关于NUC029的GPIO中断消抖功能的疑惑,求解答

并加个电容 不用消抖了
失物招領 发表于 2024-8-23 14:29 | 显示全部楼层
其实就用个软延时应该就可以
将爱藏于深海 发表于 2024-8-23 17:00 | 显示全部楼层
如果IO需要消抖的地方不多,硬件消抖都可以
温室雏菊 发表于 2024-8-23 19:00 | 显示全部楼层
这种是通过硬件的delay解决的吧
故意相遇 发表于 2024-8-23 21:00 | 显示全部楼层
对,应该是这个延时进入到中断了,然后出来之后再执行这个获取IO状态,如果还有说明是IO输入了
白马过平川 发表于 2024-8-23 23:00 | 显示全部楼层
我觉得不如用软件延时的方式了
她已醉 发表于 2024-8-24 02:00 | 显示全部楼层
其实delay个10ms的话也不是啥问题吧
春日负喧 发表于 2024-8-24 04:00 | 显示全部楼层
可以考虑用外部中断了,再配合软件delay呗
风凉 发表于 2024-8-24 06:00 | 显示全部楼层
这种消抖给我的感觉就是中断代替了delay了
捧一束彼岸花 发表于 2024-8-24 14:00 | 显示全部楼层
直接用软件消抖吧,简单还好理解
西洲 发表于 2024-8-24 16:00 | 显示全部楼层
这种你应该理解的没啥问题,我觉得
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部