我写一个GPIO的按键中断。遇到这个问题

lichujing 2011-07-08 05:19:23
由于有时按一下会发生好几次中断(硬件原因)。我就在中断处理函数里不处理。只在里面加一个timer_list。然后在timer对应的函数里作处理。可是在中断处理函数里添加timer会有问题。是不是在中断处理函数里不能timer啊.
...全文
392 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
changing_better 2011-07-29
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ask_qianru 的回复:]
中断里面可以用timer,进入timer前注意屏蔽中断,在timer中开中断;除此以外还可以加点锁处理并发.
[/Quote]
正解,我也写过一个GPIO的中断,调试后也没问题,你需要可以发你源代码!我的是5X5的
lichujing 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hotspring110 的回复:]
你可以给他延迟一端时间,也可以用信号!
[/Quote]
高手,指导指导。使用信号怎么解决啥。
lichujing 2011-07-13
  • 打赏
  • 举报
回复
不过问题已经解决了,我在中断处理函数里加timer实现的。个人感觉contex a9上好像中断处理函数里ioremap和readb,writeb一起使用会有问题,导致内核挂掉。用IO_ADDRESS代替ioremap就不会有问题。
lichujing 2011-07-13
  • 打赏
  • 举报
回复
按键中断的IST。IST是个什么东西啊?英文不太好,我理解成中断处理函数。是吗
congyue123 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 congyue123 的回复:]
肯定是消抖了
在按键中断的IST里面,判断到了中断就把GPIO配置为通用的IO,然后延迟一段时间后判断逻辑,这个延迟没必要用timer了,直接SLEEP(20)就好了。
[/Quote]

老大,你看好了是在IST里面用SLEEP,谁说不能了。。。
lichujing 2011-07-12
  • 打赏
  • 举报
回复
mod_timer这个调用是什么用途啊。
lichujing 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 congyue123 的回复:]
肯定是消抖了
在按键中断的IST里面,判断到了中断就把GPIO配置为通用的IO,然后延迟一段时间后判断逻辑,这个延迟没必要用timer了,直接SLEEP(20)就好了。
[/Quote]
中断里不能用sleep
ask_qianru 2011-07-12
  • 打赏
  • 举报
回复
中断里面可以用timer,进入timer前注意屏蔽中断,在timer中开中断;除此以外还可以加点锁处理并发.
congyue123 2011-07-11
  • 打赏
  • 举报
回复
肯定是消抖了
在按键中断的IST里面,判断到了中断就把GPIO配置为通用的IO,然后延迟一段时间后判断逻辑,这个延迟没必要用timer了,直接SLEEP(20)就好了。
lmlmlmnew 2011-07-09
  • 打赏
  • 举报
回复
延迟一段时间吧,最简单也最有效~
机械的按键你不可能几十毫秒内按几次的~
hotspring110 2011-07-09
  • 打赏
  • 举报
回复
你可以给他延迟一端时间,也可以用信号!
lichujing 2011-07-09
  • 打赏
  • 举报
回复
可能是由于这个问题:我的timer是全局变量。一抖动就会产生添加同一个timer多次的问题。估计问题就出在这儿。
lichujing 2011-07-09
  • 打赏
  • 举报
回复
去抖的办法我也就想到了加timer,还有其它办法吗?
91program 2011-07-09
  • 打赏
  • 举报
回复
最好还是去抖
皮CaPr 2011-07-09
  • 打赏
  • 举报
回复
中断处理函数只是调用mod_timer来延时的,timer_list的定义与初始化都是放在probe函数中。
你可以参考下driver/input/keyboard/gpio_keys.c程序,那是内核自带GPIO的按键驱动。
bjtea 2011-07-08
  • 打赏
  • 举报
回复
按键有抖动问题,为此,通常都是在几十毫秒间隔的定时器中断里读取键值,自然去抖。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧