由于开发板是将GPF4-7与灯相连,所以通过设置GPFCON控制寄存器将将LED灯相连的引脚4,5,6,7设置为输出功能,将他们的上拉电阻设置为禁用(设置GPFUP为0),通过修改GPFDAT寄存器的数值来实现灯的亮和灭,主要是将具体引脚对应的GPFUP设置为0,使之为低电平,从而使灯可以亮。再设置几个延迟将灯亮的时间延长。最后用C语言的mian函数调用LEDTEST函数即可。
主要ARM代码部分:
GPFCON EQU 0x56000050
GPFDAT EQU 0x56000054
GPFUP EQU 0x56000058
AREA LEDTESTARM,CODE,READONLY
EXPORT LEDTEST
IMPORT main
ENTRY
LEDTEST
;设置每个引脚的功能,设置GPF4-7为output
LDR R0,=GPFCON
LDR R1,=0x5500
STR R1,[R0]
;禁止他们的上拉电阻
LDR R0,=GPFUP
LDR R1,=0xff00
STR R1,[R0]
LDR R2,=GPFDAT
;下面进行跑马灯的循环
LOOP2
LDR R1,=0xdf
STR R1,[R2]
BL DELAY2
LOOP3
LDR R1,=0x7f
STR R1,[R2]
BL DELAY3
LOOP1
LDR R1,=0xef ;低电平设置
STR R1,[R2]
BL DELAY1 ;延迟
LOOP4
LDR R1,=0xbf
STR R1,[R2]
BL DELAY4
;延迟程序
DELAY1
LDR R3,=0x8ffff ;设置延长时间
DELAY5
SUB R3,R3,#1 ;r3=r3-1
CMP R3,#0x0 ;将r3的值与0相比较
BNE DELAY5 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句
B LOOP4
MOV PC,LR ;返回
DELAY2
LDR R3,=0x8ffff
DELAY6
SUB R3,R3,#1
CMP R3,#0x0
BNE DELAY6
B LOOP3
MOV PC,LR
DELAY3
LDR R3,=0x8ffff
DELAY7
SUB R3,R3,#1
CMP R3,#0x0
BNE DELAY7
B LOOP1
MOV PC,LR
DELAY4
LDR R3,=0x8ffff
DELAY8
SUB R3,R3,#1
CMP R3,#0x0
BNE DELAY8
B LOOP2
MOV PC,LR
END