主题 : 按键驱动清中断标志 复制链接 | 浏览器收藏 | 打印
Fighting!
级别: 侠客
UID: 1635
精华: 0
发帖: 111
金钱: 635 两
威望: 135 点
综合积分: 222 分
注册时间: 2008-09-16
最后登录: 2018-02-08
楼主  发表于: 2010-10-30 15:57

 按键驱动清中断标志

最近学按键驱动程序,用的是外部中断。

发现一个问题,当按键按下时,中断响应了两次。我用set_irq_type(irq,2)来设置中断为下降沿为中断触发方式

听国嵌的视频说,进入中断函数要清中断标志位,而mini2440用的是读清中断标志位,

想请问一下大家,有没有相应的函数来清中断标志位啊?


申请中断的代码:
    for(i=0;i<4;i++)
    {
        ret =request_irq(pinSet.irq_number,mediaKeyInterrupt,IRQF_DISABLED,pinSet.name,NULL);
        set_irq_type(pinSet.irq_number,2);    //fall
        if( ret<0)
        {
            printk("Request the GPIO IRQ fail!\n");
            return -1;
                }
        }

*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2011-10-27 22:39
清中断标志(ACK)通常是由芯片的中断控制器驱动实现的,不需要设备驱动参与。你可以参考arch/arm/plat-s3c24xx/irq.c里的s3c_irq_ack()函数。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."