GPIO(General Purpose I/O Ports)意思為通用輸入/輸出端口,通俗地說,就是一些引腳,可以通過它們輸出高低電平、或者通過它們讀入引腳的狀态──是高電平還是低電平。
三星 S3C2440,有130個I/O端口,分為A-J九組,可以通過設定寄存器來确定某個引腳用于輸入、輸出還是特殊功能。在這裡通過四個實驗介紹GPIO的簡單使用。
1、通過彙編語言點亮LED燈
首先需要看原理圖,知道LED與晶片引腳的關系。
由原理圖可知,2440引腳作為輸出引腳與LED燈連接配接,要使LED燈點亮,配置相關寄存器為輸出引腳,且将該引腳輸出低電平即可點亮LED燈。檢視2440晶片手冊,GPB組引腳控制寄存器位址為:0x56000010,資料寄存器位址為:0x56000014。點亮LED1的彙編代碼為:
其Makefile為:
編譯後下載下傳到TQ2440開發闆後效果:led_1點亮
2、通過C語言點亮LED燈
在使用C語言點亮LED燈時,首先需要進行硬體相關初始化與軟體相關初始化。硬體相關有:關看門狗、初始化時鐘、初始化SDRAM等,而對于點亮LED燈實驗,隻需要關閉看門狗即可;軟體方面,需要設定傳回位址,即設定棧、調用main函數等。首先,彙編代碼部分:
C語言部分:
Makefile代碼為:
3、通過按鍵控制LED燈點亮
通過按鍵控制LED燈時,首先看原理圖,了解按鍵與2440晶片連接配接的引腳關系。
使用彙編完成相關初始化,跳轉到main函數中,C程式部分通過按鍵實作LED燈的亮與滅。
彙編代碼:
編譯後下載下傳到TQ2440開發闆後效果:

4、通過延時循環點亮LED燈
與使用點亮一盞LED燈類似,通過循環與延時函數即可完成另LED循環閃爍的效果。
本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/2058789,如需轉載請自行聯系原作者