mini2440引脚中断输入配置

40 篇文章 0 订阅

今天做一个测试软件,需要修改驱动。即把mini2440的GPIO口之GPG1(EINT9)、GPG9(EINT17)、GPG10(EINT18)设置为中断输入,Both edge triggered,参照wince5.0 BSP驱动userkey进行设置。对

IRQ = 36; //IRQ_EINT8;  GPG0
    if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &IRQ, sizeof(UINT32), &g_KeySysIntr[0], sizeof(UINT32), NULL))    {
        RETAILMSG(1, (TEXT("ERROR: kEYBD: Failed to request sysintr value.\r\n")));
        return FALSE;
    }

IRQ =36。为什么是36而不是别的,根据我以往的经验,这个肯定在什么地方定义了,在MSDN中查找KernelIoControl,查到末尾也没有结果,因为这个函数调用的最后是不开源的,见不到函数原型。我转而开始查看包含的头文件,终于在s3c2440a_intr.h中找到了定义。


在初始化过程中,需要先把引脚配置成输入,然后配置中断触发方式。

s2440IOP->rGPGCON  = (s2440IOP->rGPGCON  & ~(0x3 << 2)) | (0x2 << 2);    // GPG1 == EINT9
s2440IOP->rEXTINT1 = (s2440IOP->rEXTINT1 & ~(0x7<< 4)) | (0x6 << 4);    // Both edge triggered


s2440IOP->rGPGCON  = (s2440IOP->rGPGCON  & ~(0x3 << 18)) | (0x2 << 18);    // GPG9 == EINT17
s2440IOP->rEXTINT2 = (s2440IOP->rEXTINT2 & ~(0x7<< 4)) | (0x6 << 4);    // Both edge triggered


s2440IOP->rGPGCON  = (s2440IOP->rGPGCON  & ~(0x3 << 20)) | (0x2 << 20);    // GPG10 == EINT18
s2440IOP->rEXTINT2 = (s2440IOP->rEXTINT2 & ~(0x7<< 8)) | (0x6 << 8);    // Both edge triggered

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值