ARM嵌入式C編程標(biāo)準(zhǔn)教程第四章SC的中斷系統(tǒng)_第1頁(yè)
ARM嵌入式C編程標(biāo)準(zhǔn)教程第四章SC的中斷系統(tǒng)_第2頁(yè)
ARM嵌入式C編程標(biāo)準(zhǔn)教程第四章SC的中斷系統(tǒng)_第3頁(yè)
ARM嵌入式C編程標(biāo)準(zhǔn)教程第四章SC的中斷系統(tǒng)_第4頁(yè)
ARM嵌入式C編程標(biāo)準(zhǔn)教程第四章SC的中斷系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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)介

1、S3C2410的處理器中斷的處理器中斷S3C2410的中斷控制的中斷控制S3C2410的中斷源的中斷源S3C2410中斷控制專(zhuān)用寄存器中斷控制專(zhuān)用寄存器S3C2410中斷控制程序編寫(xiě)步驟中斷控制程序編寫(xiě)步驟本章實(shí)驗(yàn)例程本章實(shí)驗(yàn)例程S3C2410的處理器中斷的處理器中斷 S3C2410的中斷控制邏輯如圖,它可以處理56個(gè)中斷源的中斷請(qǐng)求。這些中斷源可以是來(lái)自片內(nèi)外設(shè)的中斷,比如DMA、UART和I2C等;也可以是來(lái)自處理器外部中斷輸入引腳。S3C2410的處理器中斷的處理器中斷 下面的11個(gè)中斷源通過(guò)分支中斷控制器來(lái)申請(qǐng)使用中斷 INT_ADC A/D轉(zhuǎn)換中斷;轉(zhuǎn)換中斷; INT_TC 觸摸屏中

2、斷;觸摸屏中斷; INT_ERR2 UART2收發(fā)錯(cuò)誤中斷;收發(fā)錯(cuò)誤中斷; INT_TXD2 UART2發(fā)送中斷;發(fā)送中斷; INT_RXD2 UART2接收中斷;接收中斷; INT_ERR1 UART1收發(fā)錯(cuò)誤中斷;收發(fā)錯(cuò)誤中斷; INT_TXD1 UART1發(fā)送中斷;發(fā)送中斷; INT_RXD1 UART1接收中斷;接收中斷; INT_ERR0 UART0收發(fā)錯(cuò)誤中斷;收發(fā)錯(cuò)誤中斷; INT_TXD0 UART0發(fā)送中斷;發(fā)送中斷; INT_RXD0 UART0接收中斷。接收中斷。S3C2410的處理器中斷的處理器中斷 片內(nèi)UARTn中斷和EINTn是邏輯“或”的關(guān)系,它們共用一根中斷請(qǐng)求

3、線。 中斷控制邏輯(interruption controller logic)的任務(wù)是在片內(nèi)外圍和外部中斷源組成的多重中斷發(fā)生時(shí),選擇其中一個(gè)中斷,通過(guò)FIQ(快速請(qǐng)求中斷)或IRQ(通用中斷請(qǐng)求)向CPU內(nèi)核發(fā)出中斷請(qǐng)求。S3C2410的處理器中斷的處理器中斷 實(shí)際上最初CPU內(nèi)核只有FIQ和IRQ兩種中斷,其他中斷都是各個(gè)芯片廠家在設(shè)計(jì)芯片時(shí),通過(guò)加入一個(gè)中斷控制器來(lái)擴(kuò)展定義的。這些中斷根據(jù)中斷優(yōu)先級(jí)的高低來(lái)進(jìn)行處理,更符合實(shí)際應(yīng)用系統(tǒng)中要求提供多個(gè)中斷源的要求。 例如,如果定義所有的中斷源為IRQ中斷(通過(guò)中斷模式寄存器設(shè)置),并且同時(shí)有10個(gè)中斷發(fā)出請(qǐng)求,那么這時(shí)可以通過(guò)讀中斷優(yōu)先級(jí)

4、寄存器來(lái)確定哪一個(gè)中斷被優(yōu)先執(zhí)行S3C2410的處理器中斷的處理器中斷 當(dāng)多重中斷源請(qǐng)求中斷時(shí),硬件優(yōu)先級(jí)邏輯會(huì)判斷哪一個(gè)中斷將被執(zhí)行;同時(shí),硬件邏輯將會(huì)執(zhí)行位于0 x18(或0 x1C)地址處的指令,再由軟件編程識(shí)別各個(gè)中斷源,然后再根據(jù)中斷源跳轉(zhuǎn)到相應(yīng)的中斷處理程序中斷控制中斷控制 程序狀態(tài)寄存器的程序狀態(tài)寄存器的F位和位和I位位 中斷模式(中斷模式(INTMOD) 中斷掛起寄存器(中斷掛起寄存器(INTPND)和中斷源掛起寄存器)和中斷源掛起寄存器 (SRCPND) 中斷屏蔽寄存器(中斷屏蔽寄存器(INTMSK) 中斷優(yōu)先寄存器中斷優(yōu)先寄存器 (PRIORITY)程序狀態(tài)寄存器的程序狀態(tài)

5、寄存器的F位和位和I位位 如果CPSR(程序狀態(tài)寄存器)的F位被設(shè)置為1,那么CPU將不接受來(lái)自中斷控制器的FIQ(快速中斷請(qǐng)求);如果CPSR程序狀態(tài)寄存器的I位被設(shè)置為1,那么CPU將不接受來(lái)自中斷控制器的IRQ(通用中斷請(qǐng)求)。因此,為了使能FIQ和IRQ,必須先將CPSR程序狀態(tài)寄存器的F位和I位清零,并且中斷屏蔽寄存器INTMSK中相應(yīng)的位也要清零。 在使用C語(yǔ)言編寫(xiě)控制程序時(shí),CPSR在程序中是不可見(jiàn)的。F位和I位清零可由中斷屏蔽寄存器INTMSK中相應(yīng)的位清零自動(dòng)完成。中斷模式(中斷模式(INTMOD) S3C2410提供了兩種中斷模式,即FIQ(快速)模式和IRQ(通用)模式。

6、所有的中斷源在中斷請(qǐng)求時(shí)都要確定使用那一種中斷模式。INTMOD相應(yīng)位為0,選通用中斷模式;INTMOD相應(yīng)位為1,選快速中斷模式。上電或復(fù)位時(shí)INTMOD相應(yīng)位為0,默認(rèn)選通用中斷模式。中斷掛起寄存器(中斷掛起寄存器(INTPND)和中斷源掛)和中斷源掛起寄存器起寄存器 (SRCPND) S3C2410有兩個(gè)中斷掛起寄存器:中斷源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND)。這兩個(gè)寄存器用于指示對(duì)應(yīng)的中斷源和中斷是否被激活。當(dāng)中斷源請(qǐng)求中斷時(shí),SRCPND寄存器的相應(yīng)位被置1;當(dāng)中斷被激活時(shí),INTPND寄存器的相應(yīng)位被置1。 中斷掛起寄存器(中斷掛起寄存器(INTPND)和中

7、斷源掛)和中斷源掛起寄存器起寄存器 (SRCPND) 如果屏蔽位被設(shè)置為1,則相應(yīng)的SRCPND位會(huì)被置1,而INTPND寄存器不會(huì)有變化;如果INTPND被置位,只要標(biāo)志I或標(biāo)志F被清零,就會(huì)執(zhí)行相應(yīng)的中斷服務(wù)子程序。在中斷服務(wù)子程序中要先向SRCPND中的相應(yīng)位寫(xiě)1來(lái)清除掛起狀態(tài),再用同樣的方法來(lái)清除INTPND相應(yīng)位的掛起狀態(tài)。 注意:可以通過(guò)INTPND= INTPND來(lái)實(shí)現(xiàn)清零,以避免寫(xiě)入不正確的數(shù)據(jù)引起錯(cuò)誤。中斷屏蔽寄存器(中斷屏蔽寄存器(INTMSK) 當(dāng)INTMSK寄存器的相應(yīng)位(屏蔽位)為1時(shí),對(duì)應(yīng)的中斷被禁止;當(dāng)INTMSK寄存器的屏蔽位為0時(shí),則相應(yīng)的中斷正常實(shí)行。如果一

8、個(gè)中斷的屏蔽位為1,則該中斷請(qǐng)求不被受理。中斷優(yōu)先寄存器中斷優(yōu)先寄存器 (PRIORITY) 上面已介紹過(guò),S3C2410共有56個(gè)中斷源,有26個(gè)中斷控制器,外部中斷EXTIN823共用一個(gè)中斷控制器,外部中斷EXTIN47共用一個(gè)中斷控制器,9個(gè)UART中斷分成3組,共用3個(gè)中斷控制器,ADC和觸摸屏共用一個(gè)中斷控制器。中斷的優(yōu)先級(jí)是由主組號(hào)和從ID號(hào)的級(jí)別控制,具體見(jiàn)表4-1。 中斷優(yōu)先級(jí)設(shè)置模塊如圖4-2所示:中斷優(yōu)先寄存器中斷優(yōu)先寄存器 (PRIORITY)從上圖可以看出,中斷優(yōu)先級(jí)產(chǎn)生模塊共有7個(gè)中斷仲裁器(AIRBITER0AIRBITER6),每個(gè)中斷仲裁器是否使能由寄存器PR

9、IORITY6:0決定,每個(gè)中斷仲裁器下面有46個(gè)中斷源,這些中斷源對(duì)應(yīng)著REQ0REQ5這6個(gè)優(yōu)先級(jí)。每個(gè)中斷仲裁器可以控制6個(gè)中斷請(qǐng)求的優(yōu)先順序(ARB_MODE),仲裁器和中斷請(qǐng)求的優(yōu)先順序如表4-1示:其中,REQ 0中斷優(yōu)先級(jí)總是最高的,REQ5中斷優(yōu)先級(jí)總是最低的。4.3 S3C2410中斷源中斷源 表4-2所示為S3C2410的56個(gè)中斷源。在56個(gè)中斷源中,有30個(gè)中斷源提供給中斷控制器,其中,外部中斷EINT4EINT7通過(guò)“或”的形式提供一個(gè)中斷源送至中斷控制器,EINT8EINT23也通過(guò)“或”的形式提供一個(gè)中斷源送至中斷控制器。 4.3 S3C2410中中 56個(gè)中斷源

10、具體來(lái)說(shuō): EINT0EINT23(24個(gè))、nBATT_FLT(1個(gè))、INT_TICK(1個(gè))、INT_WDT(1個(gè))、INT_TIMER0INT_TIMER4(5個(gè))、INT_UART0INT_UART2(各3個(gè),共9個(gè))、INT_LCD(2個(gè))、INT_DMA0INT_DMA3(4個(gè))、INT_SDI(1個(gè))、INT_SPI0INT_SPI1(2個(gè))、INT_USBD(1個(gè))、INT_USBH(1個(gè))、INT_IIC(1個(gè))、INT_RTC(1個(gè))、INT_ADC(2個(gè)),共56個(gè)。4.4 中斷控制專(zhuān)用寄存器中斷控制專(zhuān)用寄存器 在4.2節(jié)中已介紹中斷控制器有5個(gè),但S3C2410有8個(gè)

11、寄存器與中斷有關(guān),有5個(gè)專(zhuān)用于中斷控制:源掛起寄存器(SRCPND)、中斷模式寄存器(INTMOD)、中斷屏蔽寄存器(INTMSK)、中斷優(yōu)先權(quán)寄存器(PRIORITY)和中斷掛起寄存器(INTPND),與中斷有關(guān)的寄存器如表4-3所列。 中斷源發(fā)出的中斷請(qǐng)求首先被寄存在中斷源掛起寄存器(SRCPND)中,中斷模式寄存器INTMOD把中斷請(qǐng)求分為兩組:快速中斷請(qǐng)求(FIQ)和通用中斷請(qǐng)求(IRQ),中斷優(yōu)先權(quán)寄存器(PRIORITY)處理中斷的優(yōu)先級(jí)。偏移寄存器偏移寄存器(INTOFFSET) 除上面介紹的5個(gè)中斷控制寄存器以外,還有幾個(gè)寄存器與中斷控制有關(guān)。 中斷偏移寄存器INTOFFSET

12、給出IRQ模式的中斷請(qǐng)求中被響應(yīng)的中斷的地址(哪個(gè)IRQ模式的中斷請(qǐng)求被響應(yīng))。外部中斷控制寄存器外部中斷控制寄存器(EXTINTn) EXTINTn配置外部中斷的觸發(fā)類(lèi)型是電平觸發(fā)還是邊沿觸發(fā)以及觸發(fā)的極性。EXTINT2 :0的具體配置參考數(shù)據(jù)手冊(cè)。外部中斷屏蔽寄存器外部中斷屏蔽寄存器(EINTMASK) EINTMASK23:4分別對(duì)應(yīng)外部中斷234,該位等于1,對(duì)應(yīng)外部中斷被屏蔽;該位等于0,對(duì)應(yīng)外部中斷被使能,EINTMASK3 :0保留。4.5 中斷控制程序編寫(xiě)步驟中斷控制程序編寫(xiě)步驟 主程序工作主程序工作 中斷服務(wù)程序工作中斷服務(wù)程序工作 中斷服務(wù)程序示例中斷服務(wù)程序示例主程序工

13、作主程序工作 先清除中斷源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND),可用rSRCPND= rSRCPND和rINTPND=r INTPND來(lái)完成; 設(shè)中斷模式,這里使用通用中斷,rINTMOD=0 x00000000;因上電或復(fù)位時(shí)rINTMOD是清0的,這步也可以不做。主程序工作主程序工作 I/O口初始化,有些中斷源要通過(guò)I/O口向CPU申請(qǐng)中斷,如外部中斷0(EXTINT0)通過(guò)F口的GPF0、外部中斷11(EXTINT11)通過(guò)G口的GPG3向CPU申請(qǐng)中斷,此時(shí)兩個(gè)口的控制寄存器GPFCON和GPGCON的要設(shè)置成:GPFCON1:0=1,0;GPGCON7:6=1,

14、0。具體見(jiàn)下章I/O口介紹。 設(shè)中斷服務(wù)函數(shù)地址,S3C2410在2410addr.h中定義了40個(gè)宏,設(shè)置了系統(tǒng)支持的中斷服務(wù)函數(shù)的指針,設(shè)中斷服務(wù)函數(shù)地址就是把我們編寫(xiě)的中斷服務(wù)函數(shù)的地址(就是中斷服務(wù)函數(shù)的名字)賦予相應(yīng)的函數(shù)指針。函數(shù)指針定義如下:(見(jiàn)課本)主程序工作主程序工作 從上面可以看出,每個(gè)中斷源的中斷服務(wù)函數(shù)指針名是固定的:pISR+中斷源。 設(shè)中斷觸發(fā)方式,觸發(fā)方式有5種,有上升沿、下降沿、雙沿、低電平、高電平觸發(fā)方式,外部中斷觸發(fā)方式在外部中斷控制寄存器(EXTINTn)中設(shè)定。如EINT0觸發(fā)方式在EXTINT02:0 中設(shè)定,2:0=000低電平、001高電平、01X

15、下降沿、10X上升沿、11X雙沿觸發(fā),更詳細(xì)內(nèi)容見(jiàn)S3C2410.pdf.。 取消總中斷屏蔽和子中斷屏蔽,等待中斷,如下面實(shí)驗(yàn)例程通過(guò)rEINTMASK&=(111);rINTMASK&=(BIT_EINT0|BIT_EINT8_23);來(lái)實(shí)現(xiàn)。中斷服務(wù)程序工作中斷服務(wù)程序工作 在中斷服務(wù)程序中,先屏蔽中斷,防止其他中斷產(chǎn)生干擾我們中斷服務(wù)程序的執(zhí)行; 執(zhí)行中斷服務(wù)程序; 清中斷源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND); 取消總中斷屏蔽和子中斷屏蔽,等待新中斷產(chǎn)生; 中斷返回。中斷服務(wù)程序示例中斷服務(wù)程序示例 在主程序中,系統(tǒng)初始化后,程序進(jìn)入死循環(huán),等待中斷。同時(shí),初始化定時(shí)器1,設(shè)定時(shí)器中斷時(shí)間,當(dāng)設(shè)定時(shí)器定時(shí)時(shí)間到,產(chǎn)生中斷。 在北京精儀達(dá)盛科技公司EL-ARM830教學(xué)實(shí)驗(yàn)系統(tǒng)中,接有兩個(gè)LED發(fā)光管,兩個(gè)LED發(fā)光管的陰極分別接I/O口G的bit8和bit9,陽(yáng)極通過(guò)電阻接電源。 在中斷服務(wù)程序中,把LED1和LED2兩只發(fā)光管循環(huán)亮滅,每循環(huán)亮滅一次,說(shuō)明來(lái)一次中斷。關(guān)于定時(shí)器操作,可參考第十一章內(nèi)容。(程序見(jiàn)課本)第四章習(xí)題與練習(xí)第四章習(xí)題與練習(xí) 1,S3C2410的中斷模式有哪兩種? 2,S3C2410的中斷控制寄存器有幾個(gè),每個(gè)的作用是什么? 3,S3C2410的中斷源掛起寄存

溫馨提示

  • 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)論