ARM之GPIO介紹(Exynos4412平臺)

GPIO

概述:GPIO的英文全稱是General-Purpose Input/Output,也就是通用輸入輸出。在微控制器芯片上一般都會提供一個“通用可編程IO接口”,即GPIO.接口至少有兩個寄存器,即“通用IO控制寄存器”和“通用IO數據寄存器”。
特性

  • 46個可中斷通用控制I/O;
  • 172個外部中斷;
  • 32個外部可喚醒中斷;
  • 252個多路複用I/O口;
  • 睡眠模式引腳狀態可控(除了GPX0,GPX1,GPH2,GPH3);

GPIO常用寄存器

引腳控制寄存器(GPxCON x=A0~V4)

在exynos4412中,大多數的引腳都是功能複用的,所以必須對每個引腳進行配置。引腳控制寄存器(GPxCON)用來配置每個引腳的功能。
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

引腳數據寄存器(GPxDAT x=A0~V4)

如果引腳功能被配置爲輸出功能,可以通過向GPxDAT寄存器對應位寫入數據,控制引腳輸出相應電平。如果引腳被配置爲輸入功能,則可以從GPxDAT寄存器對應位讀出數據讀回的數據就是當前引腳的電平狀態。
在這裏插入圖片描述

引腳上拉下拉設置寄存器(GPxPUD x=A0~V4)

exynos4412芯片的內部給引腳設置了上拉電路和下拉電路,通過引腳上下拉設置寄存器控制引腳上拉電阻和下拉電阻的使能和禁止。如果引腳的上拉電阻被使能,則無論在哪種狀態(輸入、輸出、DATAn、EINTn等其他功能)下,上拉電阻都起作用。
在這裏插入圖片描述

引腳驅動能力寄存器(GPxDRV x=A0~V4)

根據和引腳連接的外設電器特性,設置引腳合適的驅動電流,達到既能滿足正常驅動的需求,也不浪費功耗。
在這裏插入圖片描述

低功耗模式引腳功能控制寄存器(GPxCONPDn x=A0~V4)

該寄存器用來控制exynos4412芯片在低功耗模式下的引腳功能,類似GPxCON寄存器,部分引腳沒有這個功能。

低功耗引腳上下拉設置寄存器(GPxPUDPDN x=A0~V4)

該寄存器用來控制exynos4412芯片在低功耗模式下的引腳上拉和下拉功能的使能和禁止,類似GPxPUDPDN寄存器,部分引腳誒呦這個功能。
注意
GPIO模塊的基地址是0x1100_0000
GPx2組的配置寄存器GPx2DRV的地址是:基地址+偏移量
0x1100 0000+0x0c4c=0x11000c4c

GPIO寄存器的封裝

直接封裝
#define GPx2CON (*(volatie unsigned int *)0x1100 0c40)

這裏定義了一個宏,宏定義在預處理階段進行直接替換。0x11000c40是一個十六進制的數據,前面用(unsigned *)修飾,表示把0x11000c40強制轉換成一個指向unsigned int型的指針變量。
volatile 是C 語言的 32個關鍵字之一,是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統、硬件中斷或者線程等。遇到這個關鍵字聲明的變量,編譯器對訪問該變量的代碼就不再進行優化,每次讀取這個變量的值都要從內存單元裏讀取,而不是直接使用放在高速緩存或寄存器裏的備份,從而可以提供對特殊地址的穩定訪問。

結構體封裝

和直接封裝是相同的道理,在這裏就不進行贅述,一般都是使用直接封裝的方法,有興趣的可以將直接封裝改寫爲結構體封裝。

發佈了34 篇原創文章 · 獲贊 41 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章