DCD 0x30 ;MRSR6 CL=3clk
DCD 0x30 ;MRSR7 CL=3clk
IsrIRQ
sub sp,sp,#4
stmfd sp!,{r8-r9}
ldr r9,=pINTOFFSET
ldr r9,[r9]
ldr r8,=HandleEINT0
add r8,r8,r9,lsl #2
ldr r8,[r8]
str r8,[sp,#8]
ldmfd sp!,{r8-r9,pc}
LTORG
_reset
ldr r0,=pWTCON ;关闭看门狗定时器
ldr r1,=0x0
str r1,[r0]
ldr r0,=pINTMSK
ldr r1,=0xffffffff ;屏蔽所有中断请求
str r1,[r0]
ldr r0,=pINTSUBMSK
ldr r1,=0x7fff ;关闭所有子中断请求,1为无中断请求,0~14为有效设置位,其余为保留位。
str r1,[r0]
;设置PLL锁存时间 To reduce PLL lock time, adjust the LOCKTIME register.
ldr r0,=pLOCKTIME
ldr r1,=0xffffff
str r1,[r0]
ldr r0,=pCLKDIVN
ldr r1,=vCLKDIVN ; 0=1:1:1, 1=1:1:2, 2=1:2:2, 3=1:2:4, 4=1:4:4, 5=1:4:8, 6=1:3:3, 7=1:3:6.
str r1,[r0]
;Configure UPLL
ldr r0,=pUPLLCON
ldr r1,=vUPLLCON ;Fin = 12.0MHz, UCLK = 48MHz
str r1,[r0]
nop ;Caution: After UPLL setting, at least 7-clocks delay must be inserted for setting hardware be completed.
nop
nop
nop
nop
nop
nop
;Configure MPLL
ldr r0,=pMPLLCON
ldr r1,=vMPLLCON ;Fin = 12.0MHz, FCLK = 400MHz
str r1,[r0]
;设置SDRAM存储器参数
;Set memory control registers
adrl r0, SMRDATA ;be careful!
ldr r1,=pBWSCON ;BWSCON Address
add r2, r0, #52 ;End address of SMRDATA
0
ldr r3, [r0], #4
str r3, [r1], #4
cmp r2, r0
bne %B0
InitStacks ;初始化可能用到的工作模式下的堆栈区
mrs r0,cpsr
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#IRQMODE
msr cpsr_cxsf,r1 ;IRQMode
ldr sp,=IRQStack ; IRQStack=0x33FF_7000
orr r1,r0,#FIQMODE
msr cpsr_cxsf,r1 ;FIQMode
ldr sp,=FIQStack ; FIQStack=0x33FF_8000
orr r1,r0,#USERMODE
msr cpsr_cxsf,r1
ldr sp,=UserStack
ldr pc,=Main
LTORG
Main
ldr r0,=pINTMOD
ldr r1,=0x0
str r1,[r0]
ldr r0,=pGPFCON
ldr r1,=0x080
str r1,[r0]
ldr r0,=pGPFUP
ldr r1,=0xff
str r1,[r0]
ldr r0,=HandleEINT0+0x0c
adrl r1,interrupt
str r1,[r0]
ldr r0,=0x20005000
ldr r1,=0x00
str r1,[r0]
ldr r0,=pINTMSK
ldr r1,=0x0FFFFFFF7
str r1,[r0]
wait_server
b .
;
mrs r0,cpsr
bic r0,r0,#MODEMASK|NOINT
orr r1,r0,#USERMODE
msr cpsr_cxsf,r1
b wait_server
LTORG
interrupt
;sub lr,r14,#4
stmfd sp!,{r8,r9,lr}
LOOP0
ldr r0,=0x20005000
ldr r1,=0x01
str r1,[r0]
bl Delay
ldr r0,=0x20005000
ldr r1,=0x03
str r1,[r0]
bl Delay
……………………
[1] [2] [3]