




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁S3C2440外部按鍵中斷解析學(xué)習(xí)bootloader制作的過程中,學(xué)到“通過按鍵進(jìn)入中斷控制LED亮滅”的實驗時,自己所用的開發(fā)板和視頻講解中的不同,于是琢磨了一下中斷涉及到的各個寄存器,并進(jìn)行編碼嘗試,最終完成了實驗,達(dá)到了通過按鍵以中斷方式控制LED亮滅的目的。2440屬于非向量中斷方式,和6410、210的向量中斷方式對于中斷的處理有一些不同,因此本文的講解并不完全適合6410和210。
一、概念
中斷分為兩大類:外部中斷和內(nèi)部中斷。
1、外部中斷:S3C2440的24個外部中斷占用GPF0~GPF7(EINT0~EINT7)、GPG0~GPG15(EINT8~EINT23)。使用這些引腳作為中斷輸入時,必須將引腳配置為EINT模式,配置方法可參考datasheet。
2、內(nèi)部中斷:內(nèi)部中斷包括DMA中斷、UART中斷、IIC中斷等等由內(nèi)部外設(shè)觸發(fā)的中斷。
3、相關(guān)寄存器:S3C2440中斷控制涉及到10個寄存器--SRCPND、INTMOD、INTMSK、PRIORITY、INTPND、INTOFFSET、SUBSRCPND、INTSUBMSK、EINTMASK、EINTPEND,這10個寄存器的定義及其功能描述如下表一。對中斷的控制無外乎配置和處理這10個寄存器中的某幾個。
表一與S3C2440中斷相關(guān)的10個寄存器的信息4、各寄存器的關(guān)系(工作流程)。根據(jù)中斷源進(jìn)行分類,中斷的處理流程可用下圖1表示:圖1S3C2440中斷處理流程圖
由上圖1可知,S3C2440的中斷可分為四種情況:由外部中斷源(EINT0~EINT3)觸發(fā)的中斷、由外部中斷子中斷源(EINT4~EINT23)觸發(fā)的中斷、由內(nèi)部中斷源(內(nèi)部子中斷)觸發(fā)的中斷和由內(nèi)部中斷源(非子中斷)觸發(fā)的中斷。
5、中斷的開啟(中斷初始化,INTMOD和PRTORITY使用默認(rèn)值)
(a)如果是外部中斷(EINT0~EINT3)和內(nèi)部中斷(不帶子中斷),需設(shè)置INTMSK,讓它不屏蔽中斷即可;
(b)如果是帶子中斷的內(nèi)部中斷,需設(shè)置INTSUBMSK和INTMSK,讓它們不屏蔽中斷即可;
(c)如果是外部中斷(EINT4~EINT23),需設(shè)置EINTMASK和INTMSK,讓它們不屏蔽中斷即可;
注意:CPSR中的第7位I也需清除(在start.S中關(guān)閉了中斷,這一步是針對在bootloader設(shè)計中進(jìn)行EINT實驗時的操作)
6、中斷處理流程
(a)如果是外部中斷(EINT0~EINT3)和不帶子中斷的內(nèi)部中斷,發(fā)生中斷后SRCPND相應(yīng)位置1,如果沒有被INTMSK屏蔽,那么等待進(jìn)一步處理;
(b)如果是帶子中斷的內(nèi)部中斷,發(fā)生中斷后SUBSRCPND相應(yīng)位置1,如果沒有被INTSUBMSK屏蔽,則SRCPND相應(yīng)位置1,如果沒有被INTMSK屏蔽,那么等待進(jìn)一步處理;
(c)如果是外部中斷(EINT4~EINT23),發(fā)生中斷后EINTPEND相應(yīng)位置1,如果沒有被EINTMASK屏蔽,則SRCPND相應(yīng)位EINT4-7和EINT8~23置1,如果沒有被INTMSK屏蔽,那么等待進(jìn)一步處理;
三種中斷都等待進(jìn)一步處理了,接下來從SRCPND繼續(xù)往前看,看看INTMSK,如果中斷被屏蔽了,就不用說了(注意:快中斷也能被屏蔽)。如果沒有被屏蔽,那么會進(jìn)一步到INTMOD。如果是快中斷,那么直接出來,進(jìn)入FIQ(即CPU進(jìn)入快中斷模式處理)。如果是普通中斷,那么SRCPND可以有多位置1(FIQ只能有一個),這時就會經(jīng)過PRIORITY選出一個優(yōu)先級高的,然后根據(jù)選出的中斷把INTPND相應(yīng)位置1(注意:只能選出一個),進(jìn)入IRQ,讓CPU處理。
INTOFFSET寄存器用來表示INTPND中哪一位置1了,可以用來判斷請求中斷的中斷源,但是,對于外部中斷EINT4~EINT23是無法判斷的,如EINT4~EINT7中任何一個中斷源請求中斷,都會將INTOFFSET中的位EINT4_7置1,所以要判斷具體是哪個中斷源請求的中斷,可讀取EINTPEND中的值進(jìn)行判斷。
7、中斷的清除
(a)如果是外部中斷EINT0~EINT3和不帶子中斷的內(nèi)部中斷,只需清除SRCPND(注意:清除時對相應(yīng)位寫“1”);
(b)如果是帶子中斷的內(nèi)部中斷,需清除SRCPND和SUBSRCPND,注意先清除SUBSRCPND,再清除SRCPND。因為如果先清除SRCPND的話,在清除SUBSRCPND的過程中,SRCPND會以為又有中斷發(fā)生,又會置1,也就是說一次中斷會響應(yīng)兩次,所以必須先掐斷源頭,對它們同樣是寫“1”清除
(c)如果是外部中斷EINT4~EINT23,需清除EINTPEND和SRCPND(同樣注意順序),寫“1”清除。
二、按鍵中斷實驗1、所使用開發(fā)板的按鍵與芯片連接示意如下圖2,其中KEY1-->GPF4,KEY2-->GPF5,KEY3-->GPF6,KEY4-->GPF7。圖2按鍵與S3C2440連接示意
通過查閱s3c2440的datasheet可知,GPF4~GPF7對應(yīng)外部中斷EINT4~EINT7。所以對于中斷初始化,需設(shè)置寄存器EINTMASK和INTMSK,取消中斷屏蔽。中斷處理過程中,可通過閱讀EINTPEND寄存器的值判定觸發(fā)中斷的中斷源。中斷清除時,向EINTPEND和SRCPND中相應(yīng)位寫“1”,清除中斷(注意順序)。以下為實驗的源代碼:
/*interruptregistes*/#defineSRCPND(volatileunsignedlong*)0x4a000000//Interruptrequeststatus#defineINTMOD(volatileunsignedlong*)0x4a000004//Interruptmodecontrol#defineINTMSK(volatileunsignedlong*)0x4a000008//Interruptmaskcontrol#definePRIORITY(volatileunsignedlong*)0x4a00000c//IRQprioritycontrol#defineINTPND(volatileunsignedlong*)0x4a000010//Interruptrequeststatus#defineINTOFFSET(volatileunsignedlong*)0x4A000014//Interruptrequestsourceoffset#defineSUBSRCPND(volatileunsignedlong*)0x4A000018//Subsourcepending#defineINTSUBMSK(volatileunsignedlong*)0x4A00001c//Interruptsubmask#defineEINTMASK(volatileunsignedlong*)0x560000a4//Externalinterruptmaskregister#defineEINTPEND(volatileunsignedlong*)0x560000a8//Externalinterruptpendingregister/********************************************************************函數(shù)名稱:init_irq()*功能描述:中斷初始化(取消中斷屏蔽)*其他說明:按鍵中斷對應(yīng)的是外部中斷EINT4~7,所以設(shè)置EINTMASK、INTMSK*修改日期版本號修改人修改內(nèi)容**2023.12.5V1.0*******************************************************************/voidinit_irq(){*(EINTMASK)//取消EINT4~7的子中斷屏蔽(注意,這步必須在后面一步之前)*(INTMSK)//取消EINT4~7的中斷屏蔽/***清除CPSR寄存器中的第7位I(IRQdisable),因為在start.S中關(guān)閉了中斷****/__asm__("mrsr0,cpsrn""bicr0,r0,#0x80n""msrcpsr_c,r0n"::);}
/********************************************************************函數(shù)名稱:handle_int()*功能描述:中斷處理函數(shù)*其他說明:*修改日期版本號修改人修改內(nèi)容**2023.12.6V1.0*******************************************************************/voidhandle_int(){/*判斷產(chǎn)生中斷的中斷源*/unsignedlongvalue=*(INTOFFSET);unsignedlongvalue_offset=*(EINTPEND);//value_offset的值分別對應(yīng)EINT4~EINT7if(4==value)//value=4表明EINT4~EINT7請求中斷(這個條件不是必須的,可直接判斷value_offset){switch(value_offset){case0x00000010://EINT4-->k1led_on();break;case0x00000020://EINT5-->k2led_on();break;case0x00000040://EINT6-->k3led_off();break;case0x000000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文具及類似用品戰(zhàn)略市場規(guī)劃報告
- 自動絡(luò)筒機市場分析及競爭策略分析報告
- 包服務(wù)合同范本
- 企業(yè)股東股權(quán)合同范本
- 變更屬于合同范本
- 世界紅十字日紀(jì)念演講稿
- 中藥炮制工中級練習(xí)題及參考答案
- 少年兒童健康試題(附參考答案)
- 建筑制圖及識圖模擬習(xí)題及參考答案
- 《風(fēng)箏》大班教案
- 2023年株洲市石峰區(qū)網(wǎng)格員招聘筆試題庫及答案解析
- 數(shù)控機床的機械結(jié)構(gòu)-課件
- 古代希臘文明教學(xué)課件
- 《一生中愛》諧音歌詞
- 氬氣安全技術(shù)說明書MSDS
- 四年級數(shù)學(xué)下冊教案-練習(xí)一-北師大版
- 5G手機無線通訊濾波芯片產(chǎn)業(yè)化項目環(huán)境影響報告表
- 《對外援援助成套項目勘察設(shè)計取費標(biāo)準(zhǔn)內(nèi)部暫行規(guī)定(稿)》
- 通用反應(yīng)單元工藝
- 電飯煲的智能控制系統(tǒng)設(shè)計
- 儲罐玻璃鋼內(nèi)防腐
評論
0/150
提交評論