说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于关中断的问题

编辑:说三道四文库 发布时间:2018-04-22 02:48
HTML文档下载 WORD文档下载 PDF文档下载
我用中断写了个按键驱动,有个问题是因为按键抖动,会触发多次中断,所以我想在进入中断处理程序之前关闭当前中断,应该怎样做?
进入中断处理程序之后,相应的中断是关闭了的
cat /proc/interrupts看你这个中断是什么类型的,我怀疑是level-triggerred irq.
你的中断处理函数退出前没有正确设置硬件使它改变中断引线的电平,所以中断控制器就一直认为设备在发中断了。

void fun_irq(unsingd int irq,...)
{
disable_irq(irq);
.....
.....
enable_irq(irq);

}
tb01412兄已经说得挺清楚了。

个人认为你要做的不是关中断,而是考虑如何处理按键抖动...
中断处理程序的开头就需要关中断, 结束前开中断.
按键抖动不是问题, 这需要设置按键间隔.
进入中断处理程序之后,相应的中断是关闭了的,LZ的问题可能有两种情况:
1.没有清中断标志,所以退出中断后会继续中断
2.按键本身有抖动,有些键盘芯片做得好,会在硬件上去抖动,所以就看LZ使用的硬件了
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘