社区
驱动开发/核心开发
帖子详情
我写一个GPIO的按键中断。遇到这个问题
lichujing
2011-07-08 05:19:23
由于有时按一下会发生好几次中断(硬件原因)。我就在中断处理函数里不处理。只在里面加一个timer_list。然后在timer对应的函数里作处理。可是在中断处理函数里添加timer会有问题。是不是在中断处理函数里不能timer啊.
...全文
392
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
打赏
举报
回复
按键有抖动问题,为此,通常都是在几十毫秒间隔的定时器中断里读取键值,自然去抖。
记录学习之旅。该案例采用STM32F013zet6,以
中断
形式控制3×4和4×4矩阵键盘输出,以下为完整代码。
本人新人,秉着学习的态度,在编
写
的过程中
遇到
几个需要回顾的知识点: 1.
GPIO
的8种模式配置 2.
中断
配置及优先级设置 好的东西就分享,对于新手,推荐B站以为UP主的介绍...
为何HAL库的工程“进入不了”外部
中断
?
今天
遇到
一个
惨痛的教训。 用CubeMX生成
按键
的外部
中断
工程,Nucleo的板子上PA5连接LED,PC13连接
按键
,并且外接上拉电阻。如图 于是在CubeMX配置PA5引脚和PC13引脚,
一个
作为推挽输出,
一个
作为外部
中断
,因为...
[MTK应用开发从入门到精通].part2
作者具有丰富的项目开发经验,以项目开发中所
遇到
的常见开发
问题
为依据,循序渐进地对MTK开发进行了深入浅出的阐述,内容详尽,实例丰富,有大量源代码例子供读者参考。《MTK应用开发从入门到精通》的应用开发部分...
[MTK应用开发从入门到精通].part1
《MTK应用开发从入门到精通》作者具有丰富的项目开发经验,以项目开发中所
遇到
的常见开发
问题
为依据,循序渐进地对MTK开发进行了深入浅出的阐述,内容详尽,实例丰富,有大量源代码例子供读者参考。《MTK应用开发从...
hal库开启
中断
关
中断
_[STM32]HAL库下
GPIO
按键
中断
与去抖
问题
分析(分析源码解决
问题
)...
又又又
遇到
了新的
问题
(
GPIO
按键
中断
),感觉网络上和各种资料都没解释清楚的情况下。我又去扒了扒HAL库函数源码,提供不一样解决
按键
抖动的
问题
(个人认为除了那些通过配置具体寄存器的外;是从HAL库提供函数的基础上...
驱动开发/核心开发
21,595
社区成员
21,708
社区内容
发帖
与我相关
我的任务
驱动开发/核心开发
硬件/嵌入开发 驱动开发/核心开发
复制链接
扫一扫
分享
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章