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

下載本文檔

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

文檔簡(jiǎn)介

1、西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,1,2020/8/1,微機(jī)原理與嵌入式系統(tǒng)基礎(chǔ),西安郵電學(xué)院-計(jì)算機(jī)系 QQ: 646938309 Email: ,2020/8/1,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,2,第6章輸入/輸出與中斷技術(shù),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,3,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.4 ARM中的GPIO 6.5 中斷技術(shù) 6.6 ARM中斷系統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,4,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.

2、4 ARM中的GPIO 6.5 中斷技術(shù) 6.6 ARM中斷系統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,5,2020/8/1,6.1 計(jì)算機(jī)接口概述,計(jì)算機(jī)硬件由控制器、運(yùn)算器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備等5部分組成 。 處理器的強(qiáng)大功能必須通過(guò)外部設(shè)備(簡(jiǎn)稱外設(shè))才能得以呈現(xiàn) 。 計(jì)算機(jī)外設(shè)在接入到計(jì)算機(jī)系統(tǒng)時(shí)需要接口電路橋接-用于完成主機(jī)與物理外設(shè)的橋接與控制。 在本課程中所研討的“外設(shè)”是指外設(shè)接口,注重于工作原理研討。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,6,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.4 ARM中的GPI

3、O 6.5 中斷技術(shù) 6.6 ARM中斷系統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,7,2020/8/1,6.2 輸入輸出接口電路,計(jì)算機(jī)中的輸入輸出接口電路用于將物理外設(shè)連接入計(jì)算機(jī)系統(tǒng),在計(jì)算機(jī)系統(tǒng)中起著物理外設(shè)與計(jì)算機(jī)主機(jī)之間橋接、適配作用。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,8,2020/8/1,6.2.1 輸入輸出接口電路的基本功能與端口分類(lèi),接口-具有物理連接的含義,物理外設(shè)通過(guò)接口電路接入到計(jì)算機(jī)。 接口電路-是實(shí)現(xiàn)接口的主要組成部分,用于將物理外設(shè)橋接到計(jì)算機(jī)系統(tǒng)總線。 從CPU角度看到的外設(shè)實(shí)質(zhì)上是外設(shè)的接口電路,它是物理外設(shè)的抽象,并不一定是具體的物理外設(shè)裝置,更具有原理代表性。,一、基本

4、概念,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,9,2020/8/1,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)信息,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,10,2020/8/1,6.2.1 輸入輸出接口電路的基本功能與端口分類(lèi),I/O接口的典型結(jié)構(gòu)示意圖,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,11,2020/8/1,

5、6.2.2 I/O端口的編址,一、基本概念 計(jì)算機(jī)硬件系統(tǒng)中可以含有多個(gè)I/O接口,每個(gè)I/O接口中又可以含有多個(gè)I/O端口(寄存器)。 端口寄存器在計(jì)算機(jī)系統(tǒng)中象存儲(chǔ)器單元一樣被編址,稱之為端口地址,處理器通過(guò)端口地址可對(duì)各個(gè)端口尋址訪問(wèn),實(shí)現(xiàn)對(duì)外設(shè)的訪問(wèn)控制。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,12,2020/8/1,6.2.2 I/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訪問(wèn)控制管腳。 獨(dú)立編址方式 - I/O端口與內(nèi)存單元分別編址在I/O地址空間

6、和內(nèi)存地址空間。特點(diǎn),處理器有專(zhuān)用的I/O指令,有專(zhuān)用的I/O訪問(wèn)控制管腳。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,13,2020/8/1,6.2.2 I/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ò)端口訪問(wèn)控制外設(shè)工作。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,14,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.4 ARM中

7、的GPIO 6.5 中斷技術(shù) 6.6 ARM中斷系統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,15,2020/8/1,6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式,外設(shè)的多樣性使外設(shè)的屬性差異極大,需要不同的數(shù)據(jù)傳送控制方式。 處理器與外設(shè)之間的數(shù)據(jù)傳送方式主要有:無(wú)條件數(shù)據(jù)訪問(wèn)方式,狀態(tài)查詢方式數(shù)據(jù)訪問(wèn)方式,中斷方式數(shù)據(jù)訪問(wèn)方式和直接存儲(chǔ)器訪問(wèn)(DMA)方式等幾種方式。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,16,2020/8/1,6.3.1 無(wú)條件數(shù)據(jù)訪問(wèn)方式,一、問(wèn)題描述與解決方法 如:狀態(tài)開(kāi)關(guān)(按鍵)、繼電器、數(shù)碼管、發(fā)光二極管等設(shè)備,計(jì)算機(jī)可隨時(shí)訪問(wèn),而不需顧及其當(dāng)時(shí)的狀態(tài)。 無(wú)條件外設(shè)-輸入設(shè)備總是準(zhǔn)備好向C

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

9、式,三、接口電路的基本組成原理(輸入三態(tài)隔離),A31:0-就是這個(gè)輸入設(shè)備的端口地址。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,19,2020/8/1,6.3.1 無(wú)條件數(shù)據(jù)訪問(wèn)方式,三、接口電路的基本組成原理(輸出數(shù)據(jù)鎖存),A31:0-就是這個(gè)輸出設(shè)備的端口地址。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,20,2020/8/1,6.3.2 狀態(tài)查詢數(shù)據(jù)訪問(wèn)方式,一、問(wèn)題描述與解決方法 有一些外設(shè),處理器在對(duì)其進(jìn)行訪問(wèn)時(shí)需要關(guān)心其狀態(tài),只有狀態(tài)許可時(shí)方可對(duì)外設(shè)進(jìn)行訪問(wèn)。如:AD轉(zhuǎn)換器、串行通信、打印機(jī)等,這類(lèi)外設(shè)稱之為-條件訪問(wèn)外設(shè)。 CPU對(duì)此類(lèi)外設(shè)進(jìn)行輸入/輸出操作時(shí)需要考慮外設(shè)的狀態(tài),只有外設(shè)處于準(zhǔn)備好狀態(tài)時(shí),

10、方可訪問(wèn)數(shù)據(jù)端口。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,21,2020/8/1,6.3.2 狀態(tài)查詢數(shù)據(jù)訪問(wèn)方式,一、問(wèn)題描述與解決方法 狀態(tài)查詢方式的原理:在執(zhí)行數(shù)據(jù)端口訪問(wèn)指令前,要先查詢?cè)撛O(shè)備的狀態(tài),當(dāng)設(shè)備處于準(zhǔn)備好狀態(tài)時(shí),CPU才執(zhí)行對(duì)設(shè)備數(shù)據(jù)端口的輸入/輸出指令,與外設(shè)交換信息;否則,等待。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,22,2020/8/1,6.3.2 狀態(tài)查詢數(shù)據(jù)訪問(wèn)方式,二、狀態(tài)查詢式 I/O接口電路 組成原理,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,23,2020/8/1,6.3.2 狀態(tài)查詢數(shù)據(jù)訪問(wèn)方式,三、狀態(tài)程序查詢方式 I/O控制流程,分析:外設(shè)速度比較慢,高速的CPU被迫查詢、停等;CPU的

11、運(yùn)算能力被浪費(fèi)。,改進(jìn)思路:將CPU查詢、停等改為由外設(shè)主動(dòng)上報(bào)狀態(tài)。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,24,2020/8/1,6.3.3 中斷方式數(shù)據(jù)訪問(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ù)端口訪問(wèn)后,CPU再繼續(xù)執(zhí)行被暫停的程序(中斷返回)。,備注:慢速的外設(shè)與高速的CPU并行工作,充分發(fā)揮CPU的處理能力。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,25,2020/8/1,6.3.3 中斷方式數(shù)據(jù)訪問(wèn),二、中斷方式I/

12、O接口原理,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,26,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.4 ARM中的GPIO 6.5 中斷技術(shù) 6.6 ARM中斷系統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,27,2020/8/1,6.4 ARM中的GPIO,6.4.1 概述 GPIO(General Purpose Input/Output ports-通用輸入/輸出端口)是ARM系列芯片中的基本資源,用于二值化數(shù)據(jù)(數(shù)字電路的0/1)的輸入和輸出。 測(cè)取輸入GPIO管腳的 高/低 電平狀態(tài); 在輸出GPIO管腳上輸出 高/低 電平。

13、,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,28,2020/8/1,6.4.1 概述,ARM芯片GPIO管腳的輸入/輸出應(yīng)用,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,29,2020/8/1,6.4.1 概述,ARM芯片的GPIO引腳可分別設(shè)置為輸入屬性或輸出屬性。 GPIO用于將外部裝置連接到計(jì)算機(jī)系統(tǒng)。 設(shè)置為輸入屬性的GPIO對(duì)輸入的高低電平數(shù)據(jù)起著選通、隔離的作用。 設(shè)置為輸出屬性的GPIO對(duì)輸出數(shù)據(jù)起著鎖存的作用。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,30,2020/8/1,6.4.1 概述,LPC2000系列ARM芯片的GPIO資源:,在芯片復(fù)位后,所有GPIO口默認(rèn)為輸入狀態(tài)。 以端口(32bit字)為單位,對(duì)GPIO端

14、口進(jìn)行訪問(wèn); 可以獨(dú)立控制每位GPIO口的方向?qū)傩裕ㄝ斎牖蜉敵觯?可以獨(dú)立控制每輸出位GPIO口的輸出狀態(tài)(1/0); 不同系列的芯片具有不同數(shù)量的GPIO,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,31,2020/8/1,6.4.2 GPIO原理及端口寄存器說(shuō)明,對(duì)于編程者而言,計(jì)算機(jī)中的各種資源都可被抽象成 “寄存器” 組; LPC2000系列芯片的每個(gè) GPIO 組件可抽象為5個(gè)32位的寄存器: PINSELx、IOxDIR、IOxSET、IOxCLR和IOxPIN,ARM芯片GPIO資源概述:,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,32,2020/8/1,6.4.2 GPIO原理及端口寄存器說(shuō)明,GPIO寄存器

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

16、:,2、IOxDIR :設(shè)置GPIO管腳輸入/輸出屬性; 32bit 寄存器,每 1bit 為一組,用于控制(選擇)對(duì)應(yīng)引腳的輸入、輸出屬性;1-輸出,0-輸入 ; 復(fù)位默認(rèn)值:0 x0000 0000;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,36,2020/8/1,6.4.2 GPIO原理及端口寄存器說(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)值:0 x0000 000

17、0;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,37,2020/8/1,6.4.2 GPIO原理及端口寄存器說(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)值:0 x0000 0000;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,38,2020/8/1,6.4.2 GPIO原理及端口寄存器說(shuō)明,GPIO相關(guān)寄存器說(shuō)明 :,5、IOxPIN :管腳電平狀態(tài)寄存器 ; 32bit 寄存器,只讀; 當(dāng)

18、管腳設(shè)置為GPIO功能、輸入屬性時(shí),每 1bit 對(duì)應(yīng)反映相應(yīng)引腳的電平高低狀態(tài)(1/0);,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,39,2020/8/1,6.4.2 GPIO原理及端口寄存器說(shuō)明,LPC2000系列器件GPIO資源:,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,40,2020/8/1,6.4.3 GPIO應(yīng)用舉例,要求:兩個(gè)按鍵K1、K2分別用于控制發(fā)光二極管LED和蜂鳴器Beep;有K1鍵按下,則LED點(diǎn)亮,K2鍵按下則Beep鳴響,反之熄滅、靜音。,GPIO資源分配表,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,41,2020/8/1,6.4.3 GPIO應(yīng)用舉例,硬件原理圖,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,42,2020/

19、8/1,6.4.3 GPIO應(yīng)用舉例-代碼清單,#define K1 1 0; dly-) for (i=0; i50000; i+); ,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,43,2020/8/1,6.4.3 GPIO應(yīng)用舉例-代碼清單,/* * 函數(shù)名稱 :main() * 函數(shù)功能 :有K1鍵按下,則LED點(diǎn)亮,K2鍵按下則Beep鳴響, * 反之熄滅、靜音。 */ int main (void) PINSEL0 = 0 x00000000; / P015:0管腳用做GPIO功能 IO0DIR = IO0DIR / BEEP、LED 輸出低電平,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,44,2020/8/1,6

20、.4.3 GPIO應(yīng)用舉例-代碼清單,while (1) if ( (IO0PIN ,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,45,2020/8/1,6.4.4 ARM中的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í)有意義。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,4

21、6,2020/8/1,GPIO寄存器模型原理 :,備注:編寫(xiě)計(jì)算機(jī)中的 “外設(shè)驅(qū)動(dòng)程序” 時(shí),“外設(shè)” 都將抽象成 “設(shè)備寄存器組” (外設(shè)模型)。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,47,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.4 ARM中的GPIO 6.5 中斷技術(shù) 6.6 ARM中斷系統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,48,2020/8/1,6.5 中斷技術(shù),日常生活中的例子:讀書(shū)-接聽(tīng)電話-接待來(lái)訪,6.5.1 基本概念,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,49,2020/8/1,計(jì)算機(jī)中的中斷 - 在CPU執(zhí)行程序過(guò)

22、程中,一些急迫事件(中斷申請(qǐng)),引起CPU暫停正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行該事件的特定處理程序(中斷服務(wù)程序-ISR),執(zhí)行完畢后,CPU再返回到被暫停的程序繼續(xù)執(zhí)行。,6.5.1 基本概念,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,50,2020/8/1,IO操作 - 高速的CPU訪問(wèn)慢速的外設(shè); 實(shí)時(shí)處理 - 導(dǎo)彈飛行控制等; 程序運(yùn)行中的出錯(cuò)處理 - 除數(shù)為0,存儲(chǔ)器訪問(wèn)異常等; 操作系統(tǒng)功能調(diào)用;,6.5.1 基本概念 - 計(jì)算機(jī)中斷的基本應(yīng)用,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,51,2020/8/1,6.5.1 基本概念 -中斷技術(shù)常用術(shù)語(yǔ):,中斷源 - 需要CPU處理的事件源; 中斷申請(qǐng) - 中斷源向CPU方

23、向發(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)作;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,52,2020/8/1,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ù)情況。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,53,2020/8/1,6.5

24、.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)。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,54,2020/8/1,6.5.2 中斷系統(tǒng)的功能,中斷技術(shù)重要而復(fù)雜,由計(jì)算機(jī)的軟硬件共同完成 。不同計(jì)算機(jī)中的中斷系統(tǒng)也不盡相同。一般都具備如下基本功能:,中斷源的分別屏蔽控制-戶可

25、以通過(guò)軟件分別地控制各個(gè)中斷源可否申請(qǐng)中斷 ; 中斷源優(yōu)先級(jí)的設(shè)置與管理 -戶可以通過(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如何處理。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,55,2020/8/1,6.5.2 中斷系統(tǒng)的功能,中斷源的分別屏蔽控制-原理示意圖,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,56,2020/8/1,6.5.2 中斷系統(tǒng)的功能,中斷源優(yōu)先級(jí)的設(shè)置與管理-原理示意圖,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,57,2020/8/1,6.5.2 中斷

26、系統(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ù)寄存器等。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,58,2020/8/1,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)形式:高低電平、

27、上下沿)。 中斷處理過(guò)程中,首先要有中斷請(qǐng)求(中斷申請(qǐng))。 該信號(hào)可被屏蔽控制。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,59,2020/8/1,6.5.3 中斷處理過(guò)程,2、中斷響應(yīng)(軟件設(shè)置,硬件自動(dòng)工作),CPU敏感中斷請(qǐng)求并進(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)的 “中斷服務(wù)程序-ISR” 入口,并運(yùn)行它。一般有兩種方式:非向量中斷方式和向量中斷方式。 不同的中斷系統(tǒng),中斷響應(yīng)的具體操作差別較大,基本原理相似。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,

28、60,2020/8/1,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。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,61,2020/8/1,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ù)

29、據(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ù)。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,62,2020/8/1,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則是

30、使用LR的值重置PC。,問(wèn)題:CPU中的PC寄存器的功能?,答:CPU中的PC寄存器也稱為程序計(jì)數(shù)器,處理器總是按照PC的指向完成取指、執(zhí)行,并以此運(yùn)行程序;PC指向哪里,CPU就運(yùn)行到哪里;控制了PC就控制了處理器的執(zhí)行流向。PC是處理器中的一個(gè)極重要的工作寄存器。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,63,2020/8/1,6.5.3 中斷處理過(guò)程-小節(jié),ARM狀態(tài)各模式下的寄存器,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,65,2020/8/1,第6章 目錄,6.1 計(jì)算機(jī)接口概述 6.2 輸入輸出接口電路 6.3 CPU與外設(shè)的數(shù)據(jù)傳輸控制方式 6.4 ARM中的GPIO 6.5 中斷技術(shù) 6.6 ARM中斷系

31、統(tǒng)基礎(chǔ),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,66,2020/8/1,6.6 ARM中斷系統(tǒng)基礎(chǔ),前面我們講解了中斷技術(shù)的一般原理,下面我們來(lái)看看在ARM微控器中是如何實(shí)現(xiàn)中斷技術(shù)的 - ARM中斷系統(tǒng)。 ARM中斷系統(tǒng)功能強(qiáng),也比較復(fù)雜;我們逐步學(xué)習(xí)。在此,我們僅以外中斷(EINT)為例介紹ARM中斷的處理機(jī)制。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,67,2020/8/1,6.6.1 ARM中的中斷源,中斷源 - 需要CPU處理的事件源;,ARM系列微控制器為了滿足多方面的應(yīng)用需求,在器件中集成了多種常用資源,它們多支持中斷方式服務(wù)。 常見(jiàn)的中斷源有:WDT(看門(mén)狗)、Timer(定時(shí)計(jì)數(shù)器)、PWM(脈寬調(diào)制器

32、)、UART(通用異步收發(fā)器)、I2C(I2C接口)、SPI(SPI接口)、RTC(實(shí)時(shí)時(shí)鐘)、A/D(模數(shù)轉(zhuǎn)換器)、EINT(外中斷)等。 用戶可以依據(jù)自己的資源需要,選取一款性價(jià)比較好的器件應(yīng)用到自己的應(yīng)用設(shè)計(jì)中。,備注:上述中斷源也都支持查詢方式服務(wù);,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,68,2020/8/1,6.6.2 ARM中的向量中斷控制器,向量中斷 - 即要向CPU發(fā)出中斷請(qǐng)求,同時(shí)還要給出ISR入口相關(guān)參數(shù);ARM 使用“VIC+軟件” 實(shí)現(xiàn)向量中斷系統(tǒng)。,向量中斷控制器(VIC-Vector Interrupt Controller) 是中斷源與處理器連接的橋梁, 是ARM中斷系統(tǒng)的

33、主要硬件構(gòu)成部分。 通過(guò)對(duì)VIC編程可對(duì)ARM器件的各個(gè)中斷源進(jìn)行中斷屏蔽控制、中斷優(yōu)先級(jí)控制、中斷分類(lèi)控制、中斷向量傳遞、狀態(tài)查詢等。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,69,2020/8/1,6.6.2 ARM中的向量中斷控制器,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)致的異常都被

34、處理成IRQ或FIQ兩種異常之一 ;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,70,2020/8/1,6.6.2 ARM中的向量中斷控制器,ARM中斷源與VIC的關(guān)系示意圖,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,71,2020/8/1,2.4.1 ARM7程序狀態(tài)寄存器(回顧),條件代碼標(biāo)志,保留,控制位,溢出標(biāo)志,進(jìn)位或借位擴(kuò)展,零,負(fù)或小于,IRQ禁止,FIQ禁止,狀態(tài)位,模式位,N,Z,C,V,I,T,F,CPSR寄存器,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,72,2020/8/1,6.6.2 ARM中的向量中斷控制器,習(xí)慣上將以IRQ異常方式傳遞、響應(yīng)的中斷稱之為“IRQ中斷”;以FIQ異常方式傳遞、響應(yīng)的中斷稱之為“FI

35、Q中斷”。 IRQ中斷又根據(jù)中斷服務(wù)程序入口地址的定位方式,被進(jìn)一步劃分為向量IRQ中斷和非向量IRQ中斷。,中斷,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,73,2020/8/1,6.6.3 ARM的中斷響應(yīng)過(guò)程,ARM的FIQ中斷、IRQ中斷是ARM的FIQ和IRQ兩種異常的特例,ARM使用對(duì) “異?!?響應(yīng)處理的方法響應(yīng)處理FIQ、IRQ中斷。,FIQ異常響應(yīng)的服務(wù)入口地址固定為:0 x0000 001C; IRQ異常響應(yīng)的服務(wù)入口地址固定為:0 x0000 0018;,通常系統(tǒng)中僅安排一個(gè)FIQ中斷源;因此, FIQ異常響應(yīng)的服務(wù)入口地址就是 “FIQ_ISR” 入口地址; IRQ中斷一般要對(duì)應(yīng)多個(gè)中

36、斷源,IRQ_ISR入口地址處理需要特殊處理;,ARM狀態(tài)各模式下的寄存器,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,75,2020/8/1,6.6.3 ARM的中斷響應(yīng)過(guò)程,ARM啟動(dòng)代碼的異常向量表部分:,0 x00 LDR PC, ResetAddr ;跳轉(zhuǎn)到ResetAddr單元 0 x04 LDR PC, UndefinedAddr 0 x08 LDR PC, SWI_Addr 0 x0C LDR PC, PrefetchAddr 0 x10 LDR PC, DataAbortAddr 0 x14 DCD 0 xb9205f80 ; 用戶代碼有效性檢查碼 0 x18 LDR PC, PC, #-0

37、xff0 ; PC (PC) 0 xff0 0 x1C LDR PC, FIQ_Addr,地址 指令 注釋,備注:修改PC實(shí)質(zhì)上就是跳轉(zhuǎn)。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,76,2020/8/1,6.6.3 ARM的中斷響應(yīng)過(guò)程,ARM啟動(dòng)代碼的異常向量表部分:,0 x18 LDR PC, PC, #0 xff0 ; PC (PC) 0 xff0 0 x1C LDR PC, FIQ_Addr,地址 指令 注釋,IRQ異常入口指令 LDR PC, PC,#-0 xff0 執(zhí)行的效果分析:,1、這條指令的地址是 0 x18,執(zhí)行該指令時(shí) PC=0 x20; 2、執(zhí)行的結(jié)果為 PC=0 x20 0 xff

38、0 = 0 xffff f030; 3、 0 xffff f030 恰是 VICVectAddr 寄存器的地址;,結(jié)論:ARM處理器響應(yīng)IRQ異常時(shí),固定按 VICVectAddr寄存器間接轉(zhuǎn)移!,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,77,2020/8/1,6.6.3 ARM的中斷響應(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 寄存器。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,78,2020/8/1,6.6.4 ARM的中斷返回,在處理

39、完中斷后,要從ISR返回到主程序斷點(diǎn)處繼續(xù)執(zhí)行。,有兩個(gè)關(guān)鍵內(nèi)容:,1、斷點(diǎn)的精確定位; 2、斷點(diǎn)處的處理器工作現(xiàn)場(chǎng);,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,79,2020/8/1,6.6.4 ARM的中斷返回,回憶 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#0 x04; 使用指令:SUBS PC, R14 , #4 返回主程序。,2、斷點(diǎn)處的處理器工作現(xiàn)場(chǎng);(R0R12

40、),西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,80,2020/8/1,6.6.5 ARM的外中斷,ARM系統(tǒng)的外中斷資源主要用于其他外部隨機(jī)事件到系統(tǒng)的引入;當(dāng)這些事件發(fā)生時(shí),外部其他電路將對(duì)應(yīng)的物理事件轉(zhuǎn)換成電信號(hào),處理器能及時(shí)響應(yīng)、處理這些事件。,ARM是通過(guò)管腳(EINTx)輸入符合要求的信號(hào)而觸發(fā)外中斷 。信號(hào)方式有 4種,用戶可編程約定:,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,81,2020/8/1,6.6.5 ARM的外中斷-信號(hào)方式 應(yīng)用中的注意事項(xiàng),1、邊沿有效外中斷,2、電平有效外中斷,要注意EINT信號(hào)的清除;保證每次中斷,響應(yīng)且僅響應(yīng)一次。,6.6.5 ARM的外中斷-相關(guān)寄存器,硬件系統(tǒng)使用5個(gè)寄

41、存器 -用于外中斷控制。這 5個(gè) 寄存器構(gòu)成了ARM外中斷資源的系統(tǒng)(編程、控制)模型。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,83,2020/8/1,6.6.5 ARM的外中斷-相關(guān)寄存器,EXTINT - 外部中斷標(biāo)志寄存器,比特EINT3:0分別用于標(biāo)示對(duì)應(yīng)的4個(gè)中斷輸入; 當(dāng)對(duì)應(yīng)的輸入端有有效輸入信號(hào)時(shí),相應(yīng)的比特置1,通過(guò)VIC向處理器申請(qǐng)中斷; 向EINT3:0按位寫(xiě)入1清零對(duì)應(yīng)位。,注意:電平方式EINT的清除;清0時(shí)不要影響其它位。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,84,2020/8/1,6.6.5 ARM的外中斷-相關(guān)寄存器,EXTMODE - 外部中斷方式寄存器,EXTMODE3:0位分別用

42、來(lái)選擇對(duì)應(yīng)的EINT3EINT0腳觸發(fā)信號(hào)方式是電平或邊沿。1- 沿方式;0- 電平方式 。 建議 “讀修改寫(xiě)” 方式操作EXTMOD寄存器 ;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,85,2020/8/1,6.6.5 ARM的外中斷-相關(guān)寄存器,EXTPOLAR -外部中斷極性寄存器,EXTPOLAR3:0位分別用來(lái)選擇對(duì)應(yīng)的EINT3EINT0腳觸發(fā)信號(hào)的極性 。 1- 上升沿/高電平方式;0- 下降沿/低電平方式 。 建議 “讀修改寫(xiě)” 方式操作EXTPOLAR寄存器 ;,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,86,2020/8/1,6.6.5 ARM的外中斷-應(yīng)用舉例,要求:用一個(gè)按鍵模擬一個(gè)外中斷觸發(fā),用蜂

43、鳴器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。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,87,2020/8/1,6.6.5 ARM的外中斷-應(yīng)用舉例,P0.16管腳用作EINT0,連接開(kāi)關(guān)Key,信號(hào)方式設(shè)置為低電平有效; P0.7管腳用作GPIO功能,輸出屬性連接Beep。,設(shè)計(jì)分析,6.6.5 ARM的外中斷-應(yīng)用舉例C代碼程序清單,int main (void) PINSEL0 = 0 x00000000;

44、 /* 設(shè)置P015:0為GPIO */ PINSEL1 = 0 x00000001; /* 設(shè)P0.16為EINT0 */ IO0DIR = BEEP; /* 設(shè)置P0.7為輸出,其余輸入 */ EXTMODE = 0 x00; /* 設(shè)置EINT0為電平觸發(fā) */ EXTPOLAR = 0 x00; /* 極性寄存器-低電平有效 */ IO0CLR = BEEP; /* Beep 初始態(tài)為靜音 */ IRQEnable( ); /* 使能IRQ中斷 */ /* 打開(kāi)EINT0中斷(使用非向量中斷) */ VICIntSelect = 0 x00000000; /* 設(shè)置中斷為IRQ中斷 *

45、/ VICDefVectAddr = (int)IRQ_Eint0; /* 裝載中斷服務(wù)程序地址 */ EXTINT = 0 x01; /* 清除EINT0中斷標(biāo)志 */ VICIntEnable = 1 0 x0e; /* 使能EINT0中斷 */ while (1); /* 等待中斷 */ return (0); ,6.6.5 ARM的外中斷-應(yīng)用舉例C代碼程序清單,#include config.h #define BEEP 1 7 /* P0.7控制BEEP,低電平蜂鳴 */ void _irq IRQ_Eint0 (void) /* EINT0_ISR */ uint32 i; i

46、= IO0PIN; /* 讀取當(dāng)前BEEP的控制值 */ if (i /* 向量中斷結(jié)束 */ ,6.6.5 ARM的外中斷-應(yīng)用舉例ASM程序清單,BEEP equ 0 x80; P0.7 管腳接 BEEP,低電平鳴響 CODE32 AREA Example , CODE , READONLY ENTRY ;中斷向量表 Reset LDR PC, ResetAddr LDR PC, UndefinedAddr LDR PC, SWI_Addr LDR PC, PrefetchAddr LDR PC, DataAbortAddr DCD 0 xb9205f80 LDR PC, PC, #-0

47、xff0 LDR PC, FIQ_Addr,備注:關(guān)注藍(lán)色指令行。,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,91,2020/8/1,6.6.5 ARM的外中斷-應(yīng)用舉例ASM程序清單,; 中斷向量表文字池 ResetAddr DCD ResetInit UndefinedAddr DCD Undefined SWI_Addr DCD SoftwareInterrupt PrefetchAddr DCD PrefetchAbort DataAbortAddr DCD DataAbort Nouse DCD 0 IRQ_Addr DCD 0 FIQ_Addr DCD FIQ_Handler,西安郵電學(xué)院 計(jì)算機(jī)

48、學(xué)院,92,2020/8/1,6.6.5 ARM的外中斷-應(yīng)用舉例ASM程序清單,ResetInit ;設(shè)置IRQ中斷模式堆棧 msr CPSR_c , #0 xd2 ldr SP , =0 x40000500 ;設(shè)置管理模式堆棧 msr CPSR_c , #0 xd3 ldr SP , =0 x40000800 ldr r0 , =PINSEL0 mov r4 , #0 x00 str r4 , r0; P015:0 管腳用作GPIO,西安郵電學(xué)院 計(jì)算機(jī)學(xué)院,93,2020/8/1,6.6.5 ARM的外中斷-應(yīng)用舉例ASM程序清單,ldr r0 , =PINSEL1 mov r4 , #0 x01; P0.16用作外中斷0 str r4 , r0 ldr r0 , =IO0DIR; P0.7管腳用作輸出 mov r4 , #BEEP str r4 , r0 ldr r0 , =IO0SET; 初始態(tài)BEEP靜音 mov r4 , #BEEP str r4 , r0 ldr r0 , =EXTM

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論