前几天因为休眠唤醒在startup.s函数中出现问题,因为OAL层的代码无法用仿真器调试,只好用点LED和串口的方法调试了。下面是汇编函数。
; rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data & 0xf)<<4);
LED_DISPLAY
ldr r0,=GPFCON
ldr r1,=0x5100 //设置GPF5为输入,GPF5为高电平时,LED灯亮
str r1,[r0]
ldr r0,=GPFDAT
ldr r1,=0x00 //设置为低电平,关闭LED
str r1,[r0]
b .
_UartInit //初始化2440串口2,
ldr r0,=GPHCON
ldr r1,=0xA500
str r1,[r0]
mov r1,#0
ldr r0,=0x50008000
str r1,[r0,#0x8]
mov r1,#0x3
str r1,[r0]
ldr r1,=0x245
str r1,[r0,#0x4]
mov r1,#36
str r1,[r0,#0x28]
mov pc,lr
;EXPORT _UartSendByte
_UartSendByte //在串口2输出字符“A”
ldr r0,=0x50008000
ldr r1,[r0,#0x10]
1
tst r1,#0x02
beq %B1
ldr r1,=0x10000
2
subs r1,r1,#1
bne %B2
mov r1,#65
str r1,[r0,#0x20]
ldr r1,=0x10000
3
subs r1,r1,#1
bne %B3
mov pc,lr