TI中文支持网
TI专业的中文技术问题搜集分享网站

关于GPIO中断号的疑问

最近有给项目用AM335X,其中有设备用了GPIO3_21作为中断,am335x的SDK环境为linux3.2.0 

#define GPIO_TO_PIN(bank, gpio) (32 * (bank) + (gpio))

#define  IRQ_PIN   GPIO_TO_PIN(3,21)

irq = OMAP_GPIO_IRQ(IRQ_PIN);   // irq  =  gpio_to_irq(IRQ_PIN);//  

printk("irq number is :%d\n",irq);  ///此处打印irq 号为  277//  OMAP_GPIO_IRQ   /gpio_to_irq 得到的irq号都是277,

但查看技术手册,GPIO3的IRQ为  :62 ,63,通过跟踪内核,发现在  arch/arm/plat-omap/include/plat/gpio.h里面 OMAP_GPIO_IRQ  有相关的代码,按照此操作的确是277,哪里出错了?求大侠解答。

user6051027:

还有一个奇怪的问题就是我调用request_threaded_irq函数的irq,却必须是gpio_to_irq获取的277,这两个irq编号不一样,但却能工作,中断函数也正常,这是为什么?而把request_threaded_irq的中断号改为62,却提示错误:request irq 62 failed,ret = -22 !

yongqing wang:

回复 user6051027:

参考这个帖子:e2echina.ti.com/…/46920

user6051027:

回复 yongqing wang:

不好啥意思,漏了一句代码,是enable_irq的中断号必须是62,不能是gpio_to_irq获取的,但request_threaded_irq函数却必须是gpio_to_irq获取的277号中断,为什么?

user6051027:

不好啥意思,漏了一句代码,是enable_irq和disable_irq函数的中断号必须是62,不能是gpio_to_irq获取的,但request_threaded_irq函数却必须是gpio_to_irq获取的277号中断,为什么?

赞(0)
未经允许不得转载:TI中文支持网 » 关于GPIO中断号的疑问
分享到: 更多 (0)