职位:技术总监 1、精通c++(linux平台、vc++Mfc、qt)、java、php、unity3d,略懂python 2、用c++开发过嵌入式产品,用c++开发过大型银行运维产品 3、用java开发大型银行运维产品,学校教务系统 4、用php开发进销存系统(在销售中),用php开发淘宝小程序 5、用unity3d开发衣柜设计软件,在运营中
分类: 嵌入式
2011-09-21 22:19:26
㈠首先中断来了,芯片会把程序指针指到这
非向量中断模式
b HandlerIRQ
b HandlerFIQ
中断向量模式:
ldr pc,=HandlerEINT0 ;mGA H/W interrupt vector table
ldr pc,=HandlerEINT1 ;
ldr pc,=HandlerEINT2 ;
ldr pc,=HandlerEINT3 ;
ldr pc,=HandlerEINT4567 ;
ldr pc,=HandlerTICK ;mGA
b .
b .
ldr pc,=HandlerZDMA0 ;mGB
ldr pc,=HandlerZDMA1 ;
ldr pc,=HandlerBDMA0 ;
等等
(注:这只说向量中断模式)
㈡以HandlerTIMER5为例
执行这个函数宏HandlerTIMER5 HANDLER HandleTIMER5
HANDLER 宏的作用是把ip指针指到HandleTIMER5处,HandleTIMER5是flash中的一个地址,有着一句分配HandleTIMER5 # 4,基址这样定义 ^ _ISR_STARTADDRESS
㈢这个地址中存的应该就是中断函数的地址。到c语言中找这个地址,这一句就是
#define pISR_TIMER5 (*(unsigned *)(_ISR_STARTADDRESS+0x40))
㈣pISR_TIMER5 看到它就像看到希望一样, 把我们的中断函数赋给它就大功告成了
pISR_TIMER5=(U32)Timer5Int;