查找mini2440的原理圖,找到LED部分的原理圖:
然後查找nLED_1到nLED_4分別連接的S3C2440的引腳:
由圖可知:
nLED_1---GPB5
nLED_2---GPB6
nLED_3---GPB7
nLED_4---GPB8
在S3C2440的引腳劃分中,這四個引腳都屬於Port B,因此可以通過配置Port B的控制寄存器對這四個引腳的功能進行配置:
如果要讓LED燈亮,nLED_1到nLED_4端需要低電平,因此GPB5到GPB8引腳需要:
(1)輸出:GPBCON
因此,GPBCON寄存器的11,13,15,17位要設置為0,而10,12,14,16位要設置為1,而且我們還知道GPBCON寄存器的地址為0x56000010:
#define GPBCON (*((volatile unsigned long*)0x56000010))
// GPBCON = 0000 0000 0000 0000 0000 0000 0000 0000
// GPBCON = 0000 0000 0000 0001 0101 0100 0000 0000
GPBCON = 0x00015400;
(2)低電平;
由此可知,在引腳設置為輸出時,引腳的狀態與寄存器中對應位的狀態保持一致,因此,要將引腳設置為低電平,我們只需要將寄存器中的5、6、7、8位設置為低電平即可:
#define GPBDAT (*((volatile unsigned long*)0x56000014))
#define LEDS (1<<5 | 1<<6 | 1<<7 | 1<<8)
GPBDAT = GPBDAT & (~LEDS);
這樣,就可以在這四個引腳上面都輸出低電平,四個LED燈就全部亮了。