版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、嵌入式技術(shù)應(yīng)用教程基于SC第章 作者: 日期:2 個(gè)人收集整理 勿做商業(yè)用途第五章 中斷中斷是指計(jì)算機(jī)在執(zhí)行程序的過程中,當(dāng)出現(xiàn)異常情況或特殊請(qǐng)求時(shí),計(jì)算機(jī)停止現(xiàn)行程序的運(yùn)行,轉(zhuǎn)向?qū)@些異常情況或特殊請(qǐng)求的處理,處理結(jié)束后再返回現(xiàn)行程序的間斷處,繼續(xù)執(zhí)行原程序.中斷是單片機(jī)或ARM實(shí)時(shí)地處理內(nèi)部或外部事件的一種機(jī)制。換言之,中斷可以作為ARM外圍設(shè)備與CPU之間的一種聯(lián)系或通信方式.S3C2410A中有56個(gè)中斷源,這些中斷源分別為:表 5.1中斷源具體描述INT_ADCADC EOC中斷和Touch中斷,INT_ADC/INT_TCINT_RTCRTC報(bào)警中斷INT_SPI1SPI1中斷IN
2、T_UART0通用異步收發(fā)器0的ERR(錯(cuò)誤)中斷、RXD和TXD中斷INT_UART1通用異步收發(fā)器1的ERR(錯(cuò)誤)中斷、RXD和TXD中斷INT_UART2通用異步收發(fā)器2的ERR(錯(cuò)誤)中斷、RXD和TXD中斷INT_USBHUSB主機(jī)中斷INT_USBDUSB設(shè)備中斷INT_SPI0SPI0中斷INT_SDISDI中斷INT_DMADMA03中斷INT_LCDLCD中斷INT_IICI2C中斷INT_TIMER定時(shí)器04中斷INT_WDT看門狗定時(shí)器中斷INT_TICKRTC實(shí)時(shí)時(shí)鐘節(jié)拍中斷nBATT_FLT電池錯(cuò)誤中斷EINT外部中斷023假如UART0的接收緩存收到了來自外部的數(shù)
3、據(jù),那么設(shè)備UART0要通知CPU已經(jīng)收到數(shù)據(jù),請(qǐng)示CPU進(jìn)行下一步工作。那么UART0要通過什么方式告知CPU收到數(shù)據(jù)了呢?設(shè)想一下,UART是通用異步收發(fā)器的英文縮寫,一般在ARM芯片與外部進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候并不是一直不斷地進(jìn)行數(shù)據(jù)交換,而是斷斷續(xù)續(xù)地進(jìn)行數(shù)據(jù)通信,那么CPU不可能一直監(jiān)視著UART設(shè)備。在UART設(shè)備不進(jìn)行數(shù)據(jù)收發(fā)時(shí),CPU可以去進(jìn)行別的程序處理。一旦UART設(shè)備需要和外部進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,比如收到了來自外部設(shè)備的一幀數(shù)據(jù),此時(shí)CPU還在進(jìn)行著別的程序處理,那么UART設(shè)備就要告知CPU收到數(shù)據(jù)了,需要對(duì)數(shù)據(jù)進(jìn)行處理,UART會(huì)通過中斷的方式通知CPU,打斷CPU正在進(jìn)
4、行的工作,讓CPU對(duì)UART收到的數(shù)據(jù)進(jìn)行處理。此時(shí)CPU收到UART的中斷通知,那么他會(huì)停下正在處理的工作,保存當(dāng)前的數(shù)據(jù),轉(zhuǎn)向UART的數(shù)據(jù)處理程序(UART中斷服務(wù)程序)對(duì)UART收到的數(shù)據(jù)進(jìn)行處理,處理完畢后如果沒有其他設(shè)備的中斷請(qǐng)求,CPU會(huì)跳轉(zhuǎn)回UART中斷之前的程序,調(diào)出中斷時(shí)保存的數(shù)據(jù)繼續(xù)運(yùn)行中斷之前的程序。S3C2410A是以ARM920T為內(nèi)核的ARM,ARM920T內(nèi)核有兩種中斷模式:FIQ和IRQ。IRQ全稱為Interrupt Request,即是“中斷請(qǐng)求”的意思。FIQ全稱為Fast Interrupt Request,即是“快速中斷請(qǐng)求”的意思。FIQ模式是特權(quán)
5、模式中的一種,同時(shí)也屬于異常模式一類。用于高速數(shù)據(jù)傳輸或通道處理,在觸發(fā)快速中斷請(qǐng)求(FIQ)時(shí)進(jìn)入。一般情況下,我們只用到IRQ而很少用到FIQ。5.1 S3C2410A中和中斷相關(guān)的寄存器1. SOURCE PENDIND REGISTER(SRCPND)這個(gè)寄存器名稱為中斷源掛起寄存器。該寄存器是32位寄存器,每一位都代表著相應(yīng)的中斷源是否發(fā)出中斷請(qǐng)求。當(dāng)其中某一位值為“1"時(shí),表明其相應(yīng)的中斷源發(fā)出了中斷請(qǐng)求,否則這個(gè)中斷源沒有發(fā)出中斷請(qǐng)求。比如,SRCPND10=1,則說明定時(shí)器0請(qǐng)求中斷.2. SUB SOURCE PENDING REGISTER(SUBSRCPND)這
6、個(gè)寄存器與SRCPND寄存器功能相同,只不過這個(gè)寄存器有效bit為11位.這個(gè)寄存器中主要是更細(xì)地列出了UART中具體的中斷類型。3。 INTERRUPT PENDING REGISTER(INTPND)這個(gè)寄存器名稱為中斷掛起寄存器。該寄存器為32位寄存器,每一位都代表著相應(yīng)的中斷源是否發(fā)出中斷請(qǐng)求.當(dāng)其中某一位值為“1"時(shí),表明其相應(yīng)的中斷源發(fā)出了中斷請(qǐng)求,否則這個(gè)中斷源沒有發(fā)出中斷請(qǐng)求.這個(gè)寄存器的每一位功能描述和寄存器SRCPND是相同的。4。 INTERRUPT MASK REGISTER(INTMSK)這個(gè)寄存器名稱為中斷屏蔽寄存器。該寄存器為32位寄存器,每一位都代表著
7、相應(yīng)的中斷源是否可用。當(dāng)其中某一位值為“1”時(shí),表明其相應(yīng)的中斷源被屏蔽掉了,反之相應(yīng)中斷源是可用的。下面對(duì)上述三個(gè)寄存器進(jìn)行說明。S3C2410A中有兩個(gè)中斷掛起寄存器分別為SRCPND和INTPND.這些寄存器指明了一個(gè)中斷是否要被進(jìn)行處理。當(dāng)中斷源請(qǐng)求中斷服務(wù)時(shí),SRCPND的相應(yīng)bit位會(huì)被置位,同時(shí)INTPND中僅有與SRCPND相對(duì)應(yīng)的一位數(shù)值在判決程序執(zhí)行后被置位。如果中斷被INTMSK寄存器所屏蔽,那么當(dāng)有中斷請(qǐng)求時(shí),SRCPND的相應(yīng)bit位會(huì)置位,而INTPND中與SRCPND相對(duì)應(yīng)的bit位不會(huì)發(fā)生變化。SRCPND和INTPND都是可讀寫的,在中斷服務(wù)程序中為了清除相應(yīng)
8、的中斷請(qǐng)求,需要向SRCPND的相應(yīng)bit位和INTPND的相應(yīng)bit位寫“1”,這樣就清除了中斷服務(wù)請(qǐng)求。(注:此處是向SRCPND和INTPND中寫“1”進(jìn)行清除操作,而不是寫“0”)另外,在中斷服務(wù)程序中,我們可以讀寄存器INTPND,看看其中哪一位被置位了(這個(gè)寄存器中的值同時(shí)只能有1bit被置位),就可以知道是哪個(gè)設(shè)備向CPU請(qǐng)求了中斷.5。 INTERRUPT SUB MASK REGISTER(INTSUBMSK)這個(gè)寄存器功能與INTMSK相同,這個(gè)寄存器主要用來屏蔽UART的具體中斷類型。6. INTERRUPT MODE REGISTER(INTMOD)這個(gè)寄存器名稱為中斷
9、模式寄存器。其相應(yīng)bit為“1”時(shí),按FIQ模式處理,否則按IRQ模式處理。注意,同時(shí)只能有一個(gè)中斷源按照FIQ模式處理,即INTMOD寄存器中只能有一個(gè)bit為“1”.7. INTERRUPT OFFSET REGISTER (INTOFFSET)這個(gè)寄存器名稱為中斷偏移量寄存器。這個(gè)寄存器說明了IRQ模式下,哪個(gè)中斷請(qǐng)求正在INTPND寄存器當(dāng)中.在清零SRCPND和INTPND之后,這個(gè)寄存器自動(dòng)清零。8. PRIORITY REGISTER (PRIORITY)此寄存器為中斷優(yōu)先級(jí)寄存器.在此處需要講述S3C2410A的中斷優(yōu)先級(jí)邏輯。圖5。1。1為S3C2410A的中斷優(yōu)先級(jí)產(chǎn)生模塊
10、.32個(gè)中斷請(qǐng)求的優(yōu)先級(jí)邏輯由7級(jí)判決器組成,其中有6個(gè)fisrt-level判決器和1個(gè)second-level判決器。每個(gè)中斷判決器基于1個(gè)bit模式控制(ARB_MODE)和2個(gè)bit選擇控制信號(hào)(ARB_SEL)來處理中斷請(qǐng)求。如圖5。1。1所示,從05六個(gè)判決器中生成REQ0REQ6六個(gè)中斷請(qǐng)求,再由判決器6生成最終的中斷請(qǐng)求.優(yōu)先級(jí)規(guī)則為:如果ARB_SEL為00,那么優(yōu)先級(jí)順序由高到低為REQ0、REQ1、REQ2、REQ3、REQ4、REQ5。如果ARB_SEL為01,那么優(yōu)先級(jí)順序由高到低為REQ0、REQ2、REQ3、REQ4、REQ1、REQ5.如果ARB_SEL為10,
11、那么優(yōu)先級(jí)順序由高到低為REQ0、REQ3、REQ4、REQ1、REQ2、REQ5.如果ARB_SEL為11,那么優(yōu)先級(jí)順序由高到低為REQ0、REQ4、REQ1、REQ2、REQ3、REQ5.注:判決器中REQ0永遠(yuǎn)是優(yōu)先級(jí)最高的,REQ5永遠(yuǎn)是優(yōu)先級(jí)最低的,改變ARB_SEL的值可以重新排列REQ1REQ5的優(yōu)先級(jí)次序。如果ARB_MODE被設(shè)置為“0”,那么ARB_SEL的值就不會(huì)自動(dòng)改變,則判決器會(huì)工作在固定優(yōu)先級(jí)的模式(我們可以手動(dòng)改變優(yōu)先級(jí))。如果ARB_MODE被設(shè)置為“1”,那么ARB_SEL就處于滾動(dòng)模式.例如:如果REQ1輸出請(qǐng)求,ARB_SEL就會(huì)自動(dòng)變?yōu)椤?1”,然后R
12、EQ1就會(huì)被放到最低優(yōu)先級(jí)REQ5的前面一級(jí)。ARB_SEL的變化規(guī)律為: 如果REQ0和REQ5輸出請(qǐng)求,則ARB_SEL保持不變; 如果REQ1輸出請(qǐng)求,則ARB_SEL變?yōu)?1; 如果REQ2輸出請(qǐng)求,則ARB_SEL變?yōu)?0; 如果REQ3輸出請(qǐng)求,則ARB_SEL變?yōu)?1; 如果REQ4輸出請(qǐng)求,則ARB_SEL變?yōu)?0;圖5。15.2 程序分析此程序用定時(shí)器中斷來控制兩個(gè)LED閃爍。定時(shí)器的內(nèi)容下一章再具體講述。1. 中斷初始化程序void Isr_Init(void) pISR_UNDEF = (unsigned)HaltUndef;/調(diào)試信息定義 pISR_SWI = (uns
13、igned)HaltSwi; /調(diào)試信息定義 pISR_PABORT = (unsigned)HaltPabort; /調(diào)試信息定義 pISR_DABORT = (unsigned)HaltDabort; /調(diào)試信息定義 rINTMOD = 0x0; rINTMSK = BIT_ALLMSK; rINTSUBMSK = BIT_SUB_ALLMSK;在程序中,調(diào)試信息定義不用去理睬,實(shí)際程序中沒有這些調(diào)試信息程序一樣能夠正常工作。有關(guān)中斷的寄存器定義全部都在文件2410ADDR。H中,讀者可以自行查閱。rINTMOD = 0x0;將INTMOD寄存器的所有值都設(shè)置為“0”,即全部中斷都是IRQ
14、中斷。rINTMSK = BIT_ALLMSK;將INTMSK寄存器的所有值都設(shè)置為“1",即屏蔽所有中斷。BIT_ALLMSK 在文件2410ADDR。S中有定義,BIT_ALLMSK= 0xffffffff。rINTSUBMSK = BIT_SUB_ALLMSK;將INTSUBMSK寄存器的所有值都設(shè)置為“1”,即屏蔽所有子中斷。BIT_SUB_ALLMSK在2410ADDR。H中進(jìn)行了定義,#define BIT_SUB_ALLMSK (0x7ff),即BIT_SUB_ALLMSK=0x7ff。2. 定時(shí)器中斷初始化void Timer1INT_Init(void) if ((
15、rINTPND BIT_TIMER1)/判斷是否有定時(shí)器1的中斷請(qǐng)求 rSRCPND = BIT_TIMER1; pISR_TIMER1 = (int)Timer1_ISR; rINTMSK = (BIT_TIMER1); /開中斷; BIT_TIMER1在文件2410ADDR.S中有定義,BIT_TIMER1= 0x1<11,rINTPND BIT_TIMER1就是判斷寄存器INTPND11是否為“1",也就是說程序要判斷定時(shí)器1是否發(fā)出中斷請(qǐng)求.如果有中斷請(qǐng)求,那么rSRCPND = BIT_TIMER1;即SRCPND11=1。pISR_TIMER1在文件2410ADDR
16、.S中有定義,它是定時(shí)器1中斷服務(wù)函數(shù)的入口,Timer1_ISR是中斷服務(wù)函數(shù),pISR_TIMER1 = (int)Timer1_ISR;就是將中斷服務(wù)函數(shù)的地址賦給定時(shí)器1中斷服務(wù)函數(shù)的入口.rINTMSK = (BIT_TIMER1);即INTPND11=0,開啟定時(shí)器1中斷.3. 中斷服務(wù)函數(shù)int flag;void _irq Timer1_ISR( void ) if (flag = 0) rGPGDAT = rGPGDAT 0xeff 0x200; flag = 1; else rGPGDAT = rGPGDAT 0xdff | 0x100; flag = 0; rSRCPND |= BIT_TIMER1;/清除中斷掛起條件 rINTPND |= BIT_TIMER1;/清除中斷掛起條件void _irq Timer1_ISR( void )為中斷服務(wù)函數(shù)的固定寫法,Timer1_ISR為中斷函數(shù)名,這個(gè)函數(shù)名可以根據(jù)不同的中斷加以修改。一旦
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度跨境電子商務(wù)平臺(tái)廣告服務(wù)合同4篇
- 2025年度水電工程設(shè)計(jì)與施工一體化合同匯編4篇
- 2025年度重型沖擊鉆施工工程合同4篇
- 2025年鮮蛋冷鏈配送與售后服務(wù)合同3篇
- 個(gè)人土地抵押貸款合同范本打印版(2024)一
- 2025年度智慧城市建設(shè)物業(yè)服務(wù)委托合同4篇
- 2025年度餐飲行業(yè)供應(yīng)鏈戰(zhàn)略合作框架協(xié)議3篇
- 教育技術(shù)在小學(xué)科學(xué)課題研究中的應(yīng)用與發(fā)展
- 個(gè)人借款轉(zhuǎn)讓協(xié)議簡(jiǎn)明示例版
- 2025年度個(gè)人租賃房屋租賃合同違約責(zé)任及處理協(xié)議4篇
- 人教版物理八年級(jí)下冊(cè) 專項(xiàng)訓(xùn)練卷 (一)力、運(yùn)動(dòng)和力(含答案)
- 山東省房屋市政工程安全監(jiān)督機(jī)構(gòu)人員業(yè)務(wù)能力考試題庫(kù)-中(多選題)
- 重慶市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2024年中考語文滿分作文6篇(含題目)
- 北師大版 2024-2025學(xué)年四年級(jí)數(shù)學(xué)上冊(cè)典型例題系列第三單元:行程問題“拓展型”專項(xiàng)練習(xí)(原卷版+解析)
- 2023年譯林版英語五年級(jí)下冊(cè)Units-1-2單元測(cè)試卷-含答案
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
評(píng)論
0/150
提交評(píng)論