主题 : 在WinCE6.0内核中如何申请下降沿触发外部中断17 复制链接 | 浏览器收藏 | 打印
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
楼主  发表于: 2010-05-17 09:04

 在WinCE6.0内核中如何申请下降沿触发外部中断17

在WinCE6.0内核中,申请外部中断17
    Irq[0]=-1;Irq[1]=OAL_INTR_FORCE_STATIC;Irq[2]=IRQ_EINT17;
    if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(Irq), &gIntrTouchChanged, sizeof(UINT32), NULL))
    {
        RETAILMSG(1, (TEXT("ERROR: Failed to request the touch changed sysintr.\r\n")));
        gIntrTouchChanged = SYSINTR_UNDEFINED;
        return(FALSE);
    }
IO口申请
PRIVATE volatile S3C2440A_IOPORT_REG * v_pIOPregs;
v_pIOPregs = (volatile S3C2440A_IOPORT_REG *)TSP_RegAlloc((PVOID)S3C2440A_BASE_REG_PA_IOPORT, sizeof(S3C2440A_IOPORT_REG));
        if (v_pIOPregs == NULL)
        {
            ERRORMSG(1,(TEXT("For IOPreg: VirtualAlloc failed!\r\n")));
            break;
        }
初始化外部中断
v_pIOPregs->GPGCON    &= ~(3<<18);    //    Clear GPG9
v_pIOPregs->GPGCON    |= (2<<18);    //    设置 GPG9 为 EINT17
v_pIOPregs->EXTINT2    &= ~(0xf<<4);    //    Filter Disable, LOW LEVEL trigger for EINT17
v_pIOPregs->EXTINT2    |= (0<<4);      //    设置低电平触发中断
v_pIOPregs->EINTPEND    |=(1<<17);
v_pIOPregs->EINTMASK    &= ~(1<<17);    //    使能中断
在这里外部中断17设置为低电平触发可以顺利进入中断,但是会出现死机现象,另外如果
设置为下降沿触发
v_pIOPregs->EXTINT2    |= (0<<4);      //    设置为下降沿触发中断
此时根本进入不了中断
请问哪位高人指点一下啊!万分感谢!迫切等待中!
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
1楼  发表于: 2010-05-18 08:21
怎么没有高人回答啊?
级别: 侠客
UID: 2432
精华: 0
发帖: 94
金钱: 730 两
威望: 323 点
综合积分: 188 分
注册时间: 2008-11-17
最后登录: 2011-04-07
2楼  发表于: 2010-05-18 10:33
如果有个详细的官方教程该多好啊!
这段时间我也在看,搜集一点资料
以GPIO为例:
1、GPIO的地址映射;
2、GPIO的初始化,通过GPXCON设置相应拐角的中断触发方式;
3、使用KernelIoControl 动态申请中断号;
4、用CreatEvent创建中断事件;
5、使用InitInterrupt函数绑定申请到的逻辑 system_intr与中断事件;
6、然后用CreatThread创建相应的中断服务线程函数;
7、在中断线程里用 WaitForSingleObeject函数无限(INFINITE)等待中断时间的发生。
  然后程序就会阻塞到这里,只要中断来了,就会执行WaitForSingleObject后面你想干的事情--------
级别: 骑士
UID: 9169
精华: 0
发帖: 249
金钱: 1330 两
威望: 299 点
综合积分: 498 分
注册时间: 2009-09-19
最后登录: 2017-08-14
3楼  发表于: 2010-05-19 12:55
改了EINT8就能设置为下降沿,郁闷啊!