資源描述:
《arm嵌入式c編程標(biāo)準教程第四章s3c2410的中斷系統(tǒng)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第四章S3C2410的中斷系統(tǒng)S3C2410的中斷系統(tǒng)S3C2410的處理器中斷S3C2410的中斷控制S3C2410的中斷源S3C2410中斷控制專用寄存器S3C2410中斷控制程序編寫步驟本章實驗例程S3C2410的中斷系統(tǒng)S3C2410的處理器中斷S3C2410的中斷控制邏輯如圖,它可以處理56個中斷源的中斷請求。這些中斷源可以是來自片內(nèi)外設(shè)的中斷,比如DMA、UART和I2C等;也可以是來自處理器外部中斷輸入引腳。S3C2410的中斷系統(tǒng)S3C2410的處理器中斷下面的11個中斷源通過分支中斷控制器來申請使用中斷INT_ADCA/D轉(zhuǎn)換中斷;INT_
2、TC觸摸屏中斷;INT_ERR2UART2收發(fā)錯誤中斷;INT_TXD2UART2發(fā)送中斷;INT_RXD2UART2接收中斷;INT_ERR1UART1收發(fā)錯誤中斷;INT_TXD1UART1發(fā)送中斷;INT_RXD1UART1接收中斷;INT_ERR0UART0收發(fā)錯誤中斷;INT_TXD0UART0發(fā)送中斷;INT_RXD0UART0接收中斷。S3C2410的中斷系統(tǒng)S3C2410的處理器中斷片內(nèi)UARTn中斷和EINTn是邏輯“或”的關(guān)系,它們共用一根中斷請求線。中斷控制邏輯(interruptioncontrollerlogic)的任務(wù)是在片內(nèi)外圍
3、和外部中斷源組成的多重中斷發(fā)生時,選擇其中一個中斷,通過FIQ(快速請求中斷)或IRQ(通用中斷請求)向CPU內(nèi)核發(fā)出中斷請求。S3C2410的中斷系統(tǒng)S3C2410的處理器中斷實際上最初CPU內(nèi)核只有FIQ和IRQ兩種中斷,其他中斷都是各個芯片廠家在設(shè)計芯片時,通過加入一個中斷控制器來擴展定義的。這些中斷根據(jù)中斷優(yōu)先級的高低來進行處理,更符合實際應(yīng)用系統(tǒng)中要求提供多個中斷源的要求。例如,如果定義所有的中斷源為IRQ中斷(通過中斷模式寄存器設(shè)置),并且同時有10個中斷發(fā)出請求,那么這時可以通過讀中斷優(yōu)先級寄存器來確定哪一個中斷被優(yōu)先執(zhí)行S3C2410的中斷系
4、統(tǒng)S3C2410的處理器中斷當(dāng)多重中斷源請求中斷時,硬件優(yōu)先級邏輯會判斷哪一個中斷將被執(zhí)行;同時,硬件邏輯將會執(zhí)行位于0x18(或0x1C)地址處的指令,再由軟件編程識別各個中斷源,然后再根據(jù)中斷源跳轉(zhuǎn)到相應(yīng)的中斷處理程序S3C2410的中斷系統(tǒng)中斷控制4.2.1程序狀態(tài)寄存器的F位和I位4.2.2中斷模式(INTMOD)4.2.3中斷掛起寄存器(INTPND)和中斷源掛起寄存器(SRCPND)4.2.4中斷屏蔽寄存器(INTMSK)4.2.5中斷優(yōu)先寄存器(PRIORITY)S3C2410的中斷系統(tǒng)4.2.1程序狀態(tài)寄存器的F位和I位如果CPSR(程序狀態(tài)
5、寄存器)的F位被設(shè)置為1,那么CPU將不接受來自中斷控制器的FIQ(快速中斷請求);如果CPSR程序狀態(tài)寄存器的I位被設(shè)置為1,那么CPU將不接受來自中斷控制器的IRQ(通用中斷請求)。因此,為了使能FIQ和IRQ,必須先將CPSR程序狀態(tài)寄存器的F位和I位清零,并且中斷屏蔽寄存器INTMSK中相應(yīng)的位也要清零。在使用C語言編寫控制程序時,CPSR在程序中是不可見的。F位和I位清零可由中斷屏蔽寄存器INTMSK中相應(yīng)的位清零自動完成。S3C2410的中斷系統(tǒng)4.2.2中斷模式(INTMOD)S3C2410提供了兩種中斷模式,即FIQ(快速)模式和IRQ(通用
6、)模式。所有的中斷源在中斷請求時都要確定使用那一種中斷模式。INTMOD相應(yīng)位為0,選通用中斷模式;INTMOD相應(yīng)位為1,選快速中斷模式。上電或復(fù)位時INTMOD相應(yīng)位為0,默認選通用中斷模式。S3C2410的中斷系統(tǒng)4.2.3中斷掛起寄存器(INTPND)和中斷源掛起寄存器(SRCPND)S3C2410有兩個中斷掛起寄存器:中斷源掛起寄存器(SRCPND)和中斷掛起寄存器(INTPND)。這兩個寄存器用于指示對應(yīng)的中斷源和中斷是否被激活。當(dāng)中斷源請求中斷時,SRCPND寄存器的相應(yīng)位被置1;當(dāng)中斷被激活時,INTPND寄存器的相應(yīng)位被置1。S3C2410
7、的中斷系統(tǒng)4.2.3中斷掛起寄存器(INTPND)和中斷源掛起寄存器(SRCPND)如果屏蔽位被設(shè)置為1,則相應(yīng)的SRCPND位會被置1,而INTPND寄存器不會有變化;如果INTPND被置位,只要標(biāo)志I或標(biāo)志F被清零,就會執(zhí)行相應(yīng)的中斷服務(wù)子程序。在中斷服務(wù)子程序中要先向SRCPND中的相應(yīng)位寫1來清除掛起狀態(tài),再用同樣的方法來清除INTPND相應(yīng)位的掛起狀態(tài)。注意:可以通過INTPND=INTPND來實現(xiàn)清零,以避免寫入不正確的數(shù)據(jù)引起錯誤。S3C2410的中斷系統(tǒng)4.2.4中斷屏蔽寄存器(INTMSK)當(dāng)INTMSK寄存器的相應(yīng)位(屏蔽位)為1時,對應(yīng)
8、的中斷被禁止;當(dāng)INTMSK寄存器的屏蔽位為0時,則