打印
[ZLG-ARM]

帮忙看下我的uclinux外部中断驱动程序吧

[复制链接]
1606|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大众牌BF|  楼主 | 2010-5-25 09:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
static int eint_open(struct inode *inode, struct file *filp)
{
//   unsigned long flag;
//    if (usage == 0)         
//    {
        request_irq(IRQ_EXT3, eint_irq_handle, SA_INTERRUPT, "my" DEVICE_NAME, NULL);
//        local_irq_save(flag);        
//        PinSel0Save = inl(PINSEL0) & 0xa00cc0cc;   
//        PinSel1Save = inl(PINSEL1) & 0x26400301;
          outl(1<<3,EXTINT);
          outl(0x00,EXTMODE);
//        local_irq_restore(flag);      
//    }
//   usage++;
    MOD_INC_USE_COUNT;
    return 0;          /* success */
}
这是我照着周立功给的PWM的驱动写的外部中断驱动,为什么那些被我注销的语句一旦解注应用程序就跑不出来呢??

相关帖子

沙发
tiger2010| | 2010-5-25 13:27 | 只看该作者
那肯定是逻辑出错了

使用特权

评论回复
板凳
大众牌BF|  楼主 | 2010-5-25 15:33 | 只看该作者
static int eint_open(struct inode *inode, struct file *filp)
{
//   unsigned long flag;

//    if (usage == 0)                                                                       
//    {
          request_irq(IRQ_EXT3, eint_irq_handle, SA_INTERRUPT, "my" DEVICE_NAME, NULL);
//        local_irq_save(flag);                                                               
//        PinSel0Save = inl(PINSEL0) & 0xa00cc0cc;                               
//        PinSel1Save = inl(PINSEL1) & 0x26400301;
//              outl(3<<8,PINSEL1);
                                        PINSEL1=3<<8;
          outl(1<<3,EXTINT);
          outl(0x00,EXTMODE);
          VICIntEnable=1<<17;
//        outl(1<<17, VICIntEnable);
//        local_irq_restore(flag);                                                       
//    }
//   usage++;
                            MOD_INC_USE_COUNT;
                                   return 0;          /* success */
}
在OPEN函数里设置外内部中断相关寄存器,这样可以嘛?

使用特权

评论回复
地板
liliang9554| | 2010-5-26 22:15 | 只看该作者
试试不就行了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

64

帖子

1

粉丝