嵌入式實(shí)踐試驗(yàn)05中斷_第1頁(yè)
嵌入式實(shí)踐試驗(yàn)05中斷_第2頁(yè)
嵌入式實(shí)踐試驗(yàn)05中斷_第3頁(yè)
嵌入式實(shí)踐試驗(yàn)05中斷_第4頁(yè)
嵌入式實(shí)踐試驗(yàn)05中斷_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

?當(dāng)按下按鈕SB1202時(shí),LED的D1204閃爍n?當(dāng)按下按鈕SB1203時(shí),LED的D1205閃爍n?其中,閃爍是指點(diǎn)亮1秒,延時(shí)1秒,然后再熄滅,再延時(shí)1?假設(shè):delay(10000)為延時(shí)1四、1ARMS3C44B0X30DMA、UART、SIO等這樣的內(nèi)部或外部引腳。在這些中斷源中,有4個(gè)外部中斷(EINT4/5/6/7)是邏輯或的關(guān)系,它們共用一條中斷請(qǐng)求線。UART0UART1的錯(cuò)誤中斷也是邏輯或的關(guān)系。FIQIRQARM7TDMI實(shí)際上最初ARM7TDMIFIQ(快速中斷請(qǐng)求)IRQ(通用中斷請(qǐng)求)兩種中斷,其它中斷都是各個(gè)廠家在設(shè)計(jì)時(shí)定義的,這些中斷根據(jù)中斷的優(yōu)先級(jí)高低來(lái)進(jìn)行處理。例如,IRQ中斷(通過(guò)中斷模式寄存器設(shè)置10個(gè)中斷發(fā)出請(qǐng)求,S3C44B0XCISC結(jié)構(gòu)微控制器的特征,能夠降S3C44B0X的中斷控制器硬件本身直接提供了對(duì)向量中斷服務(wù)的支持。0X18(0X1C)地址到各個(gè)中斷源向量地址的跳轉(zhuǎn)指令,然后再由中斷源向量進(jìn)入到相應(yīng)的中FICPSRF1CPUFIQ(中斷請(qǐng)求),CPSRI1CPU將不接受來(lái)自中斷控制器的(中斷請(qǐng)求)。因此,為了使能FIQ和IRQ,必須先將CPSR程序狀態(tài)寄存器的F位和I位,并且中斷寄存器INTMSK中相應(yīng)的位也要。中斷模式ARM7TDMI2種中斷模式,F(xiàn)IQIRQ模式。所有的中斷源在中斷請(qǐng)求時(shí)都要確定用于指示對(duì)應(yīng)的中斷是否被激活。如果掛起位被設(shè)置為1,那么無(wú)論標(biāo)志I或標(biāo)志F是否被,I_ISPCF_ISPC1的操作來(lái)清除掛起條件。中斷寄存器當(dāng)INTMSK寄存器的位為1時(shí),對(duì)應(yīng)的中斷被;當(dāng)INTMSK寄存器的位為0時(shí),則對(duì)應(yīng)的中斷正常執(zhí)行。如果一個(gè)中斷的位為1,在該中斷發(fā)出請(qǐng)求時(shí)掛起位還是會(huì)被設(shè)置為1。如果中斷寄存器的global位設(shè)置為1,那么中斷掛起位在中斷請(qǐng)求時(shí)還會(huì)被設(shè)置但所有的中斷請(qǐng)求S3C44B0X30個(gè)中斷源中,有26個(gè)中斷源提供給中斷控制器,其中4個(gè)外部中斷(EINT4/5/6/7)通過(guò)“或”的形式提供一個(gè)中斷源送至中斷控制器,2個(gè)URAT錯(cuò)誤中斷(UERROR0/1)也是如此。4-14S3C44B0X向量中斷模式(僅針對(duì)S3C44B0X含有向量中斷模式,可以減少中斷的反應(yīng)時(shí)間。通常情況下ARM7TDMI內(nèi)核收到中斷控制器的IRQ中斷請(qǐng)求,ARM7TDMI會(huì)在0X ARM7TDMI從0X 由中斷控制器產(chǎn)生。例如,假設(shè)EINT0是IRQ中斷,如表4-15所示,EINT0的向量地址為0X20,所以中斷控制器必須產(chǎn)生從0X18到0X20的分支指令。因此,中斷控制器產(chǎn)生的機(jī)器碼為0xea000000.在各個(gè)中向量中斷模式的指令機(jī)器代碼=0xea000000目標(biāo)地址向量地址例如,如果Timer0中斷采用向量中斷模式,則跳轉(zhuǎn)到對(duì)應(yīng)中斷服務(wù)程序的分支指令應(yīng)該存放在向量地址0x 處。中斷服務(wù)程序的起始地址在0x10000,下面就是計(jì)算出來(lái)放在0x60處machinecode@0x :0xea000000+((0x10000-0x60-0x8)>>2)=0xea000000+0x3fe6=0xea003fe64-15bbResetHandler/*fordebugbHandlerUndef/*handlerUndefbHandlerSWI/*SWIinterrupthandler*/bHandlerPabort/*handlerPAbort*/bHandlerDabort/*handlerDAbortb./*ldrpc,=HandlerIRQbHandlerFIQldrpc,=HandlerEINT0/*mGA0x20H/Winterruptvectortable*/ldrpc,=HandlerEINT1/**/ldrpc,=HandlerEINT2/**/ldrpc,=HandlerEINT3/*ldrpc,=HandlerEINT4567/*ldrpc,=HandlerTICK/*mGA0x34*/b.bldrpc,=HandlerZDMA0/*mGB0x40*/ldrpc,=HandlerZDMA1/**/ldrpc,=HandlerBDMA0/**/ldrpc,=HandlerBDMA1/**/ldrpc,=HandlerWDT/**/ldrpc,=HandlerUERR01/*mGB0x54bbbldrpc,=HandlerTIMER0/*mGC0x60*/ldrpc,=HandlerTIMER1/**/ldrpc,=HandlerTIMER2/**/ldrpc,=HandlerTIMER3/**/ldrpc,=HandlerTIMER4/*ldrpc,=HandlerTIMER5/*mGC0x74*/b.bldrpc,=HandlerURXD0/*mGD0x80*/ldrpc,=HandlerURXD1/**/ldrpc,=HandlerIIC/**/ldrpc,=HandlerSIO/**/ldrpc,=HandlerUTXD0/*ldrpc,=HandlerUTXD1/*mGD0x94*/b.bldrpc,=HandlerRTC/*mGKA0xa0*/b./**/b./**/b./**/b./*b./*mGKA0xb4*/b.bldrpc,=HandlerADC/*mGKB0xc0中斷控制寄存注意:FIQ模式不支持向量中斷模式。從表中可以看出,INTCON寄存器中位[0]----為FIQ中斷使能位,寫入0就使能FIQ中斷;位[1]----為IRQ中斷使能位,寫入0就使能IRQ位[2]IRQ中斷為向量中斷模式(V=0)還是普通模式(V=1)INTPND261I_ISPCF_ISPC1的如果有幾個(gè)中斷源同時(shí)發(fā)出中斷請(qǐng)求,那么不管它們有沒有被,它們相應(yīng)的掛起位都會(huì)置1。INTMOD261時(shí),ARM7TDMIFIQ0IRQ中斷寄存器在中斷寄存器INTMSK中,除了全位“globalmask”外,其余的26位都分別對(duì)應(yīng)個(gè)中斷源。當(dāng)位為1時(shí),對(duì)應(yīng)的中斷被;當(dāng)位為0時(shí),該中斷可以正常使用。如果全屏蔽位“globalmask1,則所有的中斷都不執(zhí)行。如果使用了向量中斷模式,在中斷服務(wù)程序中改變了中斷寄存器INTMSK的值,這時(shí)并不能相應(yīng)的中斷過(guò)程,因?yàn)樵撝袛嘣谥袛嗉拇嫫髦耙呀?jīng)被中斷掛起寄存器INTPND鎖定了。要(INTPNDIRQS3C44B0X5個(gè)單元,14個(gè)從單元。每個(gè)從優(yōu)先級(jí)產(chǎn)生單642個(gè)中斷源。4個(gè)可編程優(yōu)先級(jí)中斷源(sGn)2個(gè)固定優(yōu)先級(jí)中斷源(kn4個(gè)中斷I_PSLV26個(gè)中斷源中的優(yōu)先級(jí)最低。主單元可以通過(guò)I_PMST422INT_RTCINT_ADC26IRQ/FIQ中斷掛起寄存器(INTPND4-5EXINT6EXINT7。中斷的產(chǎn)生分別來(lái)至按鈕SB2SB3,當(dāng)按鈕按下時(shí),EXINT6EXINT7CPU發(fā)出中斷請(qǐng)求。當(dāng)CPULED1LED2的顯示功能。從前面介紹的中斷源部分我們了解到,EXINT6EXINT7CPU只能受理其中一個(gè)中斷,SB2SB3是沒用的,CPUEXINT6中斷前是不會(huì)受理來(lái)EXINT7的中斷,大家可以在實(shí)驗(yàn)中留意一下這個(gè)情況。84.64-5五、Embest仿真器連接目標(biāo)板,使用EmbestEduKit-III實(shí)驗(yàn)板附帶的串口線,連接實(shí)驗(yàn)板上的UART0和PC機(jī)的串口。在PC機(jī)上運(yùn)行windows自帶的超級(jí)終端串口通信程序(波特率 、位停止位、無(wú)1)拷貝光盤CD1\Software\EduKit44b0文件夾到EmbestIDE\Examples\Samsung\使用EmbestIDE通過(guò)EmbestJTAG仿真器連接實(shí)驗(yàn)板,打開實(shí)驗(yàn)例 下的int_test.pjf例程,編譯工程點(diǎn)擊IDE的Debug菜單,選擇RemoteConnect項(xiàng)或F8鍵,連接目標(biāo)板點(diǎn)擊IDE的Debug菜單,選擇Download調(diào)試代碼到目標(biāo)系統(tǒng)的RAM中打開View菜單>DebugWindows>Register寄存器觀察窗口(快捷鍵Alt+5),在寄存器觀察窗口下面選擇寄存器(Peripheral),將INTERRUPT中斷寄存器組展開,重點(diǎn)觀察INTPND和I_ISPR寄存器值的變化,如下圖所示:圖4-6Embest 在工程管理窗口中雙擊int_test.cuart_printf("Pressbuttons\n");”以及“if(f_ucIntNesting)”設(shè)置斷點(diǎn)后,點(diǎn)擊DebugGoF5使用PC察圖4-6斷控制寄存器的值,即中斷配置情況;再次點(diǎn)擊DebugGoF5SB2SB3后,程序停留到中斷服務(wù)程序的斷點(diǎn),再次觀察圖4-6斷控制寄存器的值,雙擊INTPNDI_ISPR21]位值在程序運(yùn)行前后的變化(提示:;點(diǎn)擊DebugStepoverF10程序狀態(tài)寄存器的變化(提示:CPSR在返回時(shí)恢復(fù)中斷產(chǎn)生前的值;繼續(xù)單步執(zhí)行程序,從中斷返回后,程序會(huì)判斷被按下的按鍵點(diǎn)亮相應(yīng)的LED:按下SB2點(diǎn)亮LED1或按下SB3點(diǎn)亮結(jié)合實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)原理部分,掌握ARM處理器中斷操作過(guò)程,如中斷使能、設(shè)置中斷觸發(fā)方式和中斷源識(shí)別等,重點(diǎn)理解ARM處理器的中斷響應(yīng)及中斷處理的過(guò)程。在PC1SB2或再按下另一個(gè)按鈕(在中斷響應(yīng)后到點(diǎn)亮LED1之間),將會(huì)報(bào)告當(dāng)前= ;從而全部采用Fallingedgemode。之然后switch語(yǔ)句,對(duì)9個(gè)N的值分類,并利用for循環(huán)設(shè)wiccaenprn不大,示例程序?qū)崿F(xiàn)的功能,在按照書本介紹的步驟對(duì)示例程序進(jìn)行分析后做一些修改即可完成實(shí)驗(yàn)#include"44blib.h"#include"44b.h"#include"def.h"voidinit_int(void);voidint_test(void);voidint4567_isr(void);// ((interruptunsignedcharf_ucIntNesting=0; //Interruptnestingcountunsignedcharf_ucWhichInt =0; //interruptsourcesymbolvoid{//interrupt =0x3ffffff; //clearinterruptpendingregisterrEXTINTPND=0xf; //clearEXTINTPNDregister = //allforIRQ =0x5; //nonVectoredmode,IRQdisable,FIQdisable =~(BIT_GLOBAL|BIT_EINT4567);//setEINTinterrupthandlerpISR_EINT4567=(int)int4567_isr;//PORTG =// =//pulluprEXTINT=rEXTINT|rI_ISPC ;//EINT4567fallingedge}rEXTINTPND=//clearEXTINTPNDvoid{unsignedintinti,j;charn;rINTMSK=rINTMSK| //disableEINT2//useruart_printf("PleaseEnterthenumber"n=1-//savethecurrentsettingsofPortGunSaveG=unSavePG= = =//rEXTINT=;//Fallingedge{casecase'2':case'3':case'4':case'5':case'6':casecase'8':case'9':rPCONG=unSaveG;rPUPG=unSavePG;}uart_printf("Pressthebuttonsuart_printf("pushbuttonsmayhaveglitchnoiseproblem\n");rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); //waitingforthef_ucIntNesting= //Allowto{caseuart_printf("EINT4hadbeenoccured...\n");caseuart_printf("EINT5hadbeencase //SB2---flashuart_printf("EINT6hadbeenoccured...LED1(D1204)//fleshLED1case //SB3---flashuart_printf("EINT7hadbeenoccured...LED2(D1205)on\n");//fleshLED2 //10000x100uscaseuart_printf("Theexterninterrupthadbeenoccured(1levelmode)\n");defaultuart_printf("Error!\n");}//

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論