request_irq()和free_irq()分析完毕后,接下来开始编写上升沿中断的按键驱动
如下图,需要设置4个按键的EINT0, EINT2, EINT11, EINT19的模式为双边沿,且设置按键引脚为中断引脚
![cf23d357cc181135b6de059d40256a6e.png](https://img-blog.csdnimg.cn/img_convert/cf23d357cc181135b6de059d40256a6e.png)
这里我们只需要使用request_irq函数就行了, 在request_irq函数里会初始chip->set_type(设置引脚和中断模式)
1.首先添加头文件
#include //要用到IRQ_EINT0和IRQT_RISING这些变量
2.在second_drv_open函数中,申请4个中断:
/* IRQ_EINT0: 中断号, 定义在 asm/arch/irqs.h,被linux/irq.h调用buttons_irq : 中断服务函数,IRQT_ BOTHEDGE: 双边沿中断, 定义在 asm/irq.h,被linux/irq.h调用“S1”: 保存文件到/proc/interrupt/S1,1: dev_id,中断函数的参数, 被用来释放中断服务函数,中断时并会传入中断服务函数*/request_irq(IRQ_EINT0, buttons_irq,IRQT_BOTHEDGE, “S1”, 1); request_irq(IRQ_EINT2, buttons_irq,IRQT_ BOTHEDGE, “S2”, 1);request_irq(IRQ_EINT11, buttons_irq,IRQT_ BOTHEDGE, “S3”, 1);request_irq(IRQ_EINT19, buttons_irq