加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux-device-driver – 基于ARM的嵌入式Linux上的GPIO IRQ

发布时间:2020-12-14 00:59:40 所属栏目:Linux 来源:网络整理
导读:我正在尝试在AT91SAM9M10-EKES评估板上编程GPIO IRQ. 我成功注册了IRQ,IRQ正在运行. 但是,有些中断被遗漏了.我送26,而我只得到22. 代码: static irqreturn_t wiegand_interrupt(int irq,void *dev_id){ atomic_inc(counter); printk(KERN_WARNING "IRQ reci
我正在尝试在AT91SAM9M10-EKES评估板上编程GPIO IRQ.
我成功注册了IRQ,IRQ正在运行.
但是,有些中断被遗漏了.我送26,而我只得到22.

代码:

static irqreturn_t wiegand_interrupt(int irq,void *dev_id){
  atomic_inc(&counter);
  printk(KERN_WARNING "IRQ recieved,counting... %dn",atomic_read(&counter));
  return 0;
}
irq1 = gpio_to_irq(AT91_PIN_PA21);
if (irq1 < 0) {
    err = irq1;
    printk("Unable to get irq number for GPIO %d,error %dn",AT91_PIN_PA21,err);
    goto fail;
}

err = request_irq(irq1,wiegand_interrupt,"wiegand",NULL);

irq2 = gpio_to_irq(AT91_PIN_PA20);
if (irq2 < 0) {
    err = irq2;
    printk("Unable to get irq number for GPIO %d,err);
    goto fail;
}

err = request_irq(irq2,NULL);

这不是整个驱动程序,但这是处理IRQ的实际部分.
如果有人在代码中发现问题,或者可以建议一种方法来了解我失去4个中断的原因,请回复.我被困在这几个小时……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读