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