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