s3c2440基本io/ports led點(diǎn)亮
掃描二維碼
隨時(shí)隨地手機(jī)看文章
Led對應(yīng)管腳如下圖所示:
所以需要設(shè)置GPB相關(guān)的寄存器,在IO Port里,Port B Control Register。有11個(gè)io input/output接口
GPB5
Led1
GPB6
Led2
GPB7
Led3
GPB8
Led4
S3C2440存在接口復(fù)用,所以即需要設(shè)置PnCON以確定io口的功能。
如果接口設(shè)置位output則可寫data寄存器進(jìn)行控制,若設(shè)為input可讀寄存器的值。
相關(guān)的還有一個(gè)混雜寄存器和外部中斷寄存器,可不用關(guān)心。
可知相關(guān)的兩個(gè)寄存器的地址為0x56000010,,0x56000014。
對于GPBCON,各個(gè)接口都應(yīng)該選01,作為output使用
0x 00 0 0
要是GPB5-8全部點(diǎn)亮,設(shè)置01 0101 0100 00000000 ----------------> 0x15400
LED低電平點(diǎn)亮:
所有匯編程序如下
.text
.global_start
start:
LDR R0,=0x56000010 @R0設(shè)為GPBCON寄存器,此寄存器用于選擇端口B引腳的功能:
@是輸入輸出還是其他
MOV R1, #0x15400 @要是GPB5-8全部點(diǎn)亮,設(shè)置01 01010100 0000 0000 --> 0x15400
STRR1,[R0] @將GPBCON寄存器設(shè)置為0x15400
MOV R1,#0x00000000 @
STRR1,[R0] @GPB5-8輸出0,LED1-4全部點(diǎn)亮
MAIN_LOOP:
B MAIN_LOOP
Makefile:
Led_on:led_on.s
arm_linux_gcc -g -o led_on.o led_on.s
#編譯
arm_linux_ld -Ttext 0x00000000 -g led_on.o led_tmp.o
#鏈接
arm_linux_objcopy -O binary -S led_on_tmp.o led_on
#把ELF格式的可執(zhí)行那個(gè)文件led_on_tmp.o轉(zhuǎn)換成
二進(jìn)制文件格式led_on
Clean:
rm -f led_on
rm *.o
實(shí)驗(yàn)還未經(jīng)過驗(yàn)證。