天天看點

06-GPIO實驗

 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開發闆後效果:

06-GPIO實驗

      

06-GPIO實驗

4、通過延時循環點亮LED燈

與使用點亮一盞LED燈類似,通過循環與延時函數即可完成另LED循環閃爍的效果。

本文轉自 夢想成大牛 51CTO部落格,原文連結:http://blog.51cto.com/yinsuifeng/2058789,如需轉載請自行聯系原作者