//由gpio编号求中断号码;
int irq = gpio_to_irq(gpio_btn_info**.gpio);
printk("gpio irq %d ++++++++\n",irq);
ret = gpio_request(gpio_btn_info**.gpio,gpio_btn_info**.name);
printk("gpio_request %d ++++++++\n",ret);
ret = request_irq(irq,
gpio_btn_isr,
IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING,
gpio_btn_info**.name,
&gpio_btn_info**);
printk("request_irq %d ++++++++\n",ret);
gpio_to_irq 传入参数为109. 109 = GPIO组编号+组内编号得来的。 返回值为-22.
请问是不是不能直接写值,这个地方应该怎么填。
gpio_request返回值0 也是填109就没有问题。
小白提问。感谢大佬帮助
离线
查了半天,跟到源码里面。发现他这个功能就没实现。默认给我回复-22.心里很崩溃
离线
PD13 = 32*('D' - 'A') + 13 = 109
PD没有外部中断
那我只能用定时器的方式轮询了吗?
离线
楼主的中断号申请搞好了没?恰好最近我也在调试.我用的是H6的板子,查看了下GPIO对应的IRQ如下(调用gpio_to_irq得到的,只调试到gpio234):
PF_EINT[6:0] 7
GPIO:160: PF0 IRQ:273
GPIO:161: PF1 IRQ:274
GPIO:162: PF2 IRQ:275
GPIO:163: PF3 IRQ:276
GPIO:164: PF4 IRQ:277
GPIO:165: PF5 IRQ:278
GPIO:166: PF6 IRQ:279
PG_EINT[14:0] 15
GPIO:192: PG0 IRQ:305
GPIO:193: PG1 IRQ:306
GPIO:194: PG2 IRQ:307
GPIO:195: PG3 IRQ:308
GPIO:196: PG4 IRQ:309
GPIO:197: PG5 IRQ:310
GPIO:198: PG6 IRQ:311
GPIO:199: PG7 IRQ:312
GPIO:200: PG8 IRQ:313
GPIO:201: PG9 IRQ:314
GPIO:202: PG10 IRQ:315
GPIO:203: PG11 IRQ:316
GPIO:204: PG12 IRQ:317
GPIO:205: PG13 IRQ:318
GPIO:206: PG14 IRQ:319
PH_EINT[10:0]
GPIO:224: PH0 IRQ:337
GPIO:225: PH1 IRQ:338
GPIO:226: PH2 IRQ:339
GPIO:227: PH3 IRQ:340
GPIO:228: PH4 IRQ:341
GPIO:229: PH5 IRQ:342
GPIO:230: PH6 IRQ:343
GPIO:231: PH7 IRQ:344
GPIO:232: PH8 IRQ:345
GPIO:233: PH9 IRQ:346
GPIO:234: PH10 IRQ:347
离线
@givemefive
我问了demo板的厂家了,说是需要在数据手册里面看当前GPIO组是否支持中断。不然后会返回-22
离线