GPIO程式設計(二)led燈的控制
阿新 • • 發佈:2019-01-26
控制暫存器,當設為輸入時,讀取暫存器可知相應引腳狀態。當設為輸出時,寫暫存器可以使相應引角輸出高低電平。
在這裡設定上拉電阻與否不影響led燈的點亮。
直接上原始碼led.c
編譯命令#define GPKCONC0 (*(volatile int*)0x7f008800) /*把地址強制轉換為指標*/ #define GPKDAT (*(volatile int*)0x7f008808) #define GPKPUD (*(volatile int*)0x7f00880c) void init(void); void led(int, int); void delay(int); void entry(void) { init(); while(1) { led(0, 1); delay(1000); led(1, 1); delay(1000); led(2, 1); delay(1000); led(3, 1); delay(1000); led(0, 0); delay(1000); led(1, 0); delay(1000); led(2, 0); delay(1000); led(3, 0); delay(1000); } } void init(void) { GPKCONC0 = (GPKCONC0 & ~(0xffffU << 16)) | (0x1111U << 16); GPKPUD = (GPKPUD & ~(0xffU << 8)) | (0x00U << 8); } void led(int num, int light) { if (light) { GPKDAT |= 1 << (num+4); } else { GPKDAT &= ~(1 << (num + 4)); } } void delay(int times) { volatile int i; for(i = 0; i <(times << 5); ++i); }
arm-linux-gcc -S -o led.S led.c
arm-linux-as -o led.o led.S
arm-linux-ld -Ttext 0xc0008000 -nostdinc -o led.elf led.o
arm-linux-objcopy -O binary -R .comment -R .note -S led.elf led.bin
下到開發板上,這個時候你就看到了,核心板上的四個小燈閃啊閃的