:难点:理解ARM的中断过程和中断向量表以及编程!
:终于明白了: 那张图可以解决中断问题了;
前32个字节的中断其始地址---》中断向量表(中断服务程序的地址填入向量表)--》地址解析程序来读向量表从而使PC指向中断服务程序
--》进行服务程序并返回现场;
.equ HandleReset, _ISR_STARTADDRESS
@#define _ISR_STARTADDRESS 0x33ffff00
.equ HandleUndef, _ISR_STARTADDRESS+4
.equ HandleSWI, _ISR_STARTADDRESS+4*2
.equ HandlePabort, _ISR_STARTADDRESS+4*3
.equ HandleDabort, _ISR_STARTADDRESS+4*4
.equ HandleReserved, _ISR_STARTADDRESS+4*5
.equ HandleIRQ, _ISR_STARTADDRESS+4*6
.equ HandleFIQ, _ISR_STARTADDRESS+4*7
这就是中断向量表,但是每个向量都要填入服务程序的入口地址;因此写服务程序时,都要写成这样:如
*( int *( _ISR_STARTADDRESS+4 )) = (int) ISR_Undef;
*( int *( _ISR_STARTADDRESS+8 )) = (int) ISR_SWI;
*( int *( _ISR_STARTADDRESS +12)) = (int) ISR_Pabort;
*( int *( _ISR_STARTADDRESS+4*4 )) = (int) ISR_Dabort;
*( int *( _ISR_STARTADDRESS +4*6)) = (int) ISR_IRQ;
*( int *( _ISR_STARTADDRESS+4*7 )) = (int) ISR_FIR;
这样就填入向量表里去了;其中ISR_Undef等都是中断函数的名字哦!如过还有不明白的
,可以发邮件给我,还有一张图可以帮助理解;linqijun211@163.com