cortex m0 lpc1114_GPIO引腳寄存器綜述
LPC1114一共有42個GPIO,分為4個端口,P0、P1、P2口都是12位的寬度,引腳從Px.0~Px.11,P3口是6位的寬度,引腳從P3.0~P3.5。
每個GPIO都可以通過軟件設置為輸入或輸出引腳,讀取引腳的電平,就需要把引腳設置為輸入引腳,比如引腳用來做ADC輸入引腳或按鍵檢測引腳的時候。需要程序控制引腳電平的時候,就把引腳設置為輸出引腳,比如引腳控制外部三極管導通與截止的時候。
每個GPIO都可以作為中斷引腳來感知外部。中斷還可以設置為電平中斷或邊沿觸發(fā)中斷。電平中斷又可以設置為低電平中斷或高電平中斷,邊沿觸發(fā)又可以設置為下降沿中斷或上升沿中斷,也可以設置為雙邊沿觸發(fā)中斷。它的靈活性給我們設計帶了很大的方便。
引腳作為GPIO功能時,默認是輸入引腳。
由于GPIO的寄存器并不是很多,我們首先了解學習它的寄存器,然后通過實例講解GPIO的各種輸入輸入應用。
2.1 GPIO寄存器定義
名稱訪問屬性描述復位值DATA可讀可寫數(shù)據(jù)寄存器不定DIR可讀可寫方向寄存器0x00IS可讀可寫中斷感應寄存器0x00IBE可讀可寫雙邊沿中斷寄存器0x00IEV可讀可寫中斷事件寄存器0x00IE可讀可寫中斷屏蔽寄存器0x00RIS只可讀原始中斷狀態(tài)寄存器0x00MIS只可讀屏蔽中斷狀態(tài)寄存器0x00IC只可寫中斷清除寄存器0x001. 數(shù)據(jù)寄存器DATA
位
名稱
描述
復位值
訪問屬性
11:0
DATA
1為高電平,0為低電平
不定
可讀可寫
31:12
–
保留
–
–
數(shù)據(jù)寄存器用來讀取單片機引腳的電平和控制單片機引腳的電平。當引腳設置為輸入引腳時,讀取DATA寄存器可以獲得引腳的電平。當引腳設置為輸出引腳時,給DATA寄存器寫值可以控制引腳的電平。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。例如,讀取P0口的DATA寄存器,bit0就對應P0.1引腳的電平,bit7就對應P0.7引腳的電平,以此類推。bit12到bit31這些位保留不用。LPC1114的四個端口,每個端口都有一個DATA寄存器。由于P3口只有6個引腳,所以P3口的DATA寄存器只有bit0到bit5是可以使用的,其它位無用。
當引腳設置為輸入引腳的時候,給DATA寄存器寫值不會影響到引腳的電平,沒有意義。此時DATA寄存器的值只受引腳外部電平的影響。
2. 方向寄存器DIR
位
名稱
描述
復位值
訪問屬性
11:0
IO
1為輸出,0為輸入
0x000
可讀可寫
31:12
–
保留
–
–
方向寄存器用來設置GPIO引腳的輸入和輸出功能。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。例如,設置P0.5為輸入引腳,需設置GPIO0的DIR寄存器中的bit5為0,設置P0.5為輸出引腳,需設置GPIO0的DIR寄存器中的bit5為1。由上表復位值可知,GPIO默認是輸入引腳。bit12到bit31這些位保留不用。
3. 中斷感應寄存器IS
位
名稱
描述
復位值
訪問屬性
11:0
ISENSE
0為邊沿觸發(fā)
1為電平觸發(fā)
0x000
可讀可寫
31:12
–
保留
–
–
中斷感應寄存器用來設置產生中斷的觸發(fā)方式。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。給對應的bit寫0,把對應的引腳設置為邊沿觸發(fā)。給對應的bit寫1,把對應的引腳設置為電平觸發(fā)。由復位值可知,引腳默認為邊沿觸發(fā)方式。邊沿觸發(fā),分為上升沿觸發(fā)和下降沿觸發(fā)兩種方式。電平觸發(fā),分為高電平觸發(fā)和低電平觸發(fā)兩種方式。具體是哪種邊沿或者哪種電平觸發(fā)中斷,需要由下面將要講到的“中斷事件觸發(fā)器”決定。
4. 雙邊沿中斷寄存器IBE
位
名稱
描述
復位值
訪問屬性
11:0
IBE
0:中斷方式由IEV決定
1:設置為雙邊沿中斷
0x000
可讀可寫
31:12
–
保留
–
–
雙邊沿中斷寄存器用來設置引腳中斷方式是否為雙邊沿觸發(fā)中斷。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。給對應的bit寫1,把對應的引腳設置為雙邊沿觸發(fā)中斷,給對應的bit寫0,則觸發(fā)方式由中斷事件寄存器的設置決定。
5. 中斷事件寄存器IEV
位
名稱
描述
復位值
訪問屬性
11:0
IEV
0:下降沿或低電平觸發(fā)
1:上升沿或高電平觸發(fā)
0x000
可讀可寫
31:12
–
保留
–
–
中斷感應寄存器用來設置高低電平或者是上升沿和下降沿觸發(fā)中斷的方式。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。這個寄存器與“中斷感應寄存器”配合使用,決定引腳的電平觸發(fā)方式。給對應的bit位寫0,如果“中斷感應寄存器”設置為邊沿觸發(fā),這里即是下降沿觸發(fā)中斷,如果“中斷感應寄存器”設置為電平觸發(fā),這里即是低電平觸發(fā)中斷。給對應的bit位寫1,如果“中斷感應寄存器”設置為邊沿觸發(fā),這里即是上升沿觸發(fā)中斷,如果“中斷感應寄存器”設置為電平觸發(fā),這里即是高電平觸發(fā)中斷。由復位值可知,引腳的中斷觸發(fā)方式為低電平觸發(fā)中斷或者是下降沿觸發(fā)中斷。
6.中斷屏蔽寄存器IE
位
名稱
描述
復位值
訪問屬性
11:0
MASK
0:屏蔽引腳的中斷
1:不屏蔽引腳的中斷
0x000
可讀可寫
31:12
–
保留
–
–
中斷屏蔽寄存器用來屏蔽引腳上的中斷。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。給對應的bit位寫0,屏蔽對應引腳的中斷。給對應的bit位寫1,不屏蔽對應引腳的中斷。
它其實是接下來要講到的“屏蔽中斷狀態(tài)寄存器”的開關。當引腳設置好觸發(fā)中斷方式以后,在引腳上產生了觸發(fā)中斷的條件,如果這里的對應引腳的位設置為1,那么“屏蔽中斷狀態(tài)寄存器”中的對應狀態(tài)位將置1,如果這里的對應引腳的位設置為0,那么“屏蔽中斷狀態(tài)寄存器”中的對應狀態(tài)位將不會置1。
7. 原始中斷狀態(tài)寄存器RIS
位
名稱
描述
復位值
訪問屬性
11:0
RAWST
0:表示沒有產生中斷
1:表示產生了中斷
0x000
只讀
31:12
–
保留
–
–
原始中斷狀態(tài)寄存器,是一個只讀寄存器。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。讀取對應的位,可以知道引腳上有沒有產生符合條件的中斷。
需要注意的是,這里的狀態(tài)位,并不受“中斷屏蔽寄存器”設置位的影響。例如,當某引腳設置為下降沿產生中斷,如果某引腳上產生了下降沿,這個寄存器中的對應位就會置1。也就是說,前面提到的“中斷屏蔽寄存器”的設置,只會影響到“屏蔽中斷狀態(tài)寄存器”的狀態(tài)位。
8. 屏蔽中斷狀態(tài)寄存器MIS
位
名稱
描述
復位值
訪問屬性
11:0
MASK
0:表示沒有產生中斷
1:表示產生了中斷
0x000
只讀
31:12
–
保留
–
–
屏蔽中斷狀態(tài)寄存器,是一個只讀寄存器。寄存器當中的bit0到bit11,每一個bit與引腳順序對應。讀取對應的位,可以知道引腳上有沒有產生符合條件的中斷。
需要注意的是,這里的狀態(tài)位,受“中斷屏蔽寄存器”設置位的影響。例如,當某引腳設置為下降沿產生中斷,如果某引腳上產生了下降沿,而且在“中斷屏蔽寄存器”中的引腳對應位設置為1,這個寄存器中的對應位才會置1。也就是說,即使引腳上產生了符合條件的中斷,如果“中斷屏蔽寄存器”中的引腳對應位設置為0,這個狀態(tài)寄存器中的對應位是不會置1的。
9.中斷清除寄存器IC
位
名稱
描述
復位值
訪問屬性
11:0
CLR
0:不起作用
1:清除中斷狀態(tài)位
0x000
只寫
31:12
–
保留
–
–
中斷清除寄存器是一個只寫寄存器,用來清除對應引腳中斷狀態(tài)位。GPIO有兩個中斷狀態(tài)寄存器,它們分別是“屏蔽中斷狀態(tài)寄存器”和“原始中斷狀態(tài)寄存器”。給“中斷清除寄存器”對應的位寫1,將會清除這兩個中斷狀態(tài)寄存器中的對應位。