中斷初始化相關(guān)知識重點(diǎn)講義_第1頁
中斷初始化相關(guān)知識重點(diǎn)講義_第2頁
中斷初始化相關(guān)知識重點(diǎn)講義_第3頁
中斷初始化相關(guān)知識重點(diǎn)講義_第4頁
中斷初始化相關(guān)知識重點(diǎn)講義_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1.InitPieVectTable():每個(gè)中斷都有自己的中斷向量,即每個(gè)中斷源都對應(yīng)著自己的中斷服務(wù)程序的入口地址,這些中斷向量連續(xù)存在于RAM中,就是整個(gè)系統(tǒng)的中斷向量表;Uint32 *Source = (void *) &PIE_RESERVED;中斷服務(wù)函數(shù)入口地址;取PIE_RESERVED地址,強(qiáng)制轉(zhuǎn)換為void*。換后的void*直接賦值給Uint32 *指針。這里要把PIE_RESERVED的首地址給指針Source,Source是Uint32型的,不能夠直接給地址的,需要類型轉(zhuǎn)換,在C語言里面指針強(qiáng)制轉(zhuǎn)換要求兩邊的類型要是一樣的,同時(shí)也指出了void類型是可以賦值

2、給任何類型的,所以這里用了(void*),其實(shí)也可改成(Uint32*)。Uint32 *Dest = (void *) &PieVectTable;中斷向量表extern struct PIE_VECT_TABLE PieVectTable;(Device.h)一共128個(gè)中斷,即128個(gè)中斷向量ID: EALLOW;for(i=0; i < 128; i+)*Dest+ = *Source;EDIS;把中斷入口地址送給中斷向量表,達(dá)到關(guān)聯(lián)的目的;#define EALLOW asm(" EALLOW")#define EDIS asm(" EDI

3、S") (Device.h)EALLOW是指允許對受保護(hù)的寄存器操作,通常和EDIS配套使用,EDIS是指恢復(fù)被保護(hù)寄存器的狀態(tài),只有執(zhí)行了EALLOW命令之后才能對受保護(hù)的寄存器操作。PieCtrlRegs.PIECTRL.bit.ENPIE = 1;使能中斷向量表。2.InitPieCtrl(): DINT;關(guān)閉CPU總中斷; #define DINT asm(" setc INTM") ( Device.h) PieCtrlRegs.PIECTRL.bit.ENPIE = 0; 關(guān)閉PIE模塊總中斷。關(guān)閉所有PIE模塊的中斷: PieCtrlRegs.PIE

4、IERn.all = 0;(n=012)清除所有中斷標(biāo)志位: PieCtrlRegs.PIEIFRn.all = 0;(n=0.12)對于不可屏蔽中斷來說,它直接進(jìn)入CPU級。對于可屏蔽中斷來說,PIE模塊有相關(guān)的標(biāo)志寄存器(PIEIFRx和PIEIERx)(x=1.12)每一個(gè)位設(shè)為y(y=1.8)當(dāng)有中斷請求進(jìn)入PIE控制器的時(shí)候,相關(guān)的PIE中斷標(biāo)志位PIEIFRx.y置高。如果PIE中斷允許位PIEIERx.y也置高的時(shí)候,PIE控制器機(jī)會(huì)檢查PIEACKx標(biāo)志位來決定CPU是否已經(jīng)準(zhǔn)備好接收這個(gè)PIE中斷組的中斷。如果PIEACKZx被清零了,那么PIE會(huì)把這個(gè)中斷請求送到CPU;如

5、果PIEACKx位置1,那么PIE就會(huì)等待直到這個(gè)標(biāo)志位清零然后發(fā)送中斷請求給CPU級的INTx。一旦中斷請求到達(dá)CPU級,CPU級和INTx相對應(yīng)的中斷標(biāo)志位(IFR)置1,如果CPU中斷允許寄存器(IER)或者調(diào)試中斷允許寄存器(DBGIER)和全局中斷屏蔽位(INTM)允許的話,CPU才會(huì)執(zhí)行這個(gè)中斷申請IER:CPU中斷使能寄存器;extern cregister volatile unsigned int IER; (Device.h)CPU中斷使能寄存器是一個(gè)16位的CPU寄存器,包含可屏蔽CPU中斷(INT1-INT12,DLOGINT和RTOSINT中斷)的使能位。IFR:CP

6、U中斷標(biāo)志寄存器;extern cregister volatile unsigned int IFR;(Device.h)15: RTOSINT 實(shí)時(shí)操作系統(tǒng)標(biāo)志位;:0:已處理完成所有RTOS中斷;1:至少一個(gè)RTOS中斷未執(zhí)行,向該位寫0可以清除中斷請求;14: DLOGINT 數(shù)據(jù)記錄中斷標(biāo)志位;1:至少有一個(gè)DLOGINT中斷未被執(zhí)行,向該位寫0可以清除中斷請求;0:沒有DLOGINT中斷;13-0: INTx 中斷x標(biāo)志位;1:至少有一個(gè)INTx中斷未被執(zhí)行,向該位寫0可以清除中斷請求;0:沒有INTx中斷;EINT: #define EINT asm(" clrc IN

7、TM") ( Device.h)使能CPU中斷;INTM只是個(gè)位不是寄存器,編程中不會(huì)出現(xiàn),由硬件控制,同時(shí)其清除也在中斷程序執(zhí)行完后由硬件自動(dòng)清除。判斷INTM是否為0. 如果為0,CPU保存當(dāng)前工作狀態(tài)經(jīng)過9個(gè)周期后開始執(zhí)行中斷。如過INTM為1,則只有等待。一般INTM為1,說CPU正在處理別的中斷INTM Bit 0:中斷全局屏蔽位。此位從全局上使能或禁止所有可屏蔽CPU中斷(那些可由軟件阻止的中斷): 0 可屏蔽中斷被全局使能。為了被CPU認(rèn)可,則可屏蔽中斷也必須被中斷使能寄存器(IER)局部使能。1 可屏蔽中斷被全局禁止。

8、即使一個(gè)可屏蔽中斷被IER局部使能,也不會(huì)被CPU認(rèn)可。   INTM對非可屏蔽中斷沒有影響,包括硬件復(fù)位或軟件復(fù)位中斷NMI。此外,當(dāng)CPU在實(shí)時(shí)仿真模式下被停止時(shí),由IER和DBGIER使能的中斷將被響應(yīng),即使INTM設(shè)置為禁止可屏蔽中斷。   當(dāng)CPU響應(yīng)中斷時(shí),INTM的當(dāng)前值存儲到堆棧中(當(dāng)ST1存儲在堆棧中時(shí)),然后INTM置位。當(dāng)由中斷返回時(shí),INTM由堆棧中恢復(fù)。此位可分別由SETC INTM指令和CLRC INTM指令復(fù)位和清零。復(fù)位時(shí),INTM置位。INTM的值不會(huì)引起中斷標(biāo)志寄存器(IFR)、

9、中斷使能寄存器(IER)或調(diào)試中斷使能寄存器(DBGIER)的改變ERTM: #define ERTM asm(" clrc DBGM") ( Device.h)DRTM:#define DRTM asm(" setc DBGM") ( Device.h)DBGM Bit 1:調(diào)試啟用屏蔽位。當(dāng)DBGM置位時(shí),仿真器無法在實(shí)時(shí)狀態(tài)下訪問內(nèi)存或寄存器。調(diào)試器無法更新其窗口。     在實(shí)時(shí)調(diào)試模式中,若DBGM = 1,則CPU忽略停止請求或硬件斷點(diǎn),直到DBGM清零

10、。DBGM并不阻止CPU停止在軟件斷點(diǎn)。這點(diǎn)的一個(gè)影響可以在實(shí)時(shí)調(diào)試模式中看到。如果你在實(shí)時(shí)調(diào)試模式中單步執(zhí)行一個(gè)指令,并且這條指令置位DBGM,CPU繼續(xù)執(zhí)行指令,直到DBGM被清零。     當(dāng)你給TI調(diào)試器“實(shí)時(shí)”命令時(shí)(進(jìn)入實(shí)時(shí)模式),DBGM強(qiáng)制為0。令DBGM = 0確保了允許調(diào)試和測試直接內(nèi)存訪問 (DT-DMAs);內(nèi)存和寄存器的值可傳遞到主處理器,用于更新調(diào)試器窗口。 CPU在執(zhí)行中斷服務(wù)程序(ISR)之前將DBGM置位。當(dāng)DBGM = 1時(shí),來自主處理器和硬件斷點(diǎn)的

11、停止請求被忽略。如果你想要單步執(zhí)行程序或在對時(shí)間要求不嚴(yán)格的ISR中設(shè)置斷點(diǎn),那么你必須在ISR的開始處增加一條CLRC DBGM指令。 DBGM主要用在時(shí)間要求嚴(yán)格的程序代碼部分的仿真,來阻止調(diào)試事件。DBGM使能或禁止調(diào)試事件,如下: 0   調(diào)試事件使能。 1   調(diào)試事件禁止。     當(dāng)CPU響應(yīng)中斷時(shí),DBGM的當(dāng)前值存儲到堆棧中(當(dāng)ST1存儲在堆棧中時(shí)),然后DBGM置位。當(dāng)由中斷返回時(shí),DBGM由堆棧中恢復(fù)。  

12、;   此位可分別由SETC DBGM指令和CLRC DBGM指令復(fù)位和清零。DBGM在中斷操作期間被自動(dòng)置位。復(fù)位時(shí),DBGM置位。執(zhí)行ABORTI (中止中斷)指令也可以將DBGM置位3.DSP28335外部中斷流程可表示為:外設(shè)中斷標(biāo)志產(chǎn)生外設(shè)中斷使能PIEx IFR置位PIExIER使能判斷PIExACKIFR置位IER使能判斷INTM位CPU執(zhí)行中斷程序3.中斷總結(jié): C28XX一共有16個(gè)中斷源,其中有2個(gè)不可屏蔽的中斷RESET和NMI、定時(shí)器1和定時(shí)器2分別使用中斷13和14。這樣還有12個(gè)中斷都直接連接到外設(shè)中斷擴(kuò)展

13、模塊PIE上。說的簡單一點(diǎn)就是PIE通過12根線與28335核的12個(gè)中斷線相連。而PIE的另外一側(cè)有12*8根線分別連接到外設(shè),如AD、SPI、EXINT等等。這樣PIE共管理12*8=96個(gè)外部中斷。這12組大中斷由28335核的中斷寄存器IER來控制,即IER確定每個(gè)中斷到底屬于哪一組大中斷(如IER |= M_INT12;說明我們要用第12組的中斷,但是第12組里面的什么中斷CPU并不知道需要再由PIEIER確定 )。接下來再由PIE模塊中的寄存器PIEIER中的低8位確定該中斷是這一組的第幾個(gè)中斷,這些配置都要告訴CPU(我們不難想象到PIEIER共有12總即從PIEIER1-PIEIER12)。另外,PIE模塊還有中斷標(biāo)志寄存器PIEIFR,同樣它的低8位是來自外部中斷的8個(gè)標(biāo)志位,同樣CPU的IFR寄存器是中斷組的標(biāo)志寄存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論