background image

S3C2410IRQ)中断处理

S3C2410(IRQ)中断处理过程:

在此要注意的是区别中断向量表和异常向量表。中断发生后总是从

IRQ 或者 FIQ 异常入口

处进入,然后跳转到相应的异常处理程序处执行,这个异常处理程序一般都是进行查找
中断向量表的操作,然后调用中断处理程序。
    以下是在应用中中断处理实现的过程:从中不难体会到中断的处理过程。
定义中断向量表的物理地址:
代码

 

.equ pISR_DABORT , (_ISR_STARTADDRESS 0x10)    

.equ pISR_RESERVED, (_ISR_STARTADDRESS 0x14)    

.equ pISR_IRQ , (_ISR_STARTADDRESS 0x18)    

.equ pISR_FIQ , (_ISR_STARTADDRESS 0x1c) //异常向量表    

……………………………………………………………………    

.equ pISR_EINT0 , (_ISR_STARTADDRESS 0x20) //中断向量表    

.equ pISR_EINT1 , (_ISR_STARTADDRESS 0x24)    

.equ pISR_EINT2 , (_ISR_STARTADDRESS 0x28)    

.equ pISR_EINT3 , (_ISR_STARTADDRESS 0x2c)  

将中断处理程序入口地址放入中断向量表:
代码

 

pISR_EINT0 = (unsigned int)isrEINT0; // isrEINT0 中断处理程序    

pISR_EINT1 = (unsigned int)isrEINT1;  

定义中断处理程序:
代码

 

.extern Interrupt_Rbutton    

.global isrEINT0    

isrEINT0:    

IRQHandle Interrupt_Rbutton  

定义异常向量表: