📄 init.s
字号:
AREA Init, CODE, READONLY
ENTRY
MODE_USR EQU 0x10 ; 用户模式
MODE_FIQ EQU 0x11 ; 快速中断模式
MODE_IRQ EQU 0x12 ; 普通中断模式
MODE_SVC EQU 0x13 ; 管理模式
MODE_SYS EQU 0x1F ; 系统模式
I_Bit EQU 0x80 ; when I bit is set, IRQ is disabled
F_Bit EQU 0x40 ; when F bit is set, FIQ is disabled
IMPORT main
IMPORT US2_interrupt ; UART2中断处理程序
IMPORT US3_interrupt ; UART3中断处理程序
IMPORT Timer0_Handler ; 系统时钟中断处理程序(10ms)
;IMPORT Abort_Handler
B Reset_Handler ; Reset here(0)
B Abort_Handler ; Undefined_Handler(1)
B Abort_Handler ; SWI_Handler(2)
B Abort_Handler ; Prefetch_Handler(3)
B Abort_Handler ; Abort_Handler(4)
B Abort_Handler ; Reserved vector(5)
LDR PC, [PC, #-0xff0] ; IRQ interrupt vector(6)
STMFD SP!, {R0-R7, LR} ; FIQ interrupt vector(7)
BL US2_interrupt
BL US3_interrupt
BL Timer0_Handler
LDMFD SP!, {R0-R7, LR}
SUBS PC, LR, #4
Abort_Handler B Reset_Handler
EXPORT __rt_div0
__rt_div0
B Reset_Handler
Reset_Handler
MSR CPSR_c, #MODE_FIQ :OR: I_Bit :OR: F_Bit ; Disable all interrupts
LDR SP, =0x40004000 ; FIQ stack start here(256B)
MSR CPSR_c, #MODE_IRQ :OR: I_Bit ; Enable FIQ interrupt only
LDR SP, =0x40003C00 ; IRQ stack start here(256B)
MSR CPSR_c, #MODE_SYS ; Enable all interrupts
LDR SP, =0x40003800 ; SYS stack start here
B main
CrpData
WHILE . < 0x1fc
NOP
WEND
CrpData1
;DCD 0x87654321
DCD 0x00000000
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -