具體思路:
由於開發板是將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