chapter-6-輸入輸出與中斷技術(shù)_第1頁
chapter-6-輸入輸出與中斷技術(shù)_第2頁
chapter-6-輸入輸出與中斷技術(shù)_第3頁
chapter-6-輸入輸出與中斷技術(shù)_第4頁
chapter-6-輸入輸出與中斷技術(shù)_第5頁
已閱讀5頁,還剩90頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理與嵌入式系統(tǒng)基礎(chǔ)西安郵電學(xué)院----計算機(jī)系QQ:646938309Email:zql@5/12/20241西安郵電學(xué)院計算機(jī)學(xué)院第6章

輸入/輸出與中斷技術(shù)

5/12/20242西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/20243西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/20244西安郵電學(xué)院計算機(jī)學(xué)院6.1計算機(jī)接口概述計算機(jī)硬件由控制器、運(yùn)算器、存儲器、輸入設(shè)備和輸出設(shè)備等5部分組成。處理器的強(qiáng)大功能必須通過外部設(shè)備(簡稱外設(shè))才能得以呈現(xiàn)。計算機(jī)外設(shè)在接入到計算機(jī)系統(tǒng)時需要接口電路橋接---用于完成主機(jī)與物理外設(shè)的橋接與控制。在本課程中所研討的“外設(shè)”是指外設(shè)接口,注重于工作原理研討。5/12/20245西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/20246西安郵電學(xué)院計算機(jī)學(xué)院6.2輸入輸出接口電路計算機(jī)中的輸入輸出接口電路用于將物理外設(shè)連接入計算機(jī)系統(tǒng),在計算機(jī)系統(tǒng)中起著物理外設(shè)與計算機(jī)主機(jī)之間橋接、適配作用。5/12/20247西安郵電學(xué)院計算機(jī)學(xué)院6.2.1輸入輸出接口電路的基本功能與端口分類接口----具有物理連接的含義,物理外設(shè)通過接口電路接入到計算機(jī)。接口電路----是實(shí)現(xiàn)接口的主要組成部分,用于將物理外設(shè)橋接到計算機(jī)系統(tǒng)總線。從CPU角度看到的外設(shè)實(shí)質(zhì)上是外設(shè)的接口電路,它是物理外設(shè)的抽象,并不一定是具體的物理外設(shè)裝置,更具有原理代表性。一、基本概念5/12/20248西安郵電學(xué)院計算機(jī)學(xué)院6.2.1輸入輸出接口電路的基本功能與端口分類狀態(tài)信息(輸入)---用于標(biāo)示設(shè)備的狀態(tài)情況。數(shù)據(jù)信息(輸入/輸出)---要傳送的二進(jìn)制目標(biāo)數(shù)據(jù)。控制信息(輸出)---控制外設(shè)的工作方式與具體操作。對應(yīng)于上述的三種信息,外設(shè)接口電路中的端口寄存器也分為了三類:狀態(tài)端口(寄存器)、數(shù)據(jù)端口(寄存器)和控制端口(寄存器)。二、主機(jī)與外設(shè)接口之間主要交互的三類信息5/12/20249西安郵電學(xué)院計算機(jī)學(xué)院6.2.1輸入輸出接口電路的基本功能與端口分類

I/O接口的典型結(jié)構(gòu)示意圖5/12/202410西安郵電學(xué)院計算機(jī)學(xué)院6.2.2I/O端口的編址

一、基本概念計算機(jī)硬件系統(tǒng)中可以含有多個I/O接口,每個I/O接口中又可以含有多個I/O端口(寄存器)。端口寄存器在計算機(jī)系統(tǒng)中象存儲器單元一樣被編址,稱之為‘端口地址’,處理器通過端口地址可對各個端口尋址訪問,實(shí)現(xiàn)對外設(shè)的訪問控制。5/12/202411西安郵電學(xué)院計算機(jī)學(xué)院6.2.2I/O端口的編址

二、計算機(jī)系統(tǒng)中有兩種I/O端口編址方式

統(tǒng)一編址方式---I/O端口與內(nèi)存單元統(tǒng)一編址在一個地址空間。只是分布在不同的地址空間區(qū)域。特點(diǎn),處理器無專用的I/O指令,無專用的I/O訪問控制管腳。獨(dú)立編址方式

---I/O端口與內(nèi)存單元分別編址在I/O地址空間和內(nèi)存地址空間。特點(diǎn),處理器有專用的I/O指令,有專用的I/O訪問控制管腳。5/12/202412西安郵電學(xué)院計算機(jī)學(xué)院6.2.2I/O端口的編址

三、接口與端口接口和端口是兩個不同的概念。接口---側(cè)重于物理連接;端口---側(cè)重于接口的內(nèi)部工作方式。接口由若干個端口加上相應(yīng)的控制電路構(gòu)成。每個端口都對應(yīng)與接口電路中的各個工作寄存器。外設(shè)通過接口連接入計算機(jī)系統(tǒng),計算機(jī)通過端口訪問控制外設(shè)工作。5/12/202413西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/202414西安郵電學(xué)院計算機(jī)學(xué)院6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式外設(shè)的多樣性使外設(shè)的屬性差異極大,需要不同的數(shù)據(jù)傳送控制方式。處理器與外設(shè)之間的數(shù)據(jù)傳送方式主要有:無條件數(shù)據(jù)訪問方式,狀態(tài)查詢方式數(shù)據(jù)訪問方式,中斷方式數(shù)據(jù)訪問方式和直接存儲器訪問(DMA)方式等幾種方式。5/12/202415西安郵電學(xué)院計算機(jī)學(xué)院6.3.1無條件數(shù)據(jù)訪問方式

一、問題描述與解決方法如:狀態(tài)開關(guān)(按鍵)、繼電器、數(shù)碼管、發(fā)光二極管等設(shè)備,計算機(jī)可隨時訪問,而不需顧及其當(dāng)時的狀態(tài)。無條件外設(shè)---輸入設(shè)備總是準(zhǔn)備好向CPU提供數(shù)據(jù),輸出設(shè)備總是準(zhǔn)備好接收CPU送來的數(shù)據(jù)。

CPU對此類外設(shè)進(jìn)行輸入/輸出操作時無需考慮外設(shè)的狀態(tài),直接讀/寫數(shù)據(jù)端口即可。這一類I/O設(shè)備的訪問控制最簡單。5/12/202416西安郵電學(xué)院計算機(jī)學(xué)院6.3.1無條件數(shù)據(jù)訪問方式

二、接口電路的主要功能任何設(shè)備都不能長期占用系統(tǒng)總線;輸入設(shè)備要經(jīng)過三態(tài)緩沖器相連到系統(tǒng)總線;輸出設(shè)備要經(jīng)過數(shù)據(jù)鎖存器相連到系統(tǒng)總線;小思考:處理器的數(shù)據(jù)總線僅傳送操作數(shù),這個說法對嗎?答:不對!處理器運(yùn)行的指令碼也是通過數(shù)據(jù)總線從內(nèi)存加載到CPU!5/12/202417西安郵電學(xué)院計算機(jī)學(xué)院6.3.1無條件數(shù)據(jù)訪問方式

三、接口電路的基本組成原理(輸入三態(tài)隔離)5/12/202418西安郵電學(xué)院計算機(jī)學(xué)院6.3.1無條件數(shù)據(jù)訪問方式

三、接口電路的基本組成原理(輸出數(shù)據(jù)鎖存)5/12/202419西安郵電學(xué)院計算機(jī)學(xué)院6.3.2狀態(tài)查詢數(shù)據(jù)訪問方式

一、問題描述與解決方法有一些外設(shè),處理器在對其進(jìn)行訪問時需要關(guān)心其狀態(tài),只有狀態(tài)許可時方可對外設(shè)進(jìn)行訪問。如:AD轉(zhuǎn)換器、串行通信、打印機(jī)等,這類外設(shè)稱之為---條件訪問外設(shè)。

CPU對此類外設(shè)進(jìn)行輸入/輸出操作時需考慮外設(shè)的狀態(tài),只有外設(shè)處于‘準(zhǔn)備好’狀態(tài)時,方可訪問數(shù)據(jù)端口。5/12/202420西安郵電學(xué)院計算機(jī)學(xué)院6.3.2狀態(tài)查詢數(shù)據(jù)訪問方式

一、問題描述與解決方法狀態(tài)查詢方式的原理:在執(zhí)行數(shù)據(jù)端口訪問指令前,要先查詢該設(shè)備的狀態(tài),當(dāng)設(shè)備處于準(zhǔn)備好狀態(tài)時,CPU才執(zhí)行對設(shè)備數(shù)據(jù)端口的輸入/輸出指令,與外設(shè)交換信息;否則,等待。5/12/202421西安郵電學(xué)院計算機(jī)學(xué)院6.3.2狀態(tài)查詢數(shù)據(jù)訪問方式

二、狀態(tài)查詢式I/O接口電路組成原理5/12/202422西安郵電學(xué)院計算機(jī)學(xué)院6.3.2狀態(tài)查詢數(shù)據(jù)訪問方式

三、狀態(tài)程序查詢方式I/O控制流程分析:外設(shè)速度比較慢,高速的CPU被迫查詢、停等;CPU的運(yùn)算能力被浪費(fèi)。改進(jìn)思路:將CPU查詢、停等改為由外設(shè)主動上報狀態(tài)。5/12/202423西安郵電學(xué)院計算機(jī)學(xué)院6.3.3中斷方式數(shù)據(jù)訪問

一、基本思路

當(dāng)外設(shè)需要與CPU進(jìn)行信息交換時,由外設(shè)主動向CPU發(fā)出數(shù)據(jù)傳送請求信號(中斷申請),CPU響應(yīng)此請求信號后(中斷響應(yīng)),暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行該外設(shè)的數(shù)據(jù)輸入/輸出操作程序(中斷服務(wù)程序----ISR),外設(shè)數(shù)據(jù)端口訪問后,CPU再繼續(xù)執(zhí)行被暫停的程序(中斷返回)。備注:慢速的外設(shè)與高速的CPU并行工作,充分發(fā)揮CPU的處理能力。5/12/202424西安郵電學(xué)院計算機(jī)學(xué)院6.3.3中斷方式數(shù)據(jù)訪問

二、中斷方式I/O接口原理5/12/202425西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/202426西安郵電學(xué)院計算機(jī)學(xué)院6.4ARM中的GPIO6.4.1概述

GPIO(GeneralPurposeInput/Outputports---通用輸入/輸出端口)是ARM系列芯片中的基本資源,用于二值化數(shù)據(jù)(數(shù)字電路的‘0/1’)的輸入和輸出。測取輸入GPIO管腳的‘高/低’電平狀態(tài);在輸出GPIO管腳上輸出‘高/低’電平。5/12/202427西安郵電學(xué)院計算機(jī)學(xué)院6.4.1概述ARM芯片GPIO管腳的輸入/輸出應(yīng)用5/12/202428西安郵電學(xué)院計算機(jī)學(xué)院6.4.1概述

ARM芯片的GPIO引腳可分別設(shè)置為輸入屬性或輸出屬性。

GPIO用于將外部裝置連接到計算機(jī)系統(tǒng)。設(shè)置為輸入屬性的GPIO對輸入的高低電平數(shù)據(jù)起著選通、隔離的作用。設(shè)置為輸出屬性的GPIO對輸出數(shù)據(jù)起著鎖存的作用。5/12/202429西安郵電學(xué)院計算機(jī)學(xué)院6.4.1概述

LPC2000系列ARM芯片的GPIO資源:在芯片復(fù)位后,所有GPIO口默認(rèn)為輸入狀態(tài)。以端口(32bit字)為單位,對GPIO端口進(jìn)行訪問;可以獨(dú)立控制每位GPIO口的方向?qū)傩裕ㄝ斎牖蜉敵觯?;可以?dú)立控制每輸出位GPIO口的輸出狀態(tài)(1/0);不同系列的芯片具有不同數(shù)量的GPIO5/12/202430西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明對于編程者而言,計算機(jī)中的各種資源都可被抽象成“寄存器”組;LPC2000系列芯片的每個GPIO組件可抽象為5個32位的寄存器:

PINSELx、IOxDIR、IOxSET、IOxCLR和IOxPIN

ARM芯片GPIO資源概述:5/12/202431西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO寄存器模型原理:5/12/202432西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO相關(guān)寄存器說明:序號寄存器名稱說明訪問屬性復(fù)位默認(rèn)值1PINSELx管腳功能選擇寄存器;R/W0x002IOxDIR輸入/輸出方向選擇寄存器;R/W0x003IOxSET輸出‘1’控制寄存器;寫‘1’0x004IOxCLR輸出‘0’控制寄存器;寫‘1’0x005IOxPIN管腳狀態(tài)輸入寄存器;RNA5/12/202433西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO相關(guān)寄存器說明:1、PINSELx

:用于編碼選擇對應(yīng)管腳的功能;32bit寄存器,每2bit為一組,用于控制(選擇)對應(yīng)引腳的功能,00---GPIO功能;復(fù)位默認(rèn)值:0x00000000;備注:詳見7.3小節(jié)《管腳鏈接模塊》。5/12/202434西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO相關(guān)寄存器說明:2、IOxDIR

:設(shè)置GPIO管腳輸入/輸出屬性;32bit寄存器,每1bit為一組,用于控制(選擇)對應(yīng)引腳的輸入、輸出屬性;‘1’---輸出,‘0’---輸入;復(fù)位默認(rèn)值:0x00000000;5/12/202435西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO相關(guān)寄存器說明:3、IOxSET

:輸出高電平(‘1’)控制寄存器;32bit寄存器,每1bit為一組,用于控制(選擇)對應(yīng)引腳的輸出高電平;當(dāng)管腳設(shè)置為GPIO功能、輸出屬性時,向本寄存器某些‘位’寫‘1’,對應(yīng)的管腳將輸出‘高電平’;該寄存器寫‘0’無效;復(fù)位默認(rèn)值:0x00000000;5/12/202436西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO相關(guān)寄存器說明:4、IOxCLR

:輸出低電平(‘0’)控制寄存器;32bit寄存器,每1bit為一組,用于控制(選擇)對應(yīng)引腳的輸出低電平;當(dāng)管腳設(shè)置為GPIO功能、輸出屬性時,向本寄存器某些‘位’寫‘1’,對應(yīng)的管腳將輸出‘低電平’;該寄存器寫‘0’無效;復(fù)位默認(rèn)值:0x00000000;5/12/202437西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明GPIO相關(guān)寄存器說明:5、IOxPIN

:輸出低電平(‘0’)控制寄存器;32bit寄存器,只讀;當(dāng)管腳設(shè)置為GPIO功能、輸入屬性時,每1bit對應(yīng)反映相應(yīng)引腳的電平高低狀態(tài)(1/0);5/12/202438西安郵電學(xué)院計算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說明LPC2000系列器件GPIO資源:端口號(Px)不同芯片所具有的GPIO口LPC2114/2124LPC2131/2132/2134/2136/2138LPC2220/2210/2212/2214P0P0.0~P0.25、P0.27~P0.30P0.0~p0.23、P0.24~p0.31P0.0~P0.25、P0.27~P0.30P1P1.16~P1.31P1.16~P1.31P1.0~p1.1、P1.16~P1.31P2NoNoP2.0~P2.31P3NoNoP3.0~P3.31最多可用GPIO引腳數(shù)量46471125/12/202439西安郵電學(xué)院計算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例要求:兩個按鍵K1、K2分別用于控制發(fā)光二極管LED和蜂鳴器Beep;有K1鍵按下,則LED點(diǎn)亮,K2鍵按下則Beep鳴響,反之熄滅、靜音。GPIO資源分配表序號引腳屬性用途1P0.0InK1按鍵2P0.1InK2按鍵3P0.7OutBeep,‘1’鳴4P0.8OutLED,‘1’亮5/12/202440西安郵電學(xué)院計算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例硬件原理圖5/12/202441西安郵電學(xué)院計算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例----代碼清單#defineK11<<0//K1按鍵連接與P0.0管腳,K1按下時P0.0為低電平#defineK21<<1//K2按鍵連接與P0.1管腳,K2按下時P0.1為低電平#defineBEEP 1<<7 //P0.7控制蜂鳴器,高電平蜂鳴#defineLED 1<<8 //P0.8控制發(fā)光二級管,高電平點(diǎn)亮/***************************************************************函數(shù)名稱:DelayNS()**函數(shù)功能:可變參數(shù)軟件延時**入口參數(shù):dly

延時參數(shù),值越大,延時越久**出口參數(shù):無*************************************************************/voidDelayNS(uint32dly){ uint32i; for(;dly>0;dly--) for(i=0;i<50000;i++);}5/12/202442西安郵電學(xué)院計算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例----代碼清單/***************************************************************函數(shù)名稱:main()**函數(shù)功能:有K1鍵按下,則LED點(diǎn)亮,K2鍵按下則Beep鳴響,**反之熄滅、靜音。*************************************************************/intmain(void){PINSEL0=0x00000000;//P0[15:0]管腳用做GPIO功能

IO0DIR=IO0DIR&(~K1); //設(shè)置K1控制口為輸入

IO0DIR=IO0DIR&(~K2);//設(shè)置K2控制口為輸入

IO0DIR=IO0DIR|BEEP;//設(shè)置BEEP控制口為輸出

IO0DIR=IO0DIR|LED; //設(shè)置LED控制口為輸出

IO0CLR=IO0CLR|BEEP|LED;//BEEP、LED輸出低電平5/12/202443西安郵電學(xué)院計算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例----代碼清單while(1){if((IO0PIN&K1)==0) IO0SET=LED; //如果K1按下,LED點(diǎn)亮

else IO0CLR=LED; //松開則熄滅

if((IO0PIN&K2)==0) IO0SET=BEEP; //如果K2按下,蜂鳴器鳴叫

else IO0CLR=BEEP; //松開則靜音

DelayNS(50); //延時50個時間單位

}return0;}5/12/202444西安郵電學(xué)院計算機(jī)學(xué)院6.4.5ARM中的GPIO應(yīng)用小節(jié)ARM器件編程注意事項(xiàng):1、深入研討相關(guān)寄存器的功用,理解其底層原理;2、對于寄存器“寫”操作,要求使用:“讀—修改—寫”方式完成。目的:寄存器的寫操作,不要影響其它位的數(shù)據(jù)。GPIO應(yīng)用編程注意事項(xiàng):1、IOxDIR、IOxSET、IOxCLR和IOxPIN只有在PINSELx選擇為GPIO功能時有效;2、IOxSET、IOxCLR只有在IOxDIR選擇為輸出時有意義。5/12/202445西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/202446西安郵電學(xué)院計算機(jī)學(xué)院6.5中斷技術(shù)日常生活中的例子:讀書---接聽電話---接待來訪6.5.1基本概念5/12/202447西安郵電學(xué)院計算機(jī)學(xué)院計算機(jī)中的中斷

----在CPU執(zhí)行程序過程中,一些急迫事件(中斷申請),引起CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行該事件的特定處理程序(中斷服務(wù)程序---ISR),執(zhí)行完畢后,CPU再返回到被暫停的程序繼續(xù)執(zhí)行。6.5.1基本概念5/12/202448西安郵電學(xué)院計算機(jī)學(xué)院IO操作----高速的CPU訪問慢速的外設(shè);實(shí)時處理----導(dǎo)彈飛行控制等;程序運(yùn)行中的出錯處理----除數(shù)為0,存儲器訪問異常等;操作系統(tǒng)功能調(diào)用;6.5.1基本概念----計算機(jī)中斷的基本應(yīng)用5/12/202449西安郵電學(xué)院計算機(jī)學(xué)院6.5.1基本概念----中斷技術(shù)常用術(shù)語:中斷源----需要CPU處理的事件源;中斷申請----中斷源向CPU方向發(fā)出的請求處理信號;斷點(diǎn)----主程序被打斷處的指針;中斷服務(wù)程序(ISR)----中斷事件的功能服務(wù)程序;中斷響應(yīng)----CPU敏感并進(jìn)入到ISR的一系列動作;中斷返回----CPU返回被中斷主程序斷點(diǎn)處繼續(xù)執(zhí)行主程序的一系列動作;5/12/202450西安郵電學(xué)院計算機(jī)學(xué)院6.5.1基本概念----中斷技術(shù)常用術(shù)語:中斷技術(shù)----中斷及返回的軟、硬件實(shí)現(xiàn)技術(shù);中斷系統(tǒng)----中斷及返回的軟、硬件實(shí)現(xiàn)電路與代碼;中斷向量----中斷服務(wù)程序(ISR)的入口地址;中斷現(xiàn)場----CPU響應(yīng)中斷離開主程序時,CPU的相關(guān)寄存器數(shù)據(jù)情況。5/12/202451西安郵電學(xué)院計算機(jī)學(xué)院6.5.1基本概念----計算機(jī)中的中斷技術(shù)應(yīng)用:引入中斷的最初目的是為能更有效地處理系統(tǒng)中的輸入輸出,提高系統(tǒng)的整體性能;計算機(jī)中的大多數(shù)設(shè)備都支持中斷方式數(shù)據(jù)傳送;如:打印機(jī)、網(wǎng)卡、顯卡、聲卡、硬盤光驅(qū)等。隨著計算機(jī)應(yīng)用的發(fā)展,中斷技術(shù)也不再局限于IO處理。如:出錯處理、軟中斷等。從中斷概念的原本含義而言,中斷是一個異步的事件。軟中斷則是程序同步處理,主要應(yīng)用于編寫操作系統(tǒng)。5/12/202452西安郵電學(xué)院計算機(jī)學(xué)院6.5.2中斷系統(tǒng)的功能中斷技術(shù)重要而復(fù)雜,由計算機(jī)的軟硬件共同完成。不同計算機(jī)中的中斷系統(tǒng)也不盡相同。一般都具備如下基本功能:中斷源的分別屏蔽控制----戶可以通過軟件分別地控制各個中斷源可否申請中斷;中斷源優(yōu)先級的設(shè)置與管理----戶可以通過軟件分別地安排各中斷源的優(yōu)先級;優(yōu)先級排隊(duì)電路協(xié)助將當(dāng)前最高優(yōu)先級的中斷申請送向處理器。備注:中斷系統(tǒng)優(yōu)先級有兩層含義:①中斷事件同時發(fā)生時,CPU相應(yīng)誰;②CPU正在執(zhí)行ISR過程中,又有中斷事件,CPU如何處理。5/12/202453西安郵電學(xué)院計算機(jī)學(xué)院6.5.2中斷系統(tǒng)的功能中斷源的分別屏蔽控制----原理示意圖5/12/202454西安郵電學(xué)院計算機(jī)學(xué)院6.5.2中斷系統(tǒng)的功能中斷源優(yōu)先級的設(shè)置與管理----原理示意圖5/12/202455西安郵電學(xué)院計算機(jī)學(xué)院6.5.2中斷系統(tǒng)的功能中斷向量的設(shè)置與傳遞----中斷系統(tǒng)在向CPU發(fā)出中斷請求的同時,將對應(yīng)的ISR入口地址相關(guān)信息發(fā)送CPU;斷點(diǎn)與現(xiàn)場保護(hù)----為保障中斷服務(wù)完成后能正確地返回并繼續(xù)主程序的運(yùn)行,CPU在響應(yīng)中斷時,系統(tǒng)要記錄下來被中斷程序的斷點(diǎn)(即主程序中下一條待執(zhí)行的指令位置)和保護(hù)好當(dāng)時的CPU工作現(xiàn)場。一般包含:PC、PSW和運(yùn)算數(shù)據(jù)寄存器等。5/12/202456西安郵電學(xué)院計算機(jī)學(xué)院6.5.3中斷處理過程1、中斷請求

中斷處理過程一般包括以下五個步驟:①中斷請求、②中斷響應(yīng)、③斷點(diǎn)保護(hù)、④中斷處理和⑤中斷返回。物理事件轉(zhuǎn)換成一個電信號作為事件請求處理的申請(信號形式:高低電平、上下沿)。中斷處理過程中,首先要有中斷請求(中斷申請)。該信號可被屏蔽控制。5/12/202457西安郵電學(xué)院計算機(jī)學(xué)院6.5.3中斷處理過程2、中斷響應(yīng)(軟件設(shè)置,硬件自動工作)CPU敏感并進(jìn)入到ISR的一系列動作;CPU總是在每條指令執(zhí)行的最后一個時鐘周期檢測有無中斷請求,若有中斷申請則對其進(jìn)行響應(yīng)。中斷響應(yīng)的同時,中斷系統(tǒng)自動屏蔽控制,以保證中斷邏輯的正確性。中斷響應(yīng)還要獲得相應(yīng)的中斷向量,找到對應(yīng)的ISR并運(yùn)行它。一般有兩種方式:①非向量中斷方式和②向量中斷方式。不同的中斷系統(tǒng),中斷響應(yīng)的具體操作差別較大,基本原理相似。5/12/202458西安郵電學(xué)院計算機(jī)學(xué)院6.5.3中斷處理過程3、斷點(diǎn)保護(hù)(硬件自動工作)保護(hù)斷點(diǎn),保障ISR能返回到主程序的斷點(diǎn)處繼續(xù)運(yùn)行;斷點(diǎn)保護(hù)----主程序被打斷時的PC當(dāng)前值備份。不同的系統(tǒng)中,保護(hù)的方法不一樣:x86將PC值入堆棧,ARM將PC值保護(hù)到LR。此操作都是由硬件自動完成。PSW----程序狀態(tài)字的保護(hù);不同的系統(tǒng)中,保護(hù)的方法不一樣:x86需要軟件方式將PSW值入堆棧,ARM中CPSR硬件自動保護(hù)到SPSR。5/12/202459西安郵電學(xué)院計算機(jī)學(xué)院6.5.3中斷處理過程4、中斷處理(軟件編程)保護(hù)CPU數(shù)據(jù)現(xiàn)場,事件業(yè)務(wù)處理,恢復(fù)CPU數(shù)據(jù)現(xiàn)場;CPU數(shù)據(jù)現(xiàn)場保護(hù)----ISR運(yùn)行中用到的數(shù)據(jù)寄存器要先保護(hù)后使用,以保證返回時主程序的中間結(jié)果不被影響;一般通過入堆棧實(shí)現(xiàn),也有些場合通過切換CPU的寄存器組實(shí)現(xiàn);PSW----程序狀態(tài)字的保護(hù);不同的系統(tǒng)中,保護(hù)的方法不一樣;事件處理代碼完成對應(yīng)的事件服務(wù)功能;恢復(fù)CPU數(shù)據(jù)現(xiàn)場---將保護(hù)數(shù)據(jù)原樣恢復(fù)。5/12/202460西安郵電學(xué)院計算機(jī)學(xué)院6.5.3中斷處理過程5、中斷返回(軟件編程)執(zhí)行完ISR后,要返回到原先被中斷的主程序的斷點(diǎn)處繼續(xù)運(yùn)行;斷點(diǎn)保護(hù)的逆過程,使用之前保護(hù)的PC值,重置PC;不同的計算機(jī)有不同的中斷返回方法;x86使用專用的中斷返回指令(reti),ARM則是使用LR的值重置PC。問題:CPU中的PC寄存器的功能?答:CPU中的PC寄存器也稱為程序計數(shù)器,處理器總是按照PC的指向完成取指、執(zhí)行,并以此運(yùn)行程序;PC指向哪里,CPU就運(yùn)行到哪里;控制了PC就控制了處理器的執(zhí)行流向。PC是處理器中的一個極重要的工作寄存器。5/12/202461西安郵電學(xué)院計算機(jī)學(xué)院6.5.3中斷處理過程---小節(jié)5/12/202462西安郵電學(xué)院計算機(jī)學(xué)院第6章目錄6.1計算機(jī)接口概述6.2輸入輸出接口電路6.3CPU與外設(shè)的數(shù)據(jù)傳輸控制方式6.4ARM中的GPIO6.5中斷技術(shù)6.6ARM中斷系統(tǒng)基礎(chǔ)5/12/202463西安郵電學(xué)院計算機(jī)學(xué)院6.6ARM中斷系統(tǒng)基礎(chǔ)

前面我們講解了中斷技術(shù)的一般原理,下面我們來看看在ARM微控器中是如何實(shí)現(xiàn)中斷技術(shù)的----ARM中斷系統(tǒng)。ARM中斷系統(tǒng)功能強(qiáng),也比較復(fù)雜;我們逐步學(xué)習(xí)。在此,我們僅以外中斷為例介紹ARM中斷的處理機(jī)制。5/12/202464西安郵電學(xué)院計算機(jī)學(xué)院6.6.1ARM中的中斷源中斷源----需要CPU處理的事件源;ARM系列微控制器為了滿足多方面的應(yīng)用需求,在器件中集成了多種常用資源,它們多支持中斷方式服務(wù)。常見的中斷源有:WDT(看門狗)、Timer(定時計數(shù)器)、PWM(脈寬調(diào)制器)、UART(通用異步收發(fā)器)、I2C(I2C接口)、SPI(SPI接口)、RTC(實(shí)時時鐘)、A/D(模數(shù)轉(zhuǎn)換器)、EINT(外中斷)等。用戶可以依據(jù)自己的資源需要,選取一款性價比較好的器件應(yīng)用到自己的應(yīng)用設(shè)計中。備注:上述中斷源都支持查詢方式服務(wù);5/12/202465西安郵電學(xué)院計算機(jī)學(xué)院6.6.2ARM中的向量中斷控制器向量中斷----即要向CPU發(fā)出中斷請求,同時還要給出ISR入口相關(guān)參數(shù);向量中斷控制器(VIC---VectorInterruptController)是中斷源與處理器連接的橋梁,是ARM中斷系統(tǒng)的主要硬件構(gòu)成部分。通過對VIC編程可對ARM器件的各個中斷源進(jìn)行中斷屏蔽控制、中斷優(yōu)先級控制、中斷分類控制、中斷向量傳遞、狀態(tài)查詢等。5/12/202466西安郵電學(xué)院計算機(jī)學(xué)院6.6.2ARM中的向量中斷控制器ARM的VIC原理示意圖5/12/202467西安郵電學(xué)院計算機(jī)學(xué)院6.6.2ARM中的向量中斷控制器ARM技術(shù)中的‘中斷’和‘異?!骸袛唷汀惓!莾蓚€不同的概念;ARM技術(shù)中,將所有能導(dǎo)致處理器打斷程序正常運(yùn)行的事件都?xì)w為異常;例如復(fù)位異常。在ARM中包含有7種異常:復(fù)位異常、SWI異常(軟中斷異常)、未定義指令異常、數(shù)據(jù)中止異常、指令中止異常、IRQ異常和FIQ異常?!袛唷恰惓!膬蓚€特例(IRQ異常、FIQ異常);在ARM中,所有外設(shè)導(dǎo)致的異常都被處理成IRQ或FIQ兩種異常之一;5/12/202468西安郵電學(xué)院計算機(jī)學(xué)院6.6.2ARM中的向量中斷控制器習(xí)慣上將以IRQ異常方式傳遞、響應(yīng)的中斷稱之為“IRQ中斷”;以FIQ異常方式傳遞、響應(yīng)的中斷稱之為“FIQ中斷”。IRQ中斷又根據(jù)中斷服務(wù)程序入口地址的定位方式,被進(jìn)一步劃分為‘向量IRQ中斷’和‘非向量IRQ中斷’。中斷5/12/202469西安郵電學(xué)院計算機(jī)學(xué)院6.6.3ARM的中斷響應(yīng)過程ARM的FIQ中斷、IRQ中斷是ARM的FIQ和IRQ兩種異常的特例,ARM使用對“異常”響應(yīng)處理的方法響應(yīng)處理FIQ、IRQ中斷。FIQ異常響應(yīng)的服務(wù)入口地址固定為:0x0000001C;IRQ異常響應(yīng)的服務(wù)入口地址固定為:0x00000018;通常系統(tǒng)中僅安排一個FIQ中斷源;因此,F(xiàn)IQ異常響應(yīng)的服務(wù)入口地址就是“FIQ_ISR”入口地址;IRQ中斷一般要對應(yīng)多個中斷源,IRQ_ISR入口地址處理需要特殊處理;5/12/202470西安郵電學(xué)院計算機(jī)學(xué)院6.6.3ARM的中斷響應(yīng)過程ARM啟動代碼的異常向量表部分:0x00LDRPC,ResetAddr

;跳轉(zhuǎn)到ResetAddr單元0x04LDRPC,UndefinedAddr

0x08LDRPC,SWI_Addr

0x0CLDRPC,PrefetchAddr

0x10LDRPC,DataAbortAddr

0x14DCD0xb9205f80;用戶代碼有效性檢查碼0x18

LDRPC,[PC,#-0xff0]

;PC←(PC)–0xff00x1C

LDRPC,FIQ_Addr

地址

指令

注釋備注:修改PC實(shí)質(zhì)上就是跳轉(zhuǎn)。5/12/202471西安郵電學(xué)院計算機(jī)學(xué)院6.6.3ARM的中斷響應(yīng)過程ARM啟動代碼的異常向量表部分:0x18

LDRPC,[PC,#-0xff0]

;PC←(PC)–0xff00x1C

LDRPC,FIQ_Addr

地址

指令

注釋IRQ異常入口指令LDRPC,[PC,#-0xff0]

執(zhí)行的效果分析:1、這條指令的地址是0x18,執(zhí)行該指令時PC=0x20;2、執(zhí)行的結(jié)果為PC=[0x20-

0xff0]=[0xfffff030];3、0xfffff030恰是VICVectAddr

寄存器的地址;結(jié)論:ARM處理器響應(yīng)IRQ異常時,固定按VICVectAddr寄存器間接轉(zhuǎn)移!5/12/202472西安郵電學(xué)院計算機(jī)學(xué)院6.6.3ARM的中斷響應(yīng)過程ARM處理器響應(yīng)IRQ異常時,固定按VICVectAddr寄存器間接轉(zhuǎn)移。在ARM中有一套裝置(VIC),它對各中斷源進(jìn)行管理,在申請中斷的同時,自動地將該中斷源對應(yīng)的“ISR向量”傳送到了VICVectAddr

寄存器。5/12/202473西安郵電學(xué)院計算機(jī)學(xué)院6.6.4ARM的中斷返回在處理完中斷后,要從ISR返回到主程序斷點(diǎn)處繼續(xù)執(zhí)行。有兩個關(guān)鍵內(nèi)容:1、斷點(diǎn)的精確定位;2、斷點(diǎn)處的處理器工作現(xiàn)場;5/12/202474西安郵電學(xué)院計算機(jī)學(xué)院6.6.4ARM的中斷返回回憶ARM響應(yīng)IRQ、FIQ異常的過程:1、斷點(diǎn)的精確定位;ARM處理器響應(yīng)IRQ中斷、FIQ中斷時,硬件自動完成當(dāng)前PC值到LR_irq(或LR_fiq)寄存器的備份,CPSR寄存器值到SPSR_irq(或SPSR_fiq)寄存器的備份。需要進(jìn)行返回調(diào)整:PC=LR-#0x04;使用指令:SUBSPC,R14,#4返回主程序。2、斷點(diǎn)處的處理器工作現(xiàn)場;(CPSR、R0~R12)5/12/202475西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷ARM系統(tǒng)的外中斷資源主要用于其他外部隨機(jī)事件到系統(tǒng)的引入;當(dāng)這些事件發(fā)生時,外部其他電路將對應(yīng)的物理事件轉(zhuǎn)換成電信號,處理器能及時響應(yīng)、處理這些事件。ARM的C是通過管腳(EINTx)輸入符合要求的信號而觸發(fā)的中斷。信號方式有4種,用戶可編程約定:平/沿信號方式ARM外部中斷電平高電平低電平邊沿上升沿下降沿5/12/202476西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----信號方式應(yīng)用中的注意事項(xiàng)1、邊沿有效外中斷2、電平有效外中斷要注意EINT信號的清除;保證每次中斷,響應(yīng)且僅響應(yīng)一次。5/12/202477西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----相關(guān)寄存器硬件系統(tǒng)使用5個寄存器-----用于外中斷控制。這5個寄存器構(gòu)成了ARM外中斷資源的系統(tǒng)(編程、控制)模型。寄存器名物理地址功能說明PINSEL00xE002C000管腳功能選擇寄存器0;(關(guān)于“管腳多功能”選用知識參見7.5章節(jié)--管腳連接模塊)EXTINT0xE01FC140外部中斷標(biāo)志寄存器;EINT管腳上的有效信號對應(yīng)地置位本寄存器的相關(guān)位,指示有某EINT中斷申請。EXTWAKE0xE01FC144外部中斷喚醒寄存器;(此功能暫不討論)EXTMODE0xE01FC148外部中斷方式寄存器;控制每個管腳的觸發(fā)信號方式采用“邊沿”或“電平”。EXTPOLAR0xE01FC14C外部中斷極性寄存器;控制EINT管腳的哪種電平或邊沿來產(chǎn)生中斷。5/12/202478西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----相關(guān)寄存器EXTINT----外部中斷標(biāo)志寄存器比特EINT[3:0]分別用于標(biāo)示對應(yīng)的4個中斷輸入;當(dāng)對應(yīng)的輸入端有有效輸入信號時,相應(yīng)的比特置‘1’,通過VIC向處理器申請中斷;向EINT[3:0]按位寫入‘1’清零對應(yīng)位。建議“讀—修改—寫”方式操作EXTINT寄存器;注意:電平方式的EINT;清0時不要影響其它位。5/12/202479西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----相關(guān)寄存器EXTMODE----外部中斷方式寄存器EXTMODE[3:0]位分別用來選擇對應(yīng)的EINT3~EINT0腳觸發(fā)信號方式是電平或邊沿?!?’---沿方式;‘0’---電平方式。建議“讀—修改—寫”方式操作EXTMOD寄存器;5/12/202480西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----相關(guān)寄存器EXTPOLAR----外部中斷極性寄存器EXTPOLAR[3:0]位分別用來選擇對應(yīng)的EINT3~EINT0腳觸發(fā)信號的極性。‘1’---上升沿/高電平方式;‘0’---下降沿/低電平方式。建議“讀—修改—寫”方式操作EXTPOLAR寄存器;5/12/202481西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例要求:用一個按鍵模擬一個外中斷觸發(fā),用蜂鳴器Beep模擬控制狀態(tài);每一次外中斷事件翻轉(zhuǎn)一次控制狀態(tài)輸出,模擬一個外中斷發(fā)出、響應(yīng)和處理過程。設(shè)計分析:設(shè)置P0.16管腳用作EINT0功能,連接開關(guān)Key,信號方式設(shè)置為低電平有效;P0.7管腳用作GPIO功能,輸出屬性連接Beep。5/12/202482西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例P0.16管腳用作EINT0,連接開關(guān)Key,信號方式設(shè)置為低電平有效;P0.7管腳用作GPIO功能,輸出屬性連接Beep。設(shè)計分析5/12/202483西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例C代碼程序清單

#include"config.h"#defineBEEP1<<7 /*P0.7控制BEEP,低電平蜂鳴*/void__irqIRQ_Eint0(void)/*EINT0_ISR*/{uint32i;i=IO0SET; /*讀取當(dāng)前BEEP的控制值*/if((i&BEEP)==0)IO0SET=BEEP; /*鳴響蜂鳴器*/elseIO0CLR=BEEP; /*停止蜂鳴器*/while((EXTINT&0x01)!=0)/*等待EINT0引腳恢復(fù)為高電平*/{EXTINT=0x01; /*清除EINT0中斷標(biāo)志*/}

VICVectAddr=0; /*向量中斷結(jié)束*/}5/12/202484西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例C代碼程序清單

intmain(void){PINSEL0=0x00000000;/*設(shè)置P0[15:0]為GPIO*/PINSEL1=0x00000001;/*設(shè)P0.16為EINT0*/IO0DIR=BEEP; /*設(shè)置P0.7為輸出,其余輸入*/EXTMODE=0x00; /*設(shè)置EINT0為電平觸發(fā)*/EXTPOLAR=0x00; /*極性寄存器---低電平有效*/IO0CLR=BEEP; /*Beep初始態(tài)為靜音*/

IRQEnable(); /*使能IRQ中斷*/

/*打開EINT0中斷(使用非向量中斷)*/

VICIntSelect=0x00000000;/*設(shè)置中斷為IRQ中斷*/

VICDefVectAddr=(int)IRQ_Eint0;/*裝載中斷服務(wù)程序地址*/EXTINT=0x01; /*清除EINT0中斷標(biāo)志*/

VICIntEnable=1<<0x0e;/*使能EINT0中斷*/

while(1);

/*等待中斷*/return(0); }5/12/202485西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例ASM程序清單

BEEPequ0x80 ;P0.7管腳接BEEP,低電平鳴響

CODE32AREAExample,CODE,READONLYENTRY;中斷向量表Reset

LDRPC,ResetAddrLDRPC,UndefinedAddrLDRPC,SWI_AddrLDRPC,PrefetchAddrLDRPC,DataAbortAddrDCD0xb9205f80

LDRPC,[PC,#-0xff0]LDRPC,FIQ_Addr備注:關(guān)注藍(lán)色指令行。5/12/202486西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例ASM程序清單

;中斷向量表文字池ResetAddrDCDResetInitUndefinedAddrDCDUndefinedSWI_AddrDCDSoftwareInterruptPrefetchAddrDCDPrefetchAbortDataAbortAddrDCDDataAbortNouseDCD0IRQ_AddrDCD0FIQ_AddrDCDFIQ_Handler5/12/202487西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例ASM程序清單

ResetInit

;設(shè)置IRQ中斷模式堆棧

msr

CPSR_c,#0xd2

ldrSP,=0x40000500

;設(shè)置管理模式堆棧

msr

CPSR_c,#0xd3

ldrSP,=0x40000800

ldrr0,=PINSEL0

movr4,#0x00

strr4,[r0] ;P0[15:0]管腳用作GPIO5/12/202488西安郵電學(xué)院計算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例ASM程序清單

溫馨提示

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

最新文檔

評論

0/150

提交評論