⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intx20t.c

📁 ARM9基于WINDOWSCE的BSP源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    DWORD nSysIntr = SYSINTR_NOP;
	int value1, value2 , int1 , int2;
	SharedGPIOControl( 2 , 1 , GPIO_IntRead , &value1 );
	if( value1 )
	{
		int1 = 0;
		SharedGPIOControl( 2 , 1 , GPIO_IntEnable , &int1 );
		SharedGPIOControl( 2 , 1 , GPIO_IntClear , 0 );
	}	
	SharedGPIOControl( 2 , 2 , GPIO_IntRead , &value2 );
	if( value2 )
	{
		int2 = 0;
		SharedGPIOControl( 2 , 2 , GPIO_IntEnable , &int2 );
		SharedGPIOControl( 2 , 2 , GPIO_IntClear , 0 );
	}
	if( value1 || value2 )
		nSysIntr = OEMTranslateIrq(LOGINTR_CF);
    return nSysIntr;
}

/* General Purpose Input/Output port1 ISR (Interrupt bit[7]) */
static DWORD isrIIC( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

/* General Purpose Input/Output port2 ISR (Interrupt bit[8]) */
static DWORD isrCF( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_CF);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr; 
}

/* General Purpose Input/Output port3 ISR (Interrupt bit[9]) */
static DWORD isrRTC( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_RTC_ALARM;

    pvstRTCRegs rtc = (pvstRTCRegs)VA_RTC_BASE;    
    
    /* Clear the alarm interrupt */
    rtc->ICR = 0x01;

    /* Clear Interrupt Mask at the RTC peripheral */
    rtc->IMSC = 0x00;

    /* Clear the VIC interrupt */
    OEMInterruptDisable(SYSINTR_RTC_ALARM);
    OEMIndicateIntSource(nSysIntr);

    return nSysIntr;
}

/* Real Time Clock ISR (Interrupt bit[10]) */
static DWORD isrUSB( unsigned int ra )
{
     DWORD nSysIntr = OEMTranslateIrq(LOGINTR_USB);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

/* Synchronous Serial Port ISR (Interrupt bit[11]) */


/* Universal Asynchronous Receive Transmit port 0 ISR (Interrupt bit[12]) */
static DWORD isrUART0( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

/* Universal Asynchronous Receive Transmit port 1 ISR (Interrupt bit[13]) */
static DWORD isrUART1( unsigned int ra )
{
     DWORD nSysIntr = OEMTranslateIrq(LOGINTR_UART1);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr; 
}

/* Universal Asynchronous Receive Transmit port 2 ISR (Interrupt bit[14]) */
static DWORD isrUART2( unsigned int ra )
{
   DWORD nSysIntr = OEMTranslateIrq(LOGINTR_UART2);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr; 
}

static DWORD isrUART3( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_SD0);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

/* ISR for SCI (Interrupt bit[15]) */
static DWORD isrSCI( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_SCI);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr; 
}

/* Colour Liquid Crystal Display Controller ISR (Interrupt bit[16]) */
static DWORD isrCLCD1( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

/* Direct Memory Access Controller ISR (Interrupt bit[17]) */
static DWORD isrDMA( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;

    /* Demux the DMAC interrupt */
    /* Dynamically mapped       */
    if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_0_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_0_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_0);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_1_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_1_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_1);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_2_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_2_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_2);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_3_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_3_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_3);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_4_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_4_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_4);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_5_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_5_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_5);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_6_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_6_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_6);
    }
    else if(pDMACRegs->DMACIntTCStatus & DMAC_CHANNEL_7_INT ||
        pDMACRegs->DMACIntErrorStatus & DMAC_CHANNEL_7_INT)
    {
        GetSysIntrMappings(&nSysIntr, DMAC_CHANNEL_7);
    }
    /* Disable the DMA channel interrupt at source so   */
    /* we can still get other channel interrupts        */
    if( nSysIntr != SYSINTR_NOP ) 
    {
		int CompleteAudioDmaTransfer( DWORD interrupt );
		int ret;
		OEMInterruptDisable(nSysIntr);
		OEMIndicateIntSource(nSysIntr);
		ret = CompleteAudioDmaTransfer( nSysIntr );		
    }

    return nSysIntr;
}

/* System Power Failure ISR (Interrupt bit[18]) */
static DWORD isrPWRFAIL( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

static DWORD isrSSP( unsigned int ra )
{
     DWORD nSysIntr = OEMTranslateIrq(LOGINTR_SSP0);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr; 
}

static DWORD isrGPIO7( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

static DWORD isrGPIO8( unsigned int ra )
{
    DWORD nSysIntr=SYSINTR_NOP;
    return nSysIntr;
}

static DWORD isrKBD( unsigned int ra )
{
      DWORD nSysIntr = OEMTranslateIrq(LOGINTR_KBD);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr; 
}


static DWORD isrAACI( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_AUDIO);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

static DWORD isrCLCD0( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

static DWORD isrGPIO8_5( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

static DWORD isrGPIO0( unsigned int ra )
{
     DWORD nSysIntr = OEMTranslateIrq(LOGINTR_DMA23);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}


static DWORD isrVIA( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_VIA);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

static DWORD isrMP4D( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_MP4D);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

static DWORD isrMP4E( unsigned int ra )
{
    DWORD nSysIntr = OEMTranslateIrq(LOGINTR_MP4E);
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

static DWORD isrGPIO8_0( unsigned int ra )
{
    DWORD nSysIntr = SYSINTR_NOP;
    return nSysIntr;
}

static DWORD isrGPIO8_1( unsigned int ra )
{
    DWORD nSysIntr;
    /*
    if( QueryInterrupt( LOGINTR_TOUCH ) )
		nSysIntr = OEMTranslateIrq(LOGINTR_TOUCH);
    else*/
		nSysIntr = OEMTranslateIrq(LOGINTR_EXTINT1);
	RETAILMSG(0,(TEXT("NIC INT\r\n")));
    if( nSysIntr != SYSINTR_NOP ) 
    {
        OEMInterruptDisable(nSysIntr);
        OEMIndicateIntSource(nSysIntr);
    }
    return nSysIntr;
}

/* EOF intx20.c */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -