嵌入式系統(tǒng)實(shí)踐實(shí)驗(yàn)報(bào)告-中斷實(shí)驗(yàn)_第1頁
嵌入式系統(tǒng)實(shí)踐實(shí)驗(yàn)報(bào)告-中斷實(shí)驗(yàn)_第2頁
嵌入式系統(tǒng)實(shí)踐實(shí)驗(yàn)報(bào)告-中斷實(shí)驗(yàn)_第3頁
嵌入式系統(tǒng)實(shí)踐實(shí)驗(yàn)報(bào)告-中斷實(shí)驗(yàn)_第4頁
嵌入式系統(tǒng)實(shí)踐實(shí)驗(yàn)報(bào)告-中斷實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第?次實(shí)驗(yàn)實(shí)驗(yàn)名稱 學(xué)號姓名第1頁共22頁計(jì)算機(jī)科學(xué)技術(shù)系上機(jī)實(shí)踐報(bào)告課程名稱:嵌入式系統(tǒng)實(shí)踐年級:上機(jī)實(shí)踐成績:指導(dǎo)教師:姓名:創(chuàng)新實(shí)踐成績:上機(jī)實(shí)踐名稱:中斷實(shí)驗(yàn)學(xué)號:上機(jī)實(shí)踐日期:上機(jī)實(shí)踐編號:No.5組號:上機(jī)實(shí)踐時(shí)間:實(shí)驗(yàn)?zāi)康耐ㄟ^實(shí)驗(yàn)掌握ARM處理器的中斷方式和中斷處理;熟悉S3C44BOX中斷控制寄存器的使用;了解不同中斷觸發(fā)方式對中斷產(chǎn)生的影響;理解S3C44BOX處理器的中斷響應(yīng)過程;熟練掌握如何進(jìn)行ARM處理器中斷處理的軟件編程方法。實(shí)驗(yàn)設(shè)備硬件:EmbestEDUKIT-III(實(shí)驗(yàn)平臺)PC機(jī)軟件:EmbestIDEProARM集成開發(fā)環(huán)境GNUAssembler匯編語言實(shí)驗(yàn)內(nèi)容編寫中斷處理程序,實(shí)現(xiàn):由UART0選擇輸入使用不同的中斷觸發(fā)方式,使能外部中斷Eint4,5,6,7;在不同的中斷觸發(fā)方式下,使用按鈕SB1202觸發(fā)EINT6,同時(shí)點(diǎn)亮LED1204一段時(shí)間后熄滅;在不同的中斷觸發(fā)方式下,使用按鈕SB1203觸發(fā)EINT7,同時(shí)點(diǎn)亮LED1205一段時(shí)間后熄滅。文檔中按鈕標(biāo)號、LED標(biāo)號均采用實(shí)驗(yàn)硬件平臺上標(biāo)號的簡寫形式:按鈕:SB1202–>SB2SB1203–>SB3LED:D1204–>LED1D1205–>LED2用C語言實(shí)現(xiàn)中斷程序,要求:–不再選擇使用什么觸發(fā)方式(EXTINT),而是全部使用下降沿觸發(fā)–從超級終端輸入n=1-9,使得:?當(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秒實(shí)驗(yàn)原理ARM處理器中斷S3C44B0X的中斷控制器可以接受來自30個(gè)中斷源的中斷請求。這些中斷源來自DMA、UART、SIO等這樣的芯片內(nèi)部外圍或芯片外部引腳。在這些中斷源中,有4個(gè)外部中斷(EINT4/5/6/7)是邏輯或的關(guān)系,它們共用一條中斷請求線。UART0和UART1的錯(cuò)誤中斷也是邏輯或的關(guān)系。中斷控制器的任務(wù)是在片內(nèi)外圍和外部中斷源組成的多重中斷發(fā)生時(shí),選擇其中一個(gè)中斷通過FIQ或IRQ向ARM7TDMI內(nèi)核發(fā)出中斷請求。實(shí)際上最初ARM7TDMI內(nèi)核只有FIQ(快速中斷請求)和IRQ(通用中斷請求)兩種中斷,其它中斷都是各個(gè)芯片廠家在設(shè)計(jì)芯片時(shí)定義的,這些中斷根據(jù)中斷的優(yōu)先級高低來進(jìn)行處理。例如,如果你定義所有的中斷源為IRQ中斷(通過中斷模式寄存器設(shè)置),并且同時(shí)有10個(gè)中斷發(fā)出請求,這時(shí)可以通過讀中斷優(yōu)先級寄存器來確定哪一個(gè)中斷將被優(yōu)先執(zhí)行。一般的中斷模式在進(jìn)入所需的服務(wù)程序前需要很長的中斷反應(yīng)時(shí)間,為了解決這個(gè)問題,S3C44B0X提供了一種新的中斷模式叫做向量中斷模式,它具有CISC結(jié)構(gòu)微控制器的特征,能夠降低中斷反應(yīng)時(shí)間。換句話說S3C44B0X的中斷控制器硬件本身直接提供了對向量中斷服務(wù)的支持。當(dāng)多重中斷源請求中斷時(shí),硬件優(yōu)先級邏輯會判斷哪一個(gè)中斷將被執(zhí)行,同時(shí),硬件邏輯自動執(zhí)行由0X18(或0X1C)地址到各個(gè)中斷源向量地址的跳轉(zhuǎn)指令,然后再由中斷源向量進(jìn)入到相應(yīng)的中斷處理程序。和原來的軟件實(shí)現(xiàn)的方式相比,這種方法可以顯著地減少中斷反應(yīng)時(shí)間。2.中斷控制程序狀態(tài)寄存器的F位和I位如果CPSR程序狀態(tài)寄存器的F位被設(shè)置為1,那么CPU將不接受來自中斷控制器的FIQ(快速中斷請求),如果CPSR程序狀態(tài)寄存器的I位被設(shè)置為1,那么CPU將不接受來自中斷控制器的IRQ(中斷請求)。因此,為了使能FIQ和IRQ,必須先將CPSR程序狀態(tài)寄存器的F位和I位清零,并且中斷屏蔽寄存器INTMSK中相應(yīng)的位也要清零。中斷模式(INTMOD)ARM7TDMI提供了2種中斷模式,F(xiàn)IQ模式和IRQ模式。所有的中斷源在中斷請求時(shí)都要確定使用哪一種中斷模式。中斷掛起寄存器(INTPND)用于指示對應(yīng)的中斷是否被激活。如果掛起位被設(shè)置為1,那么無論標(biāo)志I或標(biāo)志F是否被清零,都會執(zhí)行相應(yīng)的中斷服務(wù)程序。中斷掛起寄存器為只讀寄存器,所以在中斷服務(wù)程序中必須加入對I_ISPC和F_ISPC寫1的操作來清除掛起條件。中斷屏蔽寄存器(INTMSK)當(dāng)INTMSK寄存器的屏蔽位為1時(shí),對應(yīng)的中斷被禁止;當(dāng)INTMSK寄存器的屏蔽位為0時(shí),則對應(yīng)的中斷正常執(zhí)行。如果一個(gè)中斷的屏蔽位為1,在該中斷發(fā)出請求時(shí)掛起位還是會被設(shè)置為1。如果中斷屏蔽寄存器的global位設(shè)置為1,那么中斷掛起位在中斷請求時(shí)還會被設(shè)置,但所有的中斷請求都不被受理。3.S3C44B0X中斷源在30個(gè)中斷源中,有26個(gè)中斷源提供給中斷控制器,其中4個(gè)外部中斷(EINT4/5/6/7)通過“或”的形式提供一個(gè)中斷源送至中斷控制器,2個(gè)URAT錯(cuò)誤中斷(UERROR0/1)也是如此。表4-14S3C44B0X的中斷源4.向量中斷模式(僅針對IRQ)S3C44B0X含有向量中斷模式,可以減少中斷的反應(yīng)時(shí)間。通常情況下ARM7TDMI內(nèi)核收到中斷控制器的IRQ中斷請求,ARM7TDMI會在0X00000018地址處執(zhí)行一條指令。但是在向量中斷模式下,當(dāng)ARM7TDMI從0X00000018地址處取指令的時(shí)候,中斷控制器會在數(shù)據(jù)總線上加載分支指令,這些分支指令使程序計(jì)數(shù)器能夠?qū)?yīng)到每一個(gè)中斷源的向量地址。這些跳轉(zhuǎn)到每一個(gè)中斷源向量地址的分支指令可以由中斷控制器產(chǎn)生。例如,假設(shè)EINT0是IRQ中斷,如表4-15所示,EINT0的向量地址為0X20,所以中斷控制器必須產(chǎn)生從0X18到0X20的分支指令。因此,中斷控制器產(chǎn)生的機(jī)器碼為0xea000000.在各個(gè)中斷源對應(yīng)的中斷向量地址中,存放著跳轉(zhuǎn)到相應(yīng)中斷服務(wù)程序的程序代碼,在相應(yīng)向量地址處分支指令的機(jī)器代碼是這樣計(jì)算的:向量中斷模式的指令機(jī)器代碼=0xea000000+((<目標(biāo)地址>-<向量地址>-0x8)>>2)例如,如果Timer0中斷采用向量中斷模式,則跳轉(zhuǎn)到對應(yīng)中斷服務(wù)程序的分支指令應(yīng)該存放在向量地址0x00000060處。中斷服務(wù)程序的起始地址在0x10000,下面就是計(jì)算出來放在0x60處的機(jī)器代碼:machinecode@0x00000060:0xea000000+((0x10000-0x60-0x8)>>2)=0xea000000+0x3fe6=0xea003fe6通常機(jī)器代碼都是反匯編后自動產(chǎn)生的,因此不必真正象上面這樣去計(jì)算。表4-15中斷源的向量地址向量中斷模式的程序舉例在向量中斷模式下,當(dāng)中斷請求產(chǎn)生時(shí),程序會自動進(jìn)入相應(yīng)的中斷源向量地址,因此,在中斷源向量地址處必須有一條分支指令使程序進(jìn)入到相應(yīng)的中斷服務(wù)程序,如下:ENTRY:bResetHandler/*fordebug*/bHandlerUndef/*handlerUndef*/bHandlerSWI/*SWIinterrupthandler*/bHandlerPabort/*handlerPAbort*/bHandlerDabort/*handlerDAbort*/b./*handlerReserved*/ldrpc,=HandlerIRQbHandlerFIQVECTOR_BRANCH:ldrpc,=HandlerEINT0/*mGA0x20H/Winterruptvectortable*/ldrpc,=HandlerEINT1/**/ldrpc,=HandlerEINT2/**/ldrpc,=HandlerEINT3/**/ldrpc,=HandlerEINT4567/**/ldrpc,=HandlerTICK/*mGA0x34*/b.b.ldrpc,=HandlerZDMA0/*mGB0x40*/ldrpc,=HandlerZDMA1/**/ldrpc,=HandlerBDMA0/**/ldrpc,=HandlerBDMA1/**/ldrpc,=HandlerWDT/**/ldrpc,=HandlerUERR01/*mGB0x54*/b.b.ldrpc,=HandlerTIMER0/*mGC0x60*/ldrpc,=HandlerTIMER1/**/ldrpc,=HandlerTIMER2/**/ldrpc,=HandlerTIMER3/**/ldrpc,=HandlerTIMER4/**/ldrpc,=HandlerTIMER5/*mGC0x74*/b.b.ldrpc,=HandlerURXD0/*mGD0x80*/ldrpc,=HandlerURXD1/**/ldrpc,=HandlerIIC/**/ldrpc,=HandlerSIO/**/ldrpc,=HandlerUTXD0/**/ldrpc,=HandlerUTXD1/*mGD0x94*/b.b.ldrpc,=HandlerRTC/*mGKA0xa0*/b./**/b./**/b./**/b./**/b./*mGKA0xb4*/b.b.ldrpc,=HandlerADC/*mGKB0xc0*/5.中斷控制專用寄存器中斷控制寄存器(INTCON)注意:FIQ模式不支持向量中斷模式。從表中可以看出,INTCON寄存器中位[0]為FIQ中斷使能位,寫入0就使能FIQ中斷;位[1]為IRQ中斷使能位,寫入0就使能IRQ中斷;位[2]是選擇IRQ中斷為向量中斷模式(V=0)還是普通模式(V=1)。中斷掛起寄存器(INTPND)中斷掛起寄存器INTPND共有26位,每一位對應(yīng)著一個(gè)中斷源,當(dāng)中斷請求產(chǎn)生時(shí),相應(yīng)的位會被設(shè)置為1。該寄存器為只讀寄存器,所以在中斷服務(wù)程序中必須加入對I_ISPC和F_ISPC寫1的操作來清除掛起條件。如果有幾個(gè)中斷源同時(shí)發(fā)出中斷請求,那么不管它們有沒有被屏蔽,它們相應(yīng)的掛起位都會置1。只是優(yōu)先級寄存器會根據(jù)它們的優(yōu)先級高低來響應(yīng)當(dāng)前優(yōu)先級最高的中斷。中斷模式寄存器(INTMOD)中斷模式寄存器INTMOD共有26位,每一位對應(yīng)著一個(gè)中斷源,當(dāng)中斷源的模式位設(shè)置為1時(shí),對應(yīng)的中斷會由ARM7TDMI內(nèi)核以FIQ模式來處理。相反的,當(dāng)模式位設(shè)置為0時(shí),中斷會以IRQ模式來處理。中斷屏蔽寄存器(INTMSK)在中斷屏蔽寄存器INTMSK中,除了全屏蔽位“globalmask”外,其余的26位都分別對應(yīng)一個(gè)中斷源。當(dāng)屏蔽位為1時(shí),對應(yīng)的中斷被屏蔽;當(dāng)屏蔽位為0時(shí),該中斷可以正常使用。如果全屏蔽位“globalmask”被設(shè)置為1,則所有的中斷都不執(zhí)行。如果使用了向量中斷模式,在中斷服務(wù)程序中改變了中斷屏蔽寄存器INTMSK的值,這時(shí)并不能屏蔽相應(yīng)的中斷過程,因?yàn)樵撝袛嘣谥袛嗥帘渭拇嫫髦耙呀?jīng)被中斷掛起寄存器INTPND鎖定了。要解決這個(gè)問題,就必須在改變中斷屏蔽寄存器后再清除相應(yīng)的掛起位(INTPND)。IRQ向量模式相關(guān)寄存器S3C44B0X中的優(yōu)先級產(chǎn)生模塊包含5個(gè)單元,1個(gè)主單元和4個(gè)從單元。每個(gè)從優(yōu)先級產(chǎn)生單元管理6個(gè)中斷源。主優(yōu)先級產(chǎn)生單元管理4個(gè)從單元和2個(gè)中斷源。每一個(gè)從單元有4個(gè)可編程優(yōu)先級中斷源(sGn)和2個(gè)固定優(yōu)先級中斷源(kn)。這4個(gè)中斷源的優(yōu)先級是由I_PSLV寄存器決定的。另外2個(gè)固定優(yōu)先級中斷源在6個(gè)中斷源中的優(yōu)先級最低。主單元可以通過I_PMST寄存器來決定4個(gè)從單元和2個(gè)中斷源的優(yōu)先級。這2個(gè)中斷源INT_RTC和INT_ADC在26個(gè)中斷源中的優(yōu)先級最低。如果幾個(gè)中斷源同時(shí)發(fā)出中斷請求,這時(shí)I_ISPR寄存器可以顯示當(dāng)前具有最高優(yōu)先級的中斷源。IRQ/FIQ中斷掛起清零寄存器(I_ISPC/F_ISPC)通過對I_ISPC/F_ISPC相應(yīng)的位寫1來清除中斷掛起位(INTPND)。6.電路原理如圖4-5中斷實(shí)驗(yàn)電路所示,本實(shí)驗(yàn)選擇的是外部中斷EXINT6和EXINT7。中斷的產(chǎn)生分別來至按鈕SB2和SB3,當(dāng)按鈕按下時(shí),EXINT6或EXINT7和地連接,輸入低電平,從而向CPU發(fā)出中斷請求。當(dāng)CPU受理中斷后,進(jìn)入相應(yīng)的中斷服務(wù)程序,實(shí)現(xiàn)LED1或LED2的顯示功能。從前面介紹的中斷源部分我們了解到,EXINT6和EXINT7是共用一個(gè)中斷控制器,所以在同一時(shí)間CPU只能受理其中一個(gè)中斷,也就是說,當(dāng)鈕SB2按下進(jìn)入中斷后,再按SB3是沒用的,CPU在處理完EXINT6中斷前是不會受理來自EXINT7的中斷,大家可以在實(shí)驗(yàn)中留意一下這個(gè)情況。另外8段數(shù)碼管顯示部分電路在這里沒有給出,需要的話可以參考4.6節(jié)。圖4-5中斷實(shí)驗(yàn)電路實(shí)驗(yàn)步驟1.準(zhǔn)備實(shí)驗(yàn)環(huán)境使用Embest仿真器連接目標(biāo)板,使用EmbestEduKit-III實(shí)驗(yàn)板附帶的串口線,連接實(shí)驗(yàn)板上的UART0和PC機(jī)的串口。2.串口接收設(shè)置在PC機(jī)上運(yùn)行windows自帶的超級終端串口通信程序(波特率115200、1位停止位、無校驗(yàn)位、無硬件流控制);或者使用其它串口通信程序。3.打開實(shí)驗(yàn)例程1)拷貝光盤CD1\Software\EduKit44b0文件夾到EmbestIDE\Examples\Samsung\目錄下;2)使用EmbestIDE通過EmbestJTAG仿真器連接實(shí)驗(yàn)板,打開實(shí)驗(yàn)例程目錄4.3_int_test子目錄下的int_test.pjf例程,編譯鏈接工程;3)點(diǎn)擊IDE的Debug菜單,選擇RemoteConnect項(xiàng)或F8鍵,遠(yuǎn)程連接目標(biāo)板;4)點(diǎn)擊IDE的Debug菜單,選擇Download下載調(diào)試代碼到目標(biāo)系統(tǒng)的RAM中;5)打開View菜單>DebugWindows>Register寄存器觀察窗口(快捷鍵Alt+5),在寄存器觀察窗口下面選擇外圍寄存器(Peripheral),將INTERRUPT中斷寄存器組展開,重點(diǎn)觀察INTPND和I_ISPR寄存器值的變化,如下圖所示:圖4-6EmbestIDE外圍寄存器窗口6)在工程管理窗口中雙擊int_test.c就會打開該文件,分別在“uart_printf("Pressthebuttons\n");”以及“if(f_ucIntNesting)”設(shè)置斷點(diǎn)后,點(diǎn)擊Debug菜單Go或F5鍵運(yùn)行程序,程序正確運(yùn)行后,會在超級終端上輸出如下信息7)使用PC機(jī)鍵盤,輸入所需設(shè)置的中斷觸發(fā)方式后,程序停留在第一個(gè)斷點(diǎn)處,此時(shí)注意觀察圖4-6中中斷控制寄存器的值,即中斷配置情況;8)再次點(diǎn)擊Debug菜單Go或F5鍵運(yùn)行程序,并等待按下按鈕產(chǎn)生中斷;當(dāng)按下SB2或SB3后,程序停留到中斷服務(wù)程序入口的斷點(diǎn),再次觀察圖4-6中中斷控制寄存器的值,雙擊INTPND和I_ISPR可以打開寄存器窗口,注意觀察[21]位值在程序運(yùn)行前后的變化(提示:中斷申請標(biāo)志位應(yīng)該被置位);9)點(diǎn)擊Debug菜單下的Stepover或F10鍵執(zhí)行程序,注意觀察在執(zhí)行完該函數(shù)返回前后,程序狀態(tài)寄存器的變化(提示:CPSR在返回時(shí)恢復(fù)中斷產(chǎn)生前的值);繼續(xù)單步執(zhí)行程序,從中斷返回后,程序會判斷被按下的按鍵點(diǎn)亮相應(yīng)的LED:按下SB2點(diǎn)亮LED1或按下SB3點(diǎn)亮LED2;10)結(jié)合實(shí)驗(yàn)內(nèi)容和實(shí)驗(yàn)原理部分,掌握ARM處理器中斷操作過程,如中斷使能、設(shè)置中斷觸發(fā)方式和中斷源識別等,重點(diǎn)理解ARM處理器的中斷響應(yīng)及中斷處理的過程。4.觀察實(shí)驗(yàn)結(jié)果等待選擇輸入所需中斷方式設(shè)置:在PC機(jī)鍵盤上輸入1選擇下降沿觸發(fā),并按下按鈕SB2如果重復(fù)按下按鈕SB2或再按下另一個(gè)按鈕(在中斷響應(yīng)后到點(diǎn)亮LED1之間),將會報(bào)告當(dāng)前正在處理第一個(gè)按鈕產(chǎn)生的中斷,并輸出信息表示中斷嵌套。六、調(diào)試過程、結(jié)果和分析本次實(shí)驗(yàn)過程中首先按照教材示例運(yùn)行并觀察了寄存器的變化,并且采用中斷觀察中斷配置情況,在學(xué)習(xí)并理解示例程序的基礎(chǔ)上按照習(xí)題要求進(jìn)行了編程。首先本習(xí)題要求不選擇使用什么觸發(fā)方式,全部使用下降沿觸發(fā),則在程序中設(shè)置rEXTINT=0x22222222;從而全部采用Fallingedgemode。之后用switch語句,對9個(gè)N的值分類,并利用for循環(huán)設(shè)置當(dāng)閃燈次數(shù)未達(dá)到n值時(shí)持續(xù)閃燈。在調(diào)試過程中未出現(xiàn)較大問題,一開始出現(xiàn)了一些小問題例如switch語句下的case中要將n的類型的轉(zhuǎn)換問題,還有就是一開始寫的程序在未運(yùn)行時(shí)設(shè)置print的顯示句子不夠人性化,有的提示語句出現(xiàn)的時(shí)機(jī)不恰當(dāng),在自己反復(fù)多次的試驗(yàn)下最終達(dá)到了比較通順的效果。調(diào)試過程部分截圖如下所示:BuildConnect超級終端七、總結(jié)本次實(shí)驗(yàn)整體來說完成得比較順利,尤其是相對于實(shí)驗(yàn)四來說,在讀懂本次實(shí)驗(yàn)的示例程序的基礎(chǔ)上完成習(xí)題程序的編寫難度不大,示例程序?qū)崿F(xiàn)的功能更多,在按照書本介紹的步驟對示例程序進(jìn)行分析后做一些修改即可完成實(shí)驗(yàn)要求的功能,加上自己反復(fù)實(shí)踐,逐步微調(diào)之后,超級終端上的顯示也較為人性化。本次實(shí)驗(yàn)完成的時(shí)間較短,所以留出了更多的時(shí)間繼續(xù)完成難度更大的實(shí)驗(yàn)四。八、附件#include "44blib.h"#include "44b.h"#include "def.h"voidinit_int(void);voidint_test(void);voidint4567_isr(void);//__attribute__((interrupt("IRQ")));unsignedcharf_ucIntNesting=0; //Interruptnestingcountunsignedcharf_ucWhichInt=0; //interruptsourcesymbolvoidinit_int(void){ //interruptsettings rI_ISPC=0x3ffffff; //clearinterruptpendingregister rEXTINTPND=0xf; //clearEXTINTPNDregister rINTMOD=0x0; //allforIRQmode rINTCON=0x5; //nonVectoredmode,IRQdisable,FIQdisable rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); //setEINTinterrupthandler pISR_EINT4567=(int)int4567_isr; //PORTGconfiguration rPCONG=0xffff; //EINT7~0 rPUPG=0x0; //pullupenable rEXTINT=rEXTINT|0x22220020; //EINT4567fallingedgemode rI_ISPC|=BIT_EINT4567; rEXTINTPND=0xf; //clearEXTINTPNDreg}voidint_test(void){ unsignedintunSaveG,unSavePG; init_int(); inti,j;charn; rINTMSK=rINTMSK|BIT_EINT4567; //disableEINT2int //userinterface uart_printf("PleaseEnterthenumbern:\n" "n=1-9\n"); //savethecurrentsettingsofPortGcontroler unSaveG=rPCONG; unSavePG=rPUPG; rPCONG=0xf5ff; //EINT7~0 rPUPG=0x0; rEXTINT=0x22222222; //Fallingedgemode switch(uart_getch()) { case'1': n=1; break; case'2': n=2; break; case'3': n=3; break; case'4': n=4; break; case'5': n=5; break; case'6': n=6; break; case'7': n=7; break; case'8': n=8; break; case'9': n=9; break; default: rPCONG=unSaveG; rPUPG=unSavePG; return; } uart_printf("Pressthebuttons\n"); uart_printf("pushbuttonsmayhaveglitchnoiseproblem\n"); rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); while(!f_ucWhichInt); //waitingfortheinterrupt f_ucIntNesting=1; //AllowtoNesting. switch(f_ucWhichInt) { case1: uart_printf("EINT4hadbeenoccured...\n"); break; case2: uart_printf("EINT5hadbeenoccured...\n"); break; case4: //SB2flashLED1 uart_printf("EINT6hadbeenoccured...LED1(D1204)on\n");

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論