s3c2410不帶系統(tǒng)的硬件測(cè)試程序(LED控制)
s3c2410的LED端口定義如下;
GPF7GPF6GPF5GPF4
nLED_8 nLED_4 nLED_2 nLED_1
GPF的IO端口控制寄存器包括:GPFCON(0x56000050)、GPFDAT(0x56000054)、GPFUP(0x56000050),分別是GPF端口控制寄存器、數(shù)據(jù)寄存器、上拉使能寄存器。
對(duì)四個(gè)LED燈的匯編控制程序如下:area init,code,readonly
;熄滅D9-D12
ldr r0,=0x56000050
mov r1,#0x00005500;output
str r1,[r0]
ldr r0,=0x56000054
mov r1,#0x000000f0
str r1,[r0]
loop
b loop
end
C語(yǔ)言程序如下:
控制LED顯示的C代碼必需要由匯編跳轉(zhuǎn)來(lái)執(zhí)行
匯編程序如下:
“init.s”
importMain
area init,code,readonly
entry
blMain
end
C程序如下
“main.c”
#define GPFCON (*(volatile unsigned long*)0x56000050)
#define GPFDAT (*(volatile unsigned long*)0x56000054)
intMain()
{
GPFCON = 0x00005500;
GPFDAT = 0x000000f0;
while(1);
return(0);
}
注意事項(xiàng):測(cè)試程序必須有一個(gè)死循環(huán)代碼。否則程序運(yùn)行完會(huì)繼續(xù)往下去取指,造成未定義指令中止。(這些程序在CodeWarrior中編譯通過(guò),并在ARM上成功運(yùn)行)