《通用輸入輸出端口-芯片資料》由會(huì)員分享,可在線閱讀,更多相關(guān)《通用輸入輸出端口-芯片資料(29頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,3.1,通用輸入輸出端口,(,G,eneral,P,urpose,I,nput&,O,utput,),本節(jié)內(nèi)容,GPIO,概述,MSP430,的,GPIO,特點(diǎn),MSP430 GPIO,寄存器,GPIO,官方庫(kù)函數(shù),GPIO,應(yīng)用示例,GPIO,基本都是用于芯片與片外器件或設(shè)備的交互。,檢測(cè)數(shù)字輸入,如鍵盤或開關(guān)信號(hào);,驅(qū)動(dòng),LED,,蜂鳴器
2、或,LCD,等其他指示器;,控制片外器件,較高級(jí)的使用可以用它們(通過(guò)程序)模擬很多器件的時(shí)序達(dá)到控制相應(yīng)器件的目的,比如模擬,SPI,和模擬總線等。,GPIO,概述(,1/4,),GPIO,GPIO(,General Purpose I/O,),,通用輸入輸出端口,。,應(yīng)用,特性,GPIO,是,MCU,與外界交互的重要途徑,它具有如下的特性:,可以獨(dú)立控制每個(gè),GPIO,口的方向(輸入,/,輸出模式);,可以獨(dú)立設(shè)置每個(gè),GPIO,的輸出狀態(tài)(高,/,低電平);,所有,GPIO,口在復(fù)位后都有個(gè)默認(rèn)方向(或輸入或輸出)。,GPIO,概述(,2/4,),寄存器概述,GPIO,口都是按組規(guī)劃,有
3、的芯片是,8,個(gè),GPIO,口一組,有的是,16,個(gè)或,32,個(gè)為一組。一般每個(gè),GPIO,口都需要做兩個(gè)寄存器位:一是選擇口線方向(輸入輸出)二是需要一個(gè)數(shù)據(jù)位(用于設(shè)置輸出數(shù)據(jù)和讀取輸入數(shù)據(jù))。所以一組,GPIO,口至少會(huì)有兩個(gè)寄存器,GPIOxDIR,和,GPIOxDATA,。,GPIOxDIR:,控制各個(gè),GPIO,口的方向;,GPIOxDATA:,用于各個(gè),GPIO,口的輸入輸出數(shù)據(jù)。,GPIO,概述(,3/4,),寄存器工作圖,GPIOxDATA,寄存器,輸入鎖存,輸出鎖存,GPIOxDIR,寄存器,三態(tài)門,輸入緩沖,讀寫,I/O PIN,選擇輸出,選擇輸入,禁止,GPIO,概述(
4、,4/4,),端口類型豐富,有端口,P1,、,P2,、,P3,、,P4,、,P5,、,P6,、,P7,、,P8,、,P9,、,P10,、,P11,、,S,和,COM,。產(chǎn)品因型號(hào)不同可包含上述所有或部分端口。如下表所示:,MSP430,的,GPIO,特點(diǎn)(,1/4,),具有中斷能力的端口:,P1,和,P2,。,端口,P1,和,P2,具有輸入輸出、中斷和外部模塊功能。這些 功能可以通過(guò)它們各自,9,個(gè)控制寄存器的設(shè)置來(lái)實(shí)現(xiàn)。,不具有中斷能力的端口:,P3,和其他端口,P3,和其他端口沒(méi)有中斷能力,其余功能同,P1,和,P2,,,可以實(shí)現(xiàn)輸入輸出功能和外圍模塊功能。,端口,COM,和,S,這些端口
5、實(shí)現(xiàn)與液晶片的直接接口。,COM,端口為液晶片的公共端,,S,口為液晶片的段碼端。詳細(xì)使用方式,請(qǐng)參見本書第四章液晶驅(qū)動(dòng)模塊部分。,MSP430,的,GPIO,特點(diǎn)(,2/4,),端口引腳還可以獨(dú)立的配置成特殊功能,例如,:,USART,通用串行同步,/,異步通信模塊;,模擬信號(hào)比較器;,模擬,數(shù)字轉(zhuǎn)換器;,其他功能,(,請(qǐng)參見具體芯片的數(shù)據(jù)手冊(cè),),。,MSP430,各端口和功能,如下表所示:,功能豐富,MSP430,的,GPIO,特點(diǎn)(,3/4,),MSP430,各種端口有大量的控制寄存器供用戶操作。最大限度提供了輸入,/,輸出的靈活性。,每個(gè),I/O,口都可以獨(dú)立編程。,輸入或輸出可任意
6、組合。,P1,和,P2,所有,I/O,口都具有邊沿可選的輸入中斷功能。,可以按字節(jié)輸入輸出,也可按位進(jìn)行操作。,可設(shè)置,I/O,口的上拉或下拉功能。,可配置,I/O,驅(qū)動(dòng)能力(高驅(qū)動(dòng)強(qiáng)度或低驅(qū)動(dòng)強(qiáng)度)。,寄存器豐富,MSP430,的,GPIO,特點(diǎn)(,4/4,),PxDIR,輸入輸出方向寄存器,相互獨(dú)立的,8,位分別定義了,8,個(gè)引腳的輸入,/,輸出方向。,使用輸入和輸出功能時(shí),應(yīng)該先定義端口的方向。,PxDIR,配置:,Bit=1:,將端口引腳設(shè)置為輸出模式;,Bit=0:,將端口引腳設(shè)置為輸入模式。,例,設(shè)置,P1,端口的,P1.0,引腳為輸出方向,其余引腳(,P1.1P1.7,)設(shè)置為輸
7、入方向。,P1DIR=0 x01;/,設(shè)置,P1,端口,P1.0,引腳為輸出方向,GPIO,寄存器(,1/9,),該寄存器是只讀寄存器,即用戶不能對(duì)它寫入。,這個(gè)寄存器是只讀的,其中的每一位都反映了其對(duì)應(yīng)的,I/O,引腳的輸入信號(hào),(,引腳配置為通用,I/O),。,PxIN,配置,:,Bit=1:,輸入為高電平,;,Bit=0:,輸入為低電平,;,PxIN,輸入寄存器,GPIO,寄存器(,2/9,),輸出寄存器是可讀可寫的。這個(gè)寄存器的每個(gè)位都反映了寫入相應(yīng)輸出引腳的值。,將需要的值寫入該寄存器,控制輸出引腳的電平狀態(tài)。,PxOUT,配置,:,Bit=1:,輸,出,為高電平,;,Bit=0:,
8、輸出為低電平,;,PxOUT 輸出寄存器,GPIO,寄存器(,3/9,),2024/10/24,14,PxREN 上拉或下拉電阻使能寄存器,Bit=1:,引腳選擇上拉,;,上拉電阻簡(jiǎn)單來(lái)說(shuō)就是把電平拉高,通常用4.710K的電阻接到Vcc電源,。,PxREN,寄存器中的每一位可使能或禁用相應(yīng),I/O,引腳的上拉,/,下拉電阻。,PxREN,配置,:,Bit=1:,使能上拉,/,下拉電阻,;,Bit=0:,禁用上拉,/,下拉電阻。,當(dāng)使能引腳上拉或下拉功能時(shí),通過(guò) 設(shè)置,PxOUT,相應(yīng)位來(lái)選擇。,V,CC,引腳,Px.x,R,R,引腳上拉,GPIO,寄存器(,4/9,),2024/10/24,
9、15,GPIO,寄存器(,4/9,),PxREN 上拉或下拉電阻使能寄存器,Bit=1:,引腳選擇上拉,上拉電阻簡(jiǎn)單來(lái)說(shuō)就是把電平拉高,通常用4.710K的電阻接到Vcc電源,。,Bit=0:,引腳選擇下拉,;,下拉電阻則是把電平拉低,電阻接到GND地線上,。,PxREN,寄存器中的每一位可使能或禁用相應(yīng),I/O,引腳的上拉,/,下拉電阻。,PxREN,配置,:,Bit=1:,使能上拉,/,下拉電阻,;,Bit=0:,禁用上拉,/,下拉電阻。,當(dāng)使能引腳上拉或下拉功能時(shí),通過(guò) 設(shè)置,PxOUT,相應(yīng)位來(lái)選擇。,V,CC,引腳,Px.x,R,R,引腳下拉,I/O,端口還具有其他片內(nèi)外設(shè)功能,為減
10、少引腳,將這些外設(shè)功能與,I/O,端口引腳復(fù)用來(lái)實(shí)現(xiàn)。,PxSEL,來(lái)選擇引腳的,I,/,O,端口功能與外圍模塊功能。,PxSEL,的配置,:,Bit=0:,選擇引腳為,I/O,端口,;,Bit=1:,選擇引腳為外設(shè)功能。,PxSEL 功能選擇寄存器,GPIO,寄存器(,5/9,),PxDS 輸出驅(qū)動(dòng)強(qiáng)度寄存器,PxDS,寄存器的每個(gè)位,設(shè)置引腳的輸出強(qiáng)度為高驅(qū)動(dòng)強(qiáng)度或低驅(qū)動(dòng)強(qiáng)度。,默認(rèn)值為低驅(qū)動(dòng)強(qiáng)度。,PxDS,的配置,:,Bit=0:,低驅(qū)動(dòng)強(qiáng)度;,Bit=1:,高驅(qū)動(dòng)強(qiáng)度。,GPIO,寄存器(,6/9,),該寄存器的,8,位與端口的,8,個(gè)引腳一一對(duì)應(yīng),其中某一位置位表示允許對(duì)應(yīng)的引腳在
11、電平變化(上升沿或下降沿)時(shí)產(chǎn)生中斷,否則,表示禁止該位的中斷。,每個(gè),PxIE,位使能的中斷請(qǐng)求都與相應(yīng)的,PxIFG,中斷標(biāo)志相關(guān)聯(lián),可通過(guò)寫,PxOUT,和,PxDIR,來(lái)設(shè)置,PxIFG,。,PxIE,的配置,:,Bit=1:,允許中斷;,Bit=0:,禁止中斷。,PxIE 中斷使能寄存器,(,僅中斷端口,P1,和,P2,),GPIO,寄存器(,7/9,),PxIES,中斷觸發(fā)沿選擇寄存器,(,僅中斷端口,P1,和,P2,),如果允許,Px,口的某個(gè)引腳中斷,(,即,PxIE,和,GIE,已設(shè)置,),,還需定義該引腳的中斷觸發(fā)方式。,該寄存器可讀可寫,寄存器的8位分別對(duì)應(yīng)Px口8個(gè)引腳
12、,PxIES,的配置,:,Bit=1:,下降沿使相應(yīng)中斷標(biāo)志置位;,Bit=0:,上升沿使相應(yīng)中斷標(biāo)志置位。,GPIO,寄存器(,8/9,),該寄存器用來(lái)表示對(duì)應(yīng)引腳是否產(chǎn)生了由,PxIES,設(shè)定的電平跳變。,如果在,GIE,置位,引腳對(duì)應(yīng)的中斷使能寄存器,PxIE,位置位,則會(huì)向,CPU,請(qǐng)求中斷處理。,中斷標(biāo)志,PxIFG.0,PxIFG.7,共用一個(gè)中斷向量,,PxIFG.0,PxIFG.7,不會(huì)自動(dòng)復(fù)位。必須用軟件來(lái)判定 是對(duì)哪一個(gè)事件服務(wù),并將相應(yīng)的標(biāo)志復(fù)位。,PxIFG,的配置,:,Bit=0:,沒(méi)有中斷請(qǐng)求;,Bit=1:,有中斷請(qǐng)求。,PxIFG 中斷標(biāo)志寄存器,(,僅中斷端口
13、,P1,和,P2,),GPIO,寄存器(,9/9,),GPIO_setAsOutputPin()/,設(shè)置為輸出引腳,GPIO_setAsInputPin()/,設(shè)置為輸入引腳,GPIO_setAsInputPinWithPullDownresistor(),/設(shè)置為輸入上拉,GPIO API,被分成三組函數(shù):,GPIO,的引腳配置函數(shù),處理中斷的函數(shù),以及引腳狀態(tài)的函數(shù)。,GPIO,的引腳配置函數(shù),GPIO,官方庫(kù)函數(shù)(,1/4,),GPIO_setAsInputPinWithPullUpresistor(),/,設(shè)置為輸入下拉,GPIO_setDriveStrength()/,設(shè)置引腳驅(qū)動(dòng)強(qiáng)
14、度,GPIO_setAsPeripheralModuleFunctionOutputPin(),/,設(shè)置為外設(shè)輸出引腳,GPIO_setAsPeripheralModuleFunctionInputPin(),/,設(shè)置為外設(shè)輸入引腳,GPIO,的引腳配置函數(shù)(續(xù)),GPIO,官方庫(kù)函數(shù)(,2/4,),GPIO,官方庫(kù)函數(shù)(,3/4,),GPIO_enableInterrupt()/,使能中斷,GPIO_disbleInterrupt()/,禁止中斷,GPIO_clearInterruptFlag()/,清除中斷標(biāo)志位,GPIO_getInterruptStatus()/,獲取中斷狀態(tài),GPIO
15、_interruptEdgeSelect()/,選擇中斷沿,GPIO,中斷處理函數(shù),GPIO,官方庫(kù)函數(shù)(,4/4,),GPIO_setOutputHighOnPin()/,引腳輸出為高,GPIO_setOutputLowOnPin()/,引腳輸出為低,GPIO_toggleOutputOnPin()/,翻轉(zhuǎn)引腳,GPIO_getInputPinValue()/,獲取引腳輸入值,GPIO,引腳狀態(tài)的函數(shù),示例,1,軟件編程示例(偽代碼),用,P1.0,口控制發(fā)光二極管,P1DIR=0 x01;,/,設(shè)置,P1,端口,P1.0,引腳為輸出方向,P1,OUT|=0X01;/,輸出,1,,燈亮,P1
16、.0,LED,P1,OUT /,輸出,0,,燈滅,GPIO,應(yīng)用示例(,1/4,),GPIO,應(yīng)用示例(,2/4,),示例,1,也可以能過(guò)調(diào)用庫(kù)函數(shù)來(lái)實(shí)現(xiàn)(偽代碼),/,設(shè)置,P1.0,引腳為輸出引腳,GPIO_setAsOutputPin(,MSP430_BASEADDRESS_PORT1_R,GPIO_PORT_P1,GPIO_PIN0);,/,讓,P1.0,輸出高電平,GPIO_setOutputHighOnPin(,MSP430_BASEADDRESS_PORT1_R_,GPIO_PORT_P1,GPIO_PIN0);,/,讓,P1.0,輸出低電平,GPIO_setOutputLowOnPin(,MSP430_BASEADDRESS_PORT1_R,GPIO_PORT_P1,GPIO_PIN0);,P1.0,LED,2024/10/24,27,示例,2,利用按鍵改變,LED,的亮滅,按鍵對(duì)應(yīng)的引腳配置為中斷方式。,#include,void main(void),/,關(guān)閉看門狗,WDTCTL=WDTPW|WDTHOLD;,P4DIR|=0 x08;/,選擇,P4.3,為輸出,P