管理提醒: 本帖被 kasim 从 QQ2440技术交流专区 移动到本区(2010-06-08)
MIni2440 中断函数怎么和启动码中的中断联系起来的呢?望各位大虾不吝赐教!
以UART0接受中断为例:
INTOFFSET EQU 0X4A000014 ;中断请求源偏移地
IntVTAddress EQU 0x33ffff20 ;中断向量地址
HandleEINT0 EQU IntVTAddress
........
HandleUART0 EQU IntVTAddress +4*28
HandleSPI1 EQU IntVTAddress +4*39
HandleRTC EQU IntVTAddress +4*30
HandleADC EQU IntVTAddress +4*31
IRQ_Entry
IF IRQ_SETUP <>1
sub sp,sp,#4
stmfd sp!,{R8,R9}
LDR R9,=INTOFFSET
LDR R9,[R9]
LDR r8,=HandleEINT0
ADD r8,r8,r9,lsl #2 ;二级跳转表的首地址
LDR r8,[r8]
STR r8,[sp,#8] ;中断入口地址送进S P(第一个代码留出的4 字节空间)
LDMFD sp!,{r8-r9,pc}
ENDIF
系统产生中断后跳到 Reset_Entry 运行。运行完这段代码,PC指向了HandleUART0
那在C文件中是不是只要写上 void HandleUART0 ()__IRQ;就可以了呢。程序就会跳到HandleUART0 ()函数运行了呢?
[ 此帖被ltjish在2010-06-08 13:49重新编辑 ]