第2講MSP430單片機的GPIO與中斷系統(tǒng)_第1頁
第2講MSP430單片機的GPIO與中斷系統(tǒng)_第2頁
第2講MSP430單片機的GPIO與中斷系統(tǒng)_第3頁
第2講MSP430單片機的GPIO與中斷系統(tǒng)_第4頁
第2講MSP430單片機的GPIO與中斷系統(tǒng)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

3.1通用IO端口3.1.1MSP430端口概述通用I/O端口是MSP430單片機最重要也是最常用的外設模塊。通用I/O端口不僅可以直接用于輸入/輸出,而且可以為MSP430單片機應用系統(tǒng)提供必要的邏輯控制信號。MSP430F5xx/6xx系列單片機最多可以提供12個通用I/O端口(P1~P11和PJ),大部分端口有8個引腳,少數(shù)端口引腳數(shù)少于8個。每個I/O引腳都可以被獨立地設置為輸入或者輸出引腳,并且每個I/O引腳都可以被獨立地讀取或者寫入,所有的端口寄存器都可以被獨立地置位或者清零。P1~P4引腳具有中斷能力。從P1和P2端口的各個I/O引腳引入的中斷可以獨立地被使能,并且被設置為上升沿或者下降沿觸發(fā)中斷。所有P1端口的I/O引腳的中斷都來源于同一個中斷向量P1IV。同理,P2端口的中斷源都來源于另一個中斷向量P2IV??梢詫γ總€獨立的端口進行字節(jié)訪問,或者將兩個結(jié)合起來進行字訪問。端口組合P1和P2、P3和P4、P5和P6、P7和P8可結(jié)合起來稱為PA、PB、PC和PD端口。當進行字操作寫入PA口時,所有的16位數(shù)據(jù)都被寫入這個端口;利用字節(jié)操作寫入PA端口低字節(jié)時,高字節(jié)保持不變;利用字節(jié)指令寫入PA端口的高字節(jié)時,低字節(jié)保持不變。其他端口也是一樣。當寫入的數(shù)據(jù)長度小于端口的最大長度時,那些沒有用到的位保持不變。應用這個規(guī)則來訪問所有端口,除了中斷向量寄存器P1IV和P2IV,它們只能進行字節(jié)操作。13.1通用IO端口3.1.1MSP430端口概述GPIO基本都是用于芯片與片外器件或設備的交互。檢測數(shù)字輸入,如鍵盤或開關(guān)信號;驅(qū)動LED,蜂鳴器或LCD等其他指示器;控制片外器件,較高級的使用可以用它們(通過程序)模擬很多器件的時序達到控制相應器件的目的,比如模擬SPI和模擬總線等。GPIO(GeneralPurposeI/O),通用輸入輸出端口。2MSP430的GPIO特點(1/4)2023/2/43

有端口P1、P2、P3、P4、P5、P6、P7、P8、P9、P10、P11、S和COM。產(chǎn)品因型號不同可包含上述所有或部分端口。如下表所示:MSP430的GPIO特點(2/4)2023/2/44具有中斷能力的端口:P1~P4。端口P1~P4具有輸入輸出、中斷和外部模塊功能。這些功能可以通過它們各自9個控制寄存器的設置來實現(xiàn)。所有P1端口的I/O引腳的中斷都來源于同一個中斷向量P1IV。同理,P2端口的中斷源都來源于另一個中斷向量P2IV。不具有中斷能力的端口:其他端口

P5和其他端口沒有中斷能力,其余功能同P1~P4,可以實現(xiàn)輸入/輸出功能和外圍模塊功能。端口COM和S

這些端口實現(xiàn)與液晶片的直接接口。COM端口為液晶片的公共端,S口為液晶片的段碼端。MSP430的GPIO特點(3/4)功能豐富2023/2/45MSP430各端口和功能,如下表所示:端口引腳還可以獨立的配置成特殊功能,例如:USART–通用串行同步/異步通信模塊;模擬信號比較器;模擬—數(shù)字轉(zhuǎn)換器;其他功能(請參見具體芯片的數(shù)據(jù)手冊)。MSP430的GPIO特點(4/4)寄存器豐富2023/2/46MSP430各種端口有大量的控制寄存器供用戶操作。最大限度提供了輸入/輸出的靈活性。每個I/O口都可以獨立編程。輸入或輸出可任意組合。P1和P2所有I/O口都具有邊沿可選的輸入中斷功能??梢园醋止?jié)輸入輸出,也可按位進行操作??稍O置I/O口的上拉或下拉功能??膳渲肐/O驅(qū)動能力(高驅(qū)動強度或低驅(qū)動強度)。GPIO寄存器(1/9)2023/2/47PxDIR輸入/輸出方向寄存器相互獨立的8位分別定義了8個引腳的輸入/輸出方向。使用輸入和輸出功能時,應該先定義端口的方向。PxDIR配置:

Bit=1:將端口引腳設置為輸出模式;

Bit=0:將端口引腳設置為輸入模式。例,設置P1端口的P1.0引腳為輸出方向,其余引腳(P1.1~P1.7)設置為輸入方向。 P1DIR=0x01;//設置P1端口P1.0引腳為輸出方向GPIO寄存器(2/9)2023/2/48PxIN輸入寄存器該寄存器是只讀寄存器,即用戶不能對它寫入。這個寄存器是只讀的,其中的每一位都反映了其對應的I/O引腳的輸入信號(引腳配置為通用I/O)。PxIN配置: Bit=1:輸入為高電平; Bit=0:輸入為低電平;GPIO寄存器(3/9)2023/2/49PxOUT輸出寄存器輸出寄存器是可讀可寫的。這個寄存器的每個位都反映了寫入相應輸出引腳的值。將需要的值寫入該寄存器,控制輸出引腳的電平狀態(tài)。PxOUT配置: Bit=1:輸出為高電平; Bit=0:輸出為低電平;PxREN寄存器中的每一位可使能或禁用相應I/O引腳的上拉/下拉電阻。PxREN配置: Bit=1:使能上拉/下拉電阻; Bit=0:禁用上拉/下拉電阻。當使能引腳上拉或下拉功能時,通過設置PxOUT相應位來選擇。GPIO寄存器(4/9)2023/2/410PxREN上拉或下拉電阻使能寄存器Bit=1:引腳選擇上拉;上拉電阻簡單來說就是把電平拉高,通常用4.7-10K的電阻接到Vcc電源。VCC引腳Px.xRR引腳上拉PxREN寄存器中的每一位可使能或禁用相應I/O引腳的上拉/下拉電阻。PxREN配置: Bit=1:使能上拉/下拉電阻; Bit=0:禁用上拉/下拉電阻。當使能引腳上拉或下拉功能時,通過設置PxOUT相應位來選擇。GPIO寄存器(4/9)2023/2/411PxREN上拉或下拉電阻使能寄存器Bit=1:引腳選擇上拉上拉電阻簡單來說就是把電平拉高,通常用4.7-10K的電阻接到Vcc電源。Bit=0:引腳選擇下拉;下拉電阻則是把電平拉低,電阻接到GND地線上。VCC引腳Px.xRR引腳下拉GPIO寄存器(5/9)2023/2/412PxSEL功能選擇寄存器I/O端口還具有其他片內(nèi)外設功能,為減少引腳,將這些外設功能與I/O端口引腳復用來實現(xiàn)。PxSEL來選擇引腳的I/O端口功能與外圍模塊功能。PxSEL的配置: Bit=0:選擇引腳為I/O端口; Bit=1:選擇引腳為外設功能。GPIO寄存器(6/9)2023/2/413PxDS輸出驅(qū)動強度寄存器PxDS寄存器的每個位,設置引腳的輸出強度為高驅(qū)動強度或低驅(qū)動強度。默認值為低驅(qū)動強度。PxDS的配置: Bit=0:低驅(qū)動強度; Bit=1:高驅(qū)動強度。GPIO寄存器(7/9)2023/2/414PxIE中斷使能寄存器(僅中斷端口P1和P2)該寄存器的8位與端口的8個引腳一一對應,其中某一位置位表示允許對應的引腳在電平變化(上升沿或下降沿)時產(chǎn)生中斷,否則,表示禁止該位的中斷。每個PxIE位使能的中斷請求都與相應的PxIFG中斷標志相關(guān)聯(lián),可通過寫PxOUT和PxDIR來設置PxIFG。PxIE的配置: Bit=1:允許中斷; Bit=0:禁止中斷。GPIO寄存器(8/9)2023/2/415PxIES中斷觸發(fā)沿選擇寄存器(僅中斷端口P1和P2)如果允許Px口的某個引腳中斷(即PxIE和GIE已設置),還需定義該引腳的中斷觸發(fā)方式。該寄存器可讀可寫,寄存器的8位分別對應Px口8個引腳PxIES的配置: Bit=1:下降沿使相應中斷標志置位; Bit=0:上升沿使相應中斷標志置位。GPIO寄存器(9/9)2023/2/416PxIFG中斷標志寄存器(僅中斷端口P1和P2)該寄存器用來表示對應引腳是否產(chǎn)生了由PxIES設定的電平跳變。如果在GIE置位,引腳對應的中斷使能寄存器PxIE位置位,則會向CPU請求中斷處理。中斷標志PxIFG.0~PxIFG.7共用一個中斷向量,PxIFG.0~PxIFG.7不會自動復位。必須用軟件來判定是對哪一個事件服務,并將相應的標志復位。PxIFG的配置: Bit=0:沒有中斷請求; Bit=1:有中斷請求。4.1中斷的基本概念1.中斷定義

中斷是暫停CPU正在運行的程序,轉(zhuǎn)去執(zhí)行相應的中斷服務程序,完畢后返回被中斷的程序繼續(xù)運行的現(xiàn)象和技術(shù)。2.中斷源

把引起中斷的原因或者能夠發(fā)出中斷請求的信號源統(tǒng)稱為中斷源。中斷首先需要由中斷源發(fā)出中斷請求,并征得系統(tǒng)允許后才會發(fā)生。在轉(zhuǎn)去執(zhí)行中斷服務程序前,程序需保護中斷現(xiàn)場;在執(zhí)行完中斷服務程序后,應恢復中斷現(xiàn)場。中斷源一般分成兩類:外部硬件中斷源和內(nèi)部軟件中斷源。外部硬件中斷源包括可屏蔽中斷和不可屏蔽中斷。內(nèi)部軟件中斷源產(chǎn)生于單片機內(nèi)部,主要有以下3種:①由CPU運行結(jié)果產(chǎn)生;②執(zhí)行中斷指令INT3;③使用DEBUG中單步或斷點設置引起。173.中斷向量表4.1中斷的基本概念

中斷向量是指中斷服務程序的入口地址,每個中斷向量被分配給4個連續(xù)的字節(jié)單元,兩個高字節(jié)單元存放入口的段地址CS,兩個低字節(jié)單元存放入口的偏移量IP。為了讓CPU方便地查找到對應的中斷向量,就需要在內(nèi)存中建立一張查詢表,即中斷向量表。4.中斷優(yōu)先級

凡事都有輕重緩急之分,不同的中斷請求表示不同的中斷事件,因此,CPU對不同中斷請求相應地也有輕重緩急之分。在單片機中,給每個中斷源指定一個優(yōu)先級,稱為中斷優(yōu)先級。5.斷點和中斷現(xiàn)場

斷點是指CPU執(zhí)行現(xiàn)行程序被中斷時的下一條指令的地址,又稱斷點地址。

中斷現(xiàn)場是指CPU在轉(zhuǎn)去執(zhí)行中斷服務程序前的運行狀態(tài),包括CPU狀態(tài)寄存器和斷點地址等。4.2MSP430單片機中斷源MSP430單片機的中斷源結(jié)構(gòu)如圖4.2.1所示。MSP430單片機的中斷優(yōu)先級是固定的,由硬件確定,用戶不能更改。當多個中斷同時發(fā)生中斷請求時,CPU按照中斷優(yōu)先級的高低順序依次響應。MSP430單片機包含3類中斷源:系統(tǒng)復位中斷源、不可屏蔽中斷源和可屏蔽中斷源。圖4.2.1MSP430單片機的中斷源結(jié)構(gòu)MSP430單片機的中斷向量表被安排在0FFFFH~0FF80H空間,具有最大64個中斷源。表4.2.1為MSP430單片機的中斷向量表。4.2MSP430單片機中斷源表4.2.1MSP430中斷向量表4.3中斷響應過程

中斷響應過程為從CPU接收一個中斷請求開始至執(zhí)行第一條中斷服務程序指令結(jié)束,共需要6個時鐘周期。中斷響應過程如下:①執(zhí)行完當前正在執(zhí)行的指令;②將程序計數(shù)器(PC)壓入堆棧,程序計數(shù)器指向下一條指令;③將狀態(tài)寄存器(SR)壓入堆棧,狀態(tài)寄存器保存了當前程序執(zhí)行的狀態(tài);④如果有多個中斷源請求中斷,選擇最高優(yōu)先級,并掛起當前的程序;⑤清除中斷標志位,如果有多個中斷請求源,則予以保留等待下一步處理;⑥清除狀態(tài)寄存器SR,保留SCG0,因而CPU可從任何低功耗模式下喚醒;⑦將中斷服務程序入口地址加載給程序計數(shù)器(PC),轉(zhuǎn)向執(zhí)行中斷服務子程序。中斷響應過程示例圖如圖4.3.1所示。圖4.3.1中斷響應過程示例圖4.4中斷返回過程

通過執(zhí)行中斷服務程序終止指令(RETI)開始中斷的返回,中斷返回過程需要5個時鐘周期,主要包含以下過程:①從堆棧中彈出之前保存的狀態(tài)寄存器給SR;②從堆棧中彈出之前保存的程序計數(shù)器給PC;③繼續(xù)執(zhí)行中斷時的下一條指令。中斷返回過程示意圖如圖4.4.1所示。圖4.4.1中斷返回過程示意圖4.5中斷嵌套

由中斷響應過程可知,當進入中斷入口后,MSP430單片機會自動清除總中斷允許標志位GIE,也就是說,MSP430單片機的中斷默認是不能發(fā)生嵌套的,即使高級中斷也不能打斷低級中斷的執(zhí)行,這就避免了當前中斷未完成時進入另一個中斷的可能。如圖4.5.1(a)所示,如果在執(zhí)行中斷服務程序A時,發(fā)生了中斷請求B,B的中斷標志位置1,但不會立即響應B的中斷,需自動等待A執(zhí)行完成返回后(GIE自動恢復),才進入B的中斷服務程序。如圖4.5.1(b)所示,如果在執(zhí)行中斷服務程序A時,有多個中斷發(fā)生,會在A中斷執(zhí)行完畢后,依照中斷優(yōu)先級由高至低的順序依次執(zhí)行各個待執(zhí)行的中斷服務程序。圖4.5.1多種中斷發(fā)生情況示意圖4.5中斷嵌套

由以上兩種情況可知,先發(fā)生的中斷將會導致后發(fā)生的中斷處理延遲。為了避免這種情況,要求所有的中斷都盡快執(zhí)行完畢,則需允許中斷的嵌套,如圖4.5.1(c)所示。這種情況需要在所有的中斷入口處都加一句開中斷的語句:_EINT(),恢復總的中斷允許。中斷嵌套被允許后,所有中斷能夠立即被執(zhí)行,因此,能夠保證事件的嚴格實時性要求。以ADC中斷為例:#pragmavector=ADC12_VECTOR__interruptvoidADC12_ISR(void){_EINT();……}中斷函數(shù)的寫法:

#pragmavector=PORT1_VECTOR__interruptvoid

port_1(void)語法:interruptvoid函數(shù)名()參數(shù):中斷函數(shù)沒有參數(shù)。中斷函數(shù)需要指定中斷向量。返回:中斷返回一般是void,沒有返回值。4.5中斷函數(shù)的寫法【例4.1.1】在MSP430單片機系統(tǒng)中,P1.5、P1.6、P1.7發(fā)生中斷后執(zhí)行不同的代碼。#pragmavector=PORT1_VECTOR //P1口中斷源__interruptvoidPort_1(void)//聲明一個中斷服務程序,名為Port_1(){ if(P1IFG&BIT5) //判斷P1中斷標志第5位

{

…… //在這里寫P1.5中斷服務程序

} if(P1IFG&BIT5) //判斷P1中斷標志第6位

{

…… //在這里寫P1.6中斷服務程序

} if(P1IFG&BIT5) //判斷P1中斷標志第7位

{

…… //在這里寫P1.7中斷服務程序

} P1IFG=0; //清除P1所有中斷標志位}4.2

按鍵查詢【例4.1.2】利用軟件循環(huán)查詢P4.2引腳的輸入狀態(tài),若P4.2輸入為高電平,則使P4.4輸出高電平;若P4.2輸入為低電平,則使P4.4輸出低電平。#include<msp430f6638.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗

P4DIR|=BIT4;//設P4.4為輸出方向

P4DIR&=~BIT2;

//設P4.2為輸入方向

while(1)//循環(huán)查詢P4.2引腳輸入狀態(tài)

{if((P4IN&BIT2)==0)P4OUT|=BIT4;//如果P4.2輸入為高,則使P4.4輸出高

elseP4OUT&=~BIT4;//否則,使P4.4輸出低電平

}}4.6按鍵中斷【例4.1.3】利用按鍵外部中斷方式,實現(xiàn)反轉(zhuǎn)P4.4引腳輸出狀態(tài)。P4.2選擇GPIO功能,內(nèi)部上拉電阻使能,且使能中斷。當P4.2引腳上產(chǎn)生下降沿時,觸發(fā)P4端口外部中斷,在中斷服務程序中,反轉(zhuǎn)P4.4端口輸出狀態(tài)。#include<msp430f6638.h>voidmain(void){WDTCTL=WDTPW+WDTHOLD;//關(guān)閉看門狗

P4DIR|=BIT4;//設置P4.4引腳為輸出P4DIR&=~BIT2;//設P4.2為輸入方向

P4REN|=BIT2;P4OUT|=BIT2;//以上兩句組合功能為使能P4.2引腳上拉電阻

P4IES|=BIT2;//P4.2中斷下降沿觸發(fā)

P4IFG&=~BIT2;//清除P4.2中斷標志位

P4IE|=BIT2;//P4.2中斷使能

__bis_SR_register(LPM4_bits+GIE);//進入LPM4,并使能全局中斷}#pragmavector=PORT4_VECTOR__interruptvoidPort_4(void){P4OUT^=BIT4;//反轉(zhuǎn)P4.4端口輸出狀態(tài)

P4IFG&=~BIT2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論