社区
驱动开发/核心开发
帖子详情
我写一个GPIO的按键中断。遇到这个问题
lichujing
2011-07-08 05:19:23
由于有时按一下会发生好几次中断(硬件原因)。我就在中断处理函数里不处理。只在里面加一个timer_list。然后在timer对应的函数里作处理。可是在中断处理函数里添加timer会有问题。是不是在中断处理函数里不能timer啊.
...全文
406
16
打赏
收藏
我写一个GPIO的按键中断。遇到这个问题
由于有时按一下会发生好几次中断(硬件原因)。我就在中断处理函数里不处理。只在里面加一个timer_list。然后在timer对应的函数里作处理。可是在中断处理函数里添加timer会有问题。是不是在中断处理函数里不能timer啊.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
按键有抖动问题,为此,通常都是在几十毫秒间隔的定时器中断里读取键值,自然去抖。
GPIO
中断
控制教程资料
GPIO
(通用输入输出)
中断
控制是嵌入式系统开发中的
一个
重要概念,它允许微控制器处理来自外部事件的信号,从而使得微控制器能够响应外部信号的变化而无需不断检查其状态。在嵌入式编程中,高效地管理
GPIO
中断
是实现...
GPIO
实验与
中断
实验.zip
3. **
按键
中断
**:实验中使用了
按键
作为
中断
源。当
按键
被按下时,会产生
一个
下降沿或上升沿
中断
,单片机会响应这个
中断
,执行相应的
中断
服务程序,例如改变数值的加减状态。 4. **
中断
处理流程**:包括
中断
请求、...
RV1126实现外部
中断
驱动【Linux驱动】.zip
当
一个
设备完成操作或
遇到
异常情况时,会发送
一个
中断
请求给CPU,CPU暂停当前执行的任务,转而执行
中断
处理程序,处理完后再返回原任务。 2. **
中断
处理流程**: - **
中断
请求**:硬件设备向CPU发送
中断
请求。 - ...
s3c6410 裸机
中断
例子 timer
按键
在这个例子中,可能会有两个
中断
服务例程,
一个
用于定时器
中断
,另
一个
用于
按键
中断
。每个服务程序应快速处理
中断
事件并返回,避免占用过多CPU时间。 4. **
中断
优先级**:在S3C6410中,可以设置
中断
优先级,以决定...
最简单的OK6410外部
中断
代码(裸机
按键
中断
)
标题中的“最简单的OK6410外部
中断
代码(裸机
按键
中断
)”是指使用OK6410这款基于ARM7TDMI内核的微处理器,实现了
一个
基础的硬件
中断
处理程序,主要用于处理
按键
输入。这个程序的核心在于利用OK6410的
中断
系统来响应...
驱动开发/核心开发
21,615
社区成员
21,711
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章