📄 init.s
字号:
area init,code,readonly
ENTRY
B RESET ;复位异常向量,跳转到程序开始位置。
B undefined ;未定义指令异常,跳转到当前位置。
B SWI ;SWI异常,跳转到当前位置。
B INDEX
nop ;指令预取中止异常,跳转到当前位置。
B DATAEND ;数据访问中止异常,跳转到当前位置。
B IRQ ;IRQ异常,跳转到响应中断服务程序。
B FIQ ;FIQ异常,跳转到当前位置。
RESET
LDR R0,=0X56000010 ;LED controler
LDR R1,=0X00154000
STR R1,[R0]
; LDR SP, =0x3FE1000 ;SP指向4K SRAM的尾地址,堆栈向下生成
LDR R0,=0X56000014 ;LED data_register
LDR R1,=0Xbff
STR R1,[R0]
;//////////init 中断
msr cpsr_c,#0xd2
ldr sp ,=0x33000000
msr cpsr_c,#0xdf
ldr sp, =0x34000000
;bl init_irq ;////////////////////////////
LDR R0,=0X56000050 ;GPFCON TEST-49
; LDR R1,=0X80c8
LDR R1,=0X08
STR R1,[R0]
;LDR R0,=0X56000058 ;GPFUP TEST-50
;LDR R1,=0X8E
; STR R1,[R0]
LDR R0,=0X560000A4 ; EINTMASK p280
LDR R1,=0Xfffffff0
STR R1,[R0]
LDR R0,=0X4A000008 ;INTMASK 打印出来的10
LDR R1,=0Xfffffffd
STR R1,[R0]
LDR R0,=0X4A00000C ;PRIORITY 12
LDR R1,=0Xfc
STR R1,[R0]
msr cpsr_c, #0x5f
;/////////////////////////////////
loop
nop
LDR R0,=0X56000014 ;data_register
LDR R1,=0XFff
STR R1,[R0]
nop
LDR R0,=0X56000014
LDR R1,=0X0
STR R1,[R0]
B loop
;///////////////////////////////////////////////IRQ_handle
IRQ
sub lr,lr,#4 ;计算返回地址
stmdb sp!, {r0-r12,lr} ;保护现场
ldr lr , =int_return
;/////////////////////// 清中断
;LDR R3,=0X560000A8 ;EINTPEND
;LDR R3,=0X560000A8
;LDR R4,=0X80
;STR R4,[R3]
LDR R0,=0X4A000000 ; SURPND
LDR R1,=0X2
STR R1,[R0]
LDR R0,=0X4A000010 ; INTPND
LDR R1,=0X2
STR R1,[R0]
; b pp
;//////LED display
kkk
nop
LDR R0,=0X56000014
LDR R1,=0Xffff
STR R1,[R0]
NOP
b delay ;//////////////////////////////////
LDR R0,=0X56000014
LDR R1,=0X0000
STR R1,[R0]
b delay
;LDR R0,=0X4A000000 ; SURPND
;LDR R1,=0X0
; STR R1,[R0]
; LDR R0,=0X4A000000 ; SURPND
; LDR R1,=0X2
;STR R1,[R0]
;b delay
; B kkk
;//////////////
int_return
ldmia sp!, {r0-r12,pc}^ ;中断返回,^表示将SPSR的值复制到CPSR
;////////////////////////////////////////
;////////////////////////////////delay
delay
ldr r3,=0x0ffffff ;set the delay time
delay1
sub r3,r3,#1 ;r3=r3-1
cmp r3,#0x0 ;compare r3 with 0
bne delay1 ;the result of compare is not 0 call delay1 else excause the last
mov pc,lr ;return
;//////////////////////////////////////////////////////
undefined
B undefined
SWI
B SWI
INDEX
B INDEX
DATAEND
B DATAEND
;IRQ
; B IRQ
FIQ
B FIQ
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -