cortex-m0 lpc1114怎么切換引腳功能
1.引腳都有哪些功能該怎么看?
看具體引腳有什么功能,看上面的引腳圖即可,這個(gè)圖可以在LPC1114用戶手冊的第9章“Pin Configuration”找到。
2.默認(rèn)的引腳功能是什么?
大部分的引腳默認(rèn)功能都是GPIO,個(gè)別除外,例如P0.0引腳,默認(rèn)是RESET。具體某個(gè)引腳的默認(rèn)功能是什么,可以打開LPC1114用戶手冊第7章“I/O Configuration”查看引腳的寄存器。
例如,我們要看P0.2引腳的默認(rèn)功能,首先打開LPC1114用戶手冊,然后找到第7章,打開7.4節(jié)前面的“+”號,把所有的引腳寄存器都展開,最后找到P0.2引腳的寄存器,就可以了。
該寄存器的前3位,也就是bit0~bit2,用來控制引腳的功能??瓷蠄D右上角的地方,Reset value就是默認(rèn)的功能,000即選擇P0.2。
3.如何選擇引腳的其它復(fù)用功能?
從上面那個(gè)圖中,可以看出,我們只要給引腳寄存器中的前3位寫入規(guī)定的值,就可以變換引腳的具體功能了。例如,我們要把引腳PIO0_2選擇為CT16B0_CAP0功能,就需要給PIO0_2寄存器的前3位寫入0x2。
IOCON->PIO0_2&=~0x07;//P0.2寄存器前3位清零IOCON->PIO0_2|=0x02;//給P0.2寄存器前3位寫0x2
通過上面兩條語句,來實(shí)現(xiàn)引腳功能的選擇。這種寫法已經(jīng)成了固定的格式,以后不論修改哪個(gè)引腳的功能,都以這種形式寫。
有人會說,我直接給P0.2寄存器的前3位寫0x2可以嗎?例如:
IOCON->PIO0_2 = 0X2;
你這樣直接寫,當(dāng)然可以,但是需要注意的地方很多,一不小心單片機(jī)就亂了,為什么呢?因?yàn)閘pc1114作為一個(gè)32位的單片機(jī),它的引腳寄存器也是32位的,其中的每一位,都代表著不同的控制位,這些可以查看寄存器得到,例如P0.2引腳的寄存器,它的完整寄存器定義如下:
你看它的bit4:3和bit9:6,這幾位中,有些位默認(rèn)就是1,如果你要直接賦值,需要讓這些位保持原來的狀態(tài)才可以。如果直接寫0x2,那么這些原來是1的位,就成0了。所以我們在給寄存器賦值的時(shí)候,一般用“或”“與”的邏輯,改變我們想改變的位,不影響其它位的狀態(tài)。