SW 개발

winCE :: DD :: 간단예제 :: 인터럽트 핸들링..InterruptInitialize()

. . . 2013. 3. 27. 08:41
반응형

InterruptInitialize()의 간단 사용법을 알수있는 예제...


DWORD IOP_IntrThread(PVOID pArg)
{
    
    IOP_InitializeAddresses();
    
    IOP_EnableInterrupt();
    
    gRs485IntrEvent = CreateEvent(NULLFALSEFALSENULL);
    
    
    if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &g_RS485Irq, sizeof(UINT32), &g_RS485SysIntr, sizeof(UINT32)NULL))  
    {
        RETAILMSG(DEBUGMODE, (TEXT(ERROR  RS485 Interrupt Initialize - Failrn)));
        return(0);
    }
    RETAILMSG(1,(TEXT( INFO Uart485 Mapped Irq  0x%x to,  SysIntr  0x%x. !!! rn), g_RS485Irq, g_RS485SysIntr));
    
    if (!(InterruptInitialize(g_RS485SysIntr, gRs485IntrEvent, 00))) 
        
    {
        RETAILMSG(DEBUGMODE, (TEXT(ERROR  RS485  Interrupt Initialize - Failrn)));
    }
    else RETAILMSG(DEBUGMODE, (TEXT( RS485 Interrupt Initialize - Success !!! rn)));
    
    while (1) 
    {  
        WaitForSingleObject(gRs485IntrEvent, INFINITE);
        RETAILMSG(DEBUGMODE,(TEXT( Test 485 interrupt ok  rn)));
        
        // Interrupt process code
            v_pINTRregs-SRCPND = BIT_UART1; 
            v_pINTRregs-SUBSRCPND  = BIT_SUB_RXD1;   
            v_pINTRregs-INTPND = BIT_UART1;  
            
            while(!(v_pUARTregs-UTRSTAT & 0x1));   
            TempBuffer[TempCount] = (v_pUARTregs-URXH);
            TempCount++;
            
            
            InterruptDone(g_RS485SysIntr);    
    } 
}


반응형