【ARM學(xué)習(xí)筆記】實(shí)驗(yàn)一:S3C2440A的GPIO輸出實(shí)驗(yàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
GPIO引腳的主要作用輸出/輸入高低電平,用來(lái)表示二進(jìn)制的0和1,當(dāng)然除此之外還有其它特殊功能,這在之后的課程會(huì)學(xué)習(xí)到的,此處只需要研究輸出功能。
實(shí)驗(yàn)1:在下面的電路中:
如果想要點(diǎn)亮4個(gè)LED,應(yīng)該怎么做呢
【原理】需要讓適宜的電流從右到左通過LED,這樣才能激發(fā)LED發(fā)光
【實(shí)現(xiàn)方法】以GPB5為例,將GPB5設(shè)為低電平,這時(shí)右邊的3.3V處于為高電平,電流將從高電平流向處于低電平的GPB5,LED將被點(diǎn)亮
#########################################################################################################
【代碼實(shí)現(xiàn)】
#########################################################################################################
以下為匯編版本
led_on.bin : led_on.S
arm-linux-gcc -g -c -o led_on.o led_on.S
arm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elf
arm-linux-objcopy -O binary -S led_on_elf led_on.bin
arm-linux-objdump -D -m arm led_on_elf > led_on_c.dis
clean:
rm -f *.bin *elf *.o *bak *.dis *~
.text
.global _start
_start:
LDRR0, =0x56000010
MOVR1, #0x00000400
STRR1, [R0]
LDRR0, =0x56000014
MOVR1, #0x00000000
STRR1, [R0]
MAIN_LOOP:
BMAIN_LOOP
以下為C語(yǔ)言版本
led_on_c.bin : crt0.S led_on_c.c
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -o led_on_c.o led_on_c.c
arm-linux-ld -Ttext 0x0000000 -g crt0.o led_on_c.o -o led_on_c_elf
arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin
arm-linux-objdump -D -m arm led_on_c_elf > led_on_c.dis
clean:
rm -f *.bin *elf *.o *bak *.dis *~
int main()
{
* (unsigned long *)0x56000010 = 0x00000400;
* (unsigned long *)0x56000014 = 0x00000000;
return 0;
}