📄 c_interrupt.c
字号:
/* ********************************************************************************** */
/* FUNCTION */
/* IRQ_Handler */
/* DESCRIPTION */
/* Interrupt Handler */
/* AUTHOR */
/* XuPing */
/* ************************************************************************************/
#include "OMAP_MPU_Addr.h"
#include "pccdef.h"
unsigned char IntFlag[136]; //total 135 interrupt
void IRQ_L2_Handler(void);
interrupt void IRQ_Handler(void)
{
unsigned long irq_id;
irq_id = MPU_L1_SIR_IRQ;
IntFlag[irq_id]=1;
switch (irq_id)
{
case 0x00000000 : //Level 2 interrupt handler IRQ
IRQ_L2_Handler();
break;
case 0x00000001 : //Camera IF
break;
case 0x00000002 : //Level 2 interrupt handler FIQ
break;
case 0x00000003 : //External FIQ
break;
case 0x00000004 : //McBSP2 TX
break;
case 0x00000005 : //McBSP2 RX
break;
case 0x00000006 : //IRQ_RTDX(emulation event)
break;
case 0x00000007 : //IRQ_DSP_MMU_ABORT
break;
case 0x00000008 : //IRQ_HOST_INT
break;
case 0x00000009 : //IRQ_ABORT
break;
case 0x0000000A : //IRQ_DSP_MAILBOX1
MailBox1_Isr();
break;
case 0x0000000B : //IRQ_DSP_MAILBOX2
MailBox2_Isr();
break;
case 0x0000000C : //IRQ_LCD_LINE
break;
case 0x0000000D : //Reserved
break;
case 0x0000000E : //IRQ_GPIO1
GPIO_Isr();
break;
case 0x0000000F : //UART3
asm(" Nop");
break;
case 0x00000010 : //IRQ_TIMER3
break;
case 0x00000011 : //GPTIMER1
break;
case 0x00000012 : //GPTIMER2
break;
case 0x00000013 : //IRQ_DMA_CH0
break;
case 0x00000014 : //IRQ_DMA_CH1
asm(" Nop");
break;
case 0x00000015 : //IRQ_DMA_CH2
break;
case 0x00000016 : //IRQ_DMA_CH3
break;
case 0x00000017 : //IRQ_DMA_CH4
break;
case 0x00000018 : //IRQ_DMA_CH5
break;
case 0x00000019 : //IRQ_DMA_CH_LCD
break;
case 0x0000001A : //IRQ_TIMER1
Timer1_Isr();
break;
case 0x0000001B : //IRQ_WD_TIMER
break;
case 0x0000001C : //Public TIPB abort
break;
case 0x0000001D : //SSR FIFO full channel 0
break;
case 0x0000001E : //IRQ_TIMER2
break;
case 0x0000001F : //IRQ_LCD_CTRL
break;
default :
break;
}
MPU_L1_CONTROL_REG = 0x00000001; //Agree New IRQ
}
void IRQ_L2_Handler(void)
{
unsigned long irq_id;
irq_id = MPU_L2_SIR_IRQ;
IntFlag[irq_id+0x20]=1;
switch (irq_id)
{
case 0x00000000 : //FAC
break;
case 0x00000001 : //Keyboard
break;
case 0x00000002 : //uWIRE TX
break;
case 0x00000003 : //uWIRE RX
break;
case 0x00000004 : //I2C
break;
case 0x00000005 : //MPUIO
break;
case 0x00000006 : //USB HHC 1
break;
case 0x00000007 : //USB HHC 2
break;
case 0x00000008 : //USB_OTG
break;
case 0x00000009 : //SoSSI attn
break;
case 0x0000000A : //McBSP3 TX
break;
case 0x0000000B : //McBSP3 RX
break;
case 0x0000000C : //McBSP1 TX
break;
case 0x0000000D : //McBSP1 RX
break;
case 0x0000000E : //UART1
break;
case 0x0000000F : //UART2
break;
case 0x00000010 : //MCSI1 combined TX/RX/Frame error/RST
break;
case 0x00000011 : //MCSI2 combined TX/RX/Frame error/RST
break;
case 0x00000012 : //Free
break;
case 0x00000013 : //SoSSI match
break;
case 0x00000014 : //USB W2FC Geni it
break;
case 0x00000015 : //1-wire
break;
case 0x00000016 : //OS timer
break;
case 0x00000017 : //MMC/SDIO1
break;
case 0x00000018 : //32-kHz gauging IRQ/USB client wakeup IRQ
break;
case 0x00000019 : //RTC periodical timer
break;
case 0x0000001A : //RTC alarm
break;
case 0x0000001B : //Memory Stick
break;
case 0x0000001C : //DSP_MMU_IRQ
break;
case 0x0000001D : //USB W2FC IRQ_ISO_ON
break;
case 0x0000001E : //USB W2FC IRQ_NON_ISO_ON
break;
case 0x0000001F : //McBSP2 RX OVERFLOW
break;
case 0x00000020 : //STI global interrupt(reserved)
break;
case 0x00000021 : //STI wake-up(reserved)
break;
case 0x00000022 : //GPTIMER3
break;
case 0x00000023 : //GPTIMER4
break;
case 0x00000024 : //GPTIMER5
break;
case 0x00000025 : //GPTIMER6
break;
case 0x00000026 : //GPTIMER7
break;
case 0x00000027 : //GPTIMER8
break;
case 0x00000028 : //IRQ1_GPIO2
break;
case 0x00000029 : //IRQ1_GPIO3
break;
case 0x0000002A : //MMC/SDIO2
break;
case 0x0000002B : //CompactFlash
break;
case 0x0000002C : //COMMRX(emulation event)
break;
case 0x0000002D : //COMMRX(emulation event)
break;
case 0x0000002E : //Peripheral wake up
break;
case 0x0000002F : //Free
break;
case 0x00000030 : //IRQ1_GPIO4
break;
case 0x00000031 : //SPI
break;
case 0x00000032 : //CCPSTATUS
break;
case 0x00000033 : //CCP FIFONOTEMPTY
break;
case 0x00000034 : //CCP ATTN
break;
case 0x00000035 : //IRQ_DMA_CH6
break;
case 0x00000036 : //IRQ_DMA_CH7
asm(" Nop");
break;
case 0x00000037 : //IRQ_DMA_CH8
break;
case 0x00000038 : //IRQ_DMA_CH9
break;
case 0x00000039 : //IRQ_DMA_CH10
break;
case 0x0000003A : //IRQ_DMA_CH11
break;
case 0x0000003B : //IRQ_DMA_CH12
break;
case 0x0000003C : //IRQ_DMA_CH13
break;
case 0x0000003D : //IRQ_DMA_CH14
break;
case 0x0000003E : //IRQ_DMA_CH15
break;
case 0x0000003F : //NAND flash interrupt
break;
case 0x00000040 : //Reserved (USB HHC2 suspend)
break;
case 0x00000041 : //SST FIFO empty(channel 0)
break;
case 0x00000042 : //Free
break;
case 0x00000043 : //SSR overrun(channel 0)
break;
case 0x00000044 : //SST FIFO empty(channel 1)
break;
case 0x00000045 : //SSR FIFO full(channel 1)
break;
case 0x00000046 : //SSR overrun(channel 1)
break;
case 0x00000047 : //SST FIFO empty(channel 2)
break;
case 0x00000048 : //SSR FIFO full(channel 2)
break;
case 0x00000049 : //SSR overrun(channel 2)
break;
case 0x0000004A : //SST FIFO empty(channel 3)
break;
case 0x0000004B : //SSR FIFO full(channel 3)
break;
case 0x0000004C : //SSR overrun(channel 3)
break;
case 0x0000004D : //SST FIFO empty(channel 4)
break;
case 0x0000004E : //SSR FIFO full(channel 4)
break;
case 0x0000004F : //SSR overrun(channel 4)
break;
case 0x00000050 : //SST FIFO empty(channel 5)
break;
case 0x00000051 : //SSR FIFO full(channel 5)
break;
case 0x00000052 : //SSR overrun(channel 5)
break;
case 0x00000053 : //SST FIFO empty(channel 6)
break;
case 0x00000054 : //SSR FIFO full(channel 6)
break;
case 0x00000055 : //SSR overrun(channel 6)
break;
case 0x00000056 : //SST FIFO empty(channel 7)
break;
case 0x00000057 : //SSR FIFO full(channel 7)
break;
case 0x00000058 : //SSR overrun(channel 7)
break;
case 0x00000059 : //SSR signaling error
break;
case 0x0000005A : //SSR controller interrupt
break;
case 0x0000005B : //SHA-1/MD5
break;
case 0x0000005C : //RNG
break;
case 0x0000005D : //RNGIDLE
break;
case 0x0000005E : //VLYNQ
break;
case 0x0000005F : //GDD_LCH0
break;
case 0x00000060 : //GDD_LCH1
break;
case 0x00000061 : //GDD_LCH2
break;
case 0x00000062 : //GDD_LCH3
break;
case 0x00000063 : //GDD_LCH4
break;
case 0x00000064 : //GDD_LCH5
break;
case 0x00000065 : //GDD_LCH6
break;
case 0x00000066 : //GDD_LCH7
break;
default :
break;
}
MPU_L2_CONTROL_REG = 0x00000001; //Agree New IRQ
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -