求助:如何使用GPIO中断

lester98 2007-07-24 07:31:59
对于gpio对应的九个寄存器和interrupt controller的寄存器们的设置我已经很熟了
我的疑问是这样的:比如我现在要通过GPIO17输入中断,我在驱动程序中必然要用
request_irq(),那么在参数里,我应该申请什么中断号呢?(irq_no=?)
我尝试用的是IRQ_GPIO(gpio_nr),但是我申请IRQ_GPIO(17)号中断总是不成功啊
我看了整整一天,还没有结果,请大家帮忙啊
...全文
2063 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gaape 2009-09-24
  • 打赏
  • 举报
回复
#9楼 得分:0回复于:2007-07-27 09:12:23
分数一定要给别人么?我是自己解决的啊
=====

哈哈
lester98 2007-07-27
  • 打赏
  • 举报
回复
分数一定要给别人么?我是自己解决的啊
lester98 2007-07-26
  • 打赏
  • 举报
回复
对,可能我的意思表达的不够清楚
我是说这些置位不需要程序编写者来进行,你只需要调用函数或者宏就行了,不用直接对着地址进行操作
hzcpig 2007-07-26
  • 打赏
  • 举报
回复
虽然很多网页和design guide上说对寄存器的各种置位,实际上不需要的,在内核文件中会有各种调用的,pxa270如此s3c2410也是如此

---------------------------------

是需要的,只不过你要做的设置刚好内核帮你设置了或者就是你要的刚好就是默认设置。

通过编写驱动或者底层GPIO操作时,都要看data sheets设置好各需要的寄存器。
cpuwolf 2007-07-26
  • 打赏
  • 举报
回复
恩。对的。
不过一般用的时候,还是设置一下比较好。
lester98 2007-07-26
  • 打赏
  • 举报
回复
这个问题我已经解决了,是这样的
#defineGPIO_17 17
例如想用GPIO17来进行中断,申请中断号就是IRQ_GPIO(GPIO_17)
把该引脚设置成为边沿触发中断用set_GPIO_IRQ_edge(GPIO_17, GPIO_RISING_EDGE)
对GPIO置位用:GPSR(gpio_nr)|=GPIO_bit(gpio_nr)
设置GPIO输入输出和alternate function用set_GPIO_mode(GPIO_17 | GPIO_OUT)
虽然很多网页和design guide上说对寄存器的各种置位,实际上不需要的,在内核文件中会有各种调用的,pxa270如此s3c2410也是如此
lester98 2007-07-26
  • 打赏
  • 举报
回复
pxa270,我真晕,忘了讲
hzcpig 2007-07-26
  • 打赏
  • 举报
回复
主题右上角-->管理-->给分-->输入密码-->结贴
lester98 2007-07-26
  • 打赏
  • 举报
回复
请求结贴
cpuwolf 2007-07-25
  • 打赏
  • 举报
回复
你用的是什么CPU

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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