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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

一、基本思路

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

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

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

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

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

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

PINSELx、IOxDIR、IOxSET、IOxCLR和IOxPIN

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

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

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

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

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

:輸出低電平(‘0’)控制寄存器;32bit寄存器,只讀;當(dāng)管腳設(shè)置為GPIO功能、輸入屬性時(shí),每1bit對(duì)應(yīng)反映相應(yīng)引腳的電平高低狀態(tài)(1/0);5/12/202438西安郵電學(xué)院計(jì)算機(jī)學(xué)院6.4.2GPIO原理及端口寄存器說(shuō)明LPC2000系列器件GPIO資源:端口號(hào)(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ì)算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例要求:兩個(gè)按鍵K1、K2分別用于控制發(fā)光二極管LED和蜂鳴器Beep;有K1鍵按下,則LED點(diǎn)亮,K2鍵按下則Beep鳴響,反之熄滅、靜音。GPIO資源分配表序號(hào)引腳屬性用途1P0.0InK1按鍵2P0.1InK2按鍵3P0.7OutBeep,‘1’鳴4P0.8OutLED,‘1’亮5/12/202440西安郵電學(xué)院計(jì)算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例硬件原理圖5/12/202441西安郵電學(xué)院計(jì)算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例----代碼清單#defineK11<<0//K1按鍵連接與P0.0管腳,K1按下時(shí)P0.0為低電平#defineK21<<1//K2按鍵連接與P0.1管腳,K2按下時(shí)P0.1為低電平#defineBEEP 1<<7 //P0.7控制蜂鳴器,高電平蜂鳴#defineLED 1<<8 //P0.8控制發(fā)光二級(jí)管,高電平點(diǎn)亮/***************************************************************函數(shù)名稱(chēng):DelayNS()**函數(shù)功能:可變參數(shù)軟件延時(shí)**入口參數(shù):dly

延時(shí)參數(shù),值越大,延時(shí)越久**出口參數(shù):無(wú)*************************************************************/voidDelayNS(uint32dly){ uint32i; for(;dly>0;dly--) for(i=0;i<50000;i++);}5/12/202442西安郵電學(xué)院計(jì)算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例----代碼清單/***************************************************************函數(shù)名稱(chēng):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ì)算機(jī)學(xué)院6.4.3GPIO應(yīng)用舉例----代碼清單while(1){if((IO0PIN&K1)==0) IO0SET=LED; //如果K1按下,LED點(diǎn)亮

else IO0CLR=LED; //松開(kāi)則熄滅

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

else IO0CLR=BEEP; //松開(kāi)則靜音

DelayNS(50); //延時(shí)50個(gè)時(shí)間單位

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

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

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

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

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

0x08LDRPC,SWI_Addr

0x0CLDRPC,PrefetchAddr

0x10LDRPC,DataAbortAddr

0x14DCD0xb9205f80;用戶(hù)代碼有效性檢查碼0x18

LDRPC,[PC,#-0xff0]

;PC←(PC)–0xff00x1C

LDRPC,FIQ_Addr

地址

指令

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

LDRPC,[PC,#-0xff0]

;PC←(PC)–0xff00x1C

LDRPC,FIQ_Addr

地址

指令

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

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

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

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

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

/*打開(kāi)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ì)算機(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ì)算機(jī)學(xué)院6.6.5ARM的外中斷----應(yīng)用舉例ASM程序清單

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論