7個寄存器 是R1-R16.(當然,里面有很多是分幾個模式的,所以總共有37個)
類似於單片機的R0-R7.
GPXCON,GPXDAT等等是另外的寄存器,應該叫,特殊功能寄存器,類似於單片機的P0,P1,TCON,等等。
GPXCON:是X管腳的控制寄存器,控制它們的模式,比如輸出模式,輸入模式……
GPXDAT:是X管腳的數據寄存器,存儲它們的數據,
GPIO ,通用的輸入輸出,其引腳可供編程使用,對於簡單的外部設備,比如控制一個LED 燈的亮滅,自然 只需要一位 信號就夠了。
使用傳統的 串行口和並行口 並不合適。 所以 S3C2440 芯片提供了 130個通用的 GPIO 口。
s3c2440 有 130個 功能可以選擇的I/O端口,共9組: GPA,GPB,。。。。GPJ , 每組I/O 引腳數目不等。 GPB組共有11個I/O 端口,GPB0---GPB1——-----GPB10 ,GPC 有16個, GPC0--GPC15.
功能可以選擇是指 可以通過設置控制寄存器來將 某個引腳作為 輸入、輸出或者 其他功能。
舉例子:
開發板LED1 接在 GPB5 端口上,因此可以通過控制寄存器來將GPB5設為輸出, 只有當GPB5 是低電平的時候LED1 才會亮, 這時候便用到 芯片內部對應的數據寄存器。 數據寄存器每一位控制一個I/O引腳。。
GPB5便由 數據寄存器的第5位控制,輸入0 ,LED1點亮。
_____________________________________________________________________________________________________________________________________________
我們通過分析 GPB 來掌握 GPIO 口的 使用,舉一反三!!!!!!!!!!!!!!!!!!!!!!!!!!
GPxCON:用於配置(configure),選擇引腳的功能。
GPxDAT:用於讀/寫數據。
GPxUP:確定是否使用內部上拉電阻。(沒有GPAUP寄存器。)
我們來講解 GPBCON :
從圖可以看出 B組 有 11個 GPIO 端口 。
GPXCON 中 每兩位控制一根引腳。 00表示 輸入,01 表示輸出, 10 特殊功能 ,11 保留不用
這樣理解吧,參考51單片機,51單片機 並行口 P0 P1 P2 P3 ,一個有 8位
GPxDAT 寄存器, 用於讀寫引腳, 設為輸入時候, 讀此寄存器可知 相應引腳電平狀態高低,輸出時候也一樣。
GPXUP : 為 1 無上拉電阻, 0 有上拉電阻。
GPBCON: = 0x15400 GPB0
#define LEDS (1<<5|1<<6|1<<7|1<<8)
GPBDAT=(GPBDAT&(~LEDS)) | (1<<6|1<<7|1<<8); // LED1 亮了,其余滅,分析簡單
討論:
| GPBCON | ||
| GPB10 | 21 | |
| 20 | ||
| GPB9 | 19 | |
| 18 | ||
| GPB8 | 17 | LED4 |
| 16 | ||
| GPB7 | 15 | LED3 |
| 14 | ||
| GPB6 | 13 | LED2 |
| 12 | ||
| GPB5 | 11 | LED1 |
| 10 | ||
| GBP4 | 9 | |
| 8 | ||
| GPB3 | 7 | |
| 6 | ||
| GPB2 | 5 | |
| 4 | ||
| GPB1 | 3 | |
| 2 | ||
| GPB0 | 1 | |
| 0 |
| 15400 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | (17:16) 01 | output |
| 1 | ||
| 0 | (15:14) 01 | putput |
| 1 | ||
| 0 | (13:12) 01 | output |
| 1 | ||
| 0 | (11:10) 01 | output |
| 1 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 | ||
| 0 |
| GPBDAT | ~LEDS | (GPBDAT&(~LEDS)) | (1<<6|1<<7|1<<8) |
||
| GPB10 | 10 | ||||
| GPB9 | 9 | ||||
| GPB8 | 8 | 0 | 0 | 1 | |
| GPB7 | 7 | 0 | 0 | 1 | |
| GPB6 | 6 | 0 | 0 | 1 | |
| GPB5 | 5 | 0 | 0 | 0 LED1亮 | |
| GPB4 | 4 | ||||
| GPB3 | 3 | ||||
| GPB2 | 2 | ||||
| GPB1 | 1 | ||||
| GPB0 | 0 | ||||
(1<<5|1<<7|1<<8) |
(1<<5|1<<6|1<<8) |
(1<<5|1<<6|1<<7) |
| 1 | 1 | 0 LED4亮 |
| 1 | 0 LED3 亮 | 1 |
| 0 LED2亮 | 1 | 1 |
| 1 | 1 | 1 |
這樣一個 LED 流水燈 就形成了啊。。。
