(一)GPIO 編程實驗 LED 流水燈控制


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 流水燈 就形成了啊。。。
 
 
 
 
                                                                       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM