怎么获取gpio中断事件

yzbsd 2010-05-14 03:53:39
我想在应用程序里面获取某个gpio的中断事件,应该怎么做呢?不使用timer轮训。
...全文
514 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ayin668 2010-08-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 haiou_arm 的回复:]
引用 1 楼 domworldjohn 的回复:
不用TIMER,那必须要用一个线程轮询才行,在一个线程中WaitForObject()即可。这样不会占用CPU资源的,因为它一直卡在WaitForObject()那里


顺着师兄的脚印我稍微再详细点:
1、GPIO的地址映射;
2、GPIO的初始化,通过GPXCON设置相应拐角的中断触发方式;
3、使用KernelIoControl……
[/Quote]

你说得太有道理了,顶你。
Wangyuluyulu 2010-07-16
  • 打赏
  • 举报
回复
四楼说的很对,顺着他的顺序就ok了
abcjeterabc 2010-05-25
  • 打赏
  • 举报
回复
学习+1
mabugang 2010-05-25
  • 打赏
  • 举报
回复
学习了
月之海 2010-05-25
  • 打赏
  • 举报
回复
楼上的兄弟正解.
你可以按照楼上所讲的这些步骤,在驱动里完成,在第七步的WaitForSingleObject中,往应用层发一个有名事件,应用层开一个线程去等待这个事件,等到了就去做你想做的事情.
haiou_arm 2010-05-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 domworldjohn 的回复:]
不用TIMER,那必须要用一个线程轮询才行,在一个线程中WaitForObject()即可。这样不会占用CPU资源的,因为它一直卡在WaitForObject()那里
[/Quote]

顺着师兄的脚印我稍微再详细点:
1、GPIO的地址映射;
2、GPIO的初始化,通过GPXCON设置相应拐角的中断触发方式;
3、使用KernelIoControl动态申请中断号;
4、用CreatEvent创建中断事件;
5、使用InitInterrupt函数绑定申请到的逻辑system_intr与中断事件;
6、然后用CreatThread创建相应的中断服务线程函数;
7、在中断线程里用WaitForSingleObeject函数无限(INFINITE)等待中断时间的发生。
然后程序就会阻塞到这里,只要中断来了,就会执行WaitForSingleObject后面你想干的事情--------

gooogleman 2010-05-14
  • 打赏
  • 举报
回复
2440 都有这样的GPIO驱动的。参考一下吧。
IT铁哥 2010-05-14
  • 打赏
  • 举报
回复
在驱动跟应用里面创建一个同名事件,在应用里面等待驱动里面发事件。
domworldjohn 2010-05-14
  • 打赏
  • 举报
回复
不用TIMER,那必须要用一个线程轮询才行,在一个线程中WaitForObject()即可。这样不会占用CPU资源的,因为它一直卡在WaitForObject()那里

19,502

社区成员

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

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