vectors.s:
ENTRY
LDR PC, Reset_Addr
LDR PC, Undefined_Addr
LDR PC, SWI_Addr
LDR PC, Prefetch_Addr
LDR PC, Abort_Addr
NOP ; Reserved vector
LDR PC, IRQ_Addr
LDR PC, FIQ_Addr
IMPORT Reset_Handler ; In init.s
IMPORT inc_clock [WEAK] ; In clock_irq.c
Reset_Addr DCD Reset_Handler
Undefined_Addr DCD Undefined_Handler
SWI_Addr DCD SWI_Handler
Prefetch_Addr DCD Prefetch_Handler
Abort_Addr DCD Abort_Handler
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler
但是我们程序里只有IRQ_Int_Handler()这个函数,我不知道IRQ_Int_Handler()具体怎么和IRQ_Addr DCD IRQ_Handler发生关系的??
还有个问题,看书上说,应该中断程序退出时,需要恢复CPSR的,但是我C代码里 没有这个代码 为什么??通常C代码的isr中,怎么恢复CPSR,我里头只有一个__enable_irq()的函数,好像是库函数,反正找不到这个函数的代码。 |