【ARM學(xué)習(xí)筆記】實(shí)驗(yàn)二:S3C2440A的GPIO輸入實(shí)驗(yàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在實(shí)驗(yàn)一中,研究了如何輸出高低電平。
本實(shí)驗(yàn)來(lái)研究了如何接收高低電平,我們知道,GPIO的輸入功能的實(shí)際上是電壓測(cè)量,不會(huì)形成通路。
實(shí)驗(yàn)2:在下面的電路中:
假設(shè)我們將GPG11設(shè)置為輸入功能,GPB5設(shè)置為輸出功能,檢測(cè)開關(guān)是否按下,如果按下,則點(diǎn)亮LED,否則熄滅。
觀察電路圖可知,開關(guān)的一端接在GND(接地)上,另一端通過電阻接在VCC(電源3.3V)上,而S3C2440的GPG11接在開關(guān)與電阻之間。
這個(gè)電路中,電阻稱為上拉電阻,其作用在于,當(dāng)開關(guān)斷開時(shí),GPG11檢測(cè)到高電平,當(dāng)開關(guān)閉合時(shí),GPG11引腳檢測(cè)到低電平。
相應(yīng)的也有下拉電阻,用來(lái)拉低電平,以后會(huì)接觸到。
#################################################################################################################
僅用C語(yǔ)言實(shí)現(xiàn),比較簡(jiǎn)單方便
#################################################################################################################
key_led.bin : crt0.S key_led.c
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -o key_led.o key_led.c
arm-linux-ld -Ttext 0x0000000 -g crt0.o key_led.o -o key_led_elf
arm-linux-objcopy -O binary -S key_led_elf key_led.bin
arm-linux-objdump -D -m arm key_led_elf > key_led.dis
clean:
rm -f *.bin *elf *.o *bak *.dis *~
.text
.global _start
_start:
ldrr0, =0x53000000
movr1, #0x00000000
strr1, [r0]
ldrsp, =1024*4
blmain
halt_loop:
bhalt_loop
int main()
{
unsigned long dwDat;
* (unsigned long *)0x56000010 = 0x00000400;
* (unsigned long *)0x56000060 = 0x00000000;
while(1)
{
dwDat = * (unsigned long *)0x56000064;
if (dwDat & 0x00000800)
{
* (unsigned long *)0x56000014 = 0xFFFFFFFF;
}
else
{
* (unsigned long *)0x56000014 = 0xFFFFFFDF;
}
}
return 0;
}
<完結(jié)>