startup_rtx.s

来自「射频芯片nRF905例程」· S 代码 · 共 16 行

S
16
字号
                PRESERVE8                       ; 8-Byte aligned Stack
                AREA    IRQ_Vect_Addr, CODE, READONLY
                ARM
                EXPORT  IRQ_Handler
				IMPORT  VIC_Vect_Addr0
IRQ_Handler     STMFD   SP!, {R11, R12, LR};真保护R11R12, 假保护LR(用于运算)
                LDR     R12, VIC_Vect_Addr   ;取VICVectAddr物理地址
                LDR     R12, [R12]        ;取出取VICVectAddr内实际向量中断号(非地址)
				AND     R12, #0x1f      ;防止32个中断序号越界,在此可再做序号越界处理(可省略)
                LDR     R11, =VIC_Vect_Addr0
                LDR     R12, [R11, R12, LSL #2];散转到用户真正的向量中断地址
                STR     R12, [SP, #0x08];将中断向量地址R12写入事先保存的那个LR空间
				LDMFD   SP!, {R11, R12, PC};恢复R11R12,同时PC跳入中断向量地址执行
VIC_Vect_Addr   DCD     0xFFFFF030;VICVectAddr物理地址
                END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?