|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
[求助]看看我的程序怎么外部中斷實(shí)現(xiàn)不了? |
| 作者:holycore 欄目:ARM技術(shù) |
初始化程序用的44binit.s 44b.h沒有改,現(xiàn)在我想要實(shí)現(xiàn)外部中斷4567來(lái)進(jìn)入流水燈程序?墒窃趺匆矊(shí)現(xiàn)不了!各位幫忙看看哪里寫的不對(duì),感謝! #include <string.h> #include "..\inc\def.h" #include "..\inc\44b.h" #include "..\inc\44blib.h" void Beep(int BeepStatus) //小喇叭響 { //PC1,PC2,PC3 High available rPDATE=(rPDATE & 0xDF) | (BeepStatus<<5); } void Eint4567Isr(void); int Main(void) { rSYSCFG=SYSCFG_8KB; #if (PLLON==1) ChangePllValue(PLL_M,PLL_P,PLL_S); #endif rINTMOD=0x0; rINTCON=0x1; rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); pISR_EINT4567=(int)Eint4567Isr; //中斷函數(shù)入口 rPCONG=0xffff; rPUPG=0x0; rEXTINT=rEXTINT|0x22220000; rI_ISPC=BIT_EINT4567; rEXTINPND=0xF; return(0); } _irq void Eint4567Isr(void) { Delay(0); //calibrate Delay() Led_Display(7); Delay(1000); //calibrate Delay() Led_Display(0); Delay(5000); //calibrate Delay() Led_Display(7); while(!Uart_GetKey()) { Delay(5000); //calibrate Delay() Led_Display(1); Beep(1); Delay(5000); //calibrate Delay() Led_Display(2); Beep(0); Delay(5000); //calibrate Delay() Led_Display(4); Beep(0); } } |
| 2樓: | >>參與討論 |
| 作者: icyacht 于 2006/8/4 13:14:00 發(fā)布:
好像是... 不知道你用的哪種芯片,我只用過(guò)LPC2210 ,不過(guò)...主程序怎么直接返回了? 因該進(jìn)入子循環(huán)阿...???? |
|
| 3樓: | >>參與討論 |
| 作者: icyacht 于 2006/8/4 13:16:00 發(fā)布:
更正 上面意思是主程序不能返回,應(yīng)該進(jìn)入死循環(huán) |
|
| 4樓: | >>參與討論 |
| 作者: holycore 于 2006/8/5 19:45:00 發(fā)布:
繼續(xù)頭痛中... 程序照著icyacht兄的建議改了一下,還是不行,觸發(fā)EINT4、5、6、7后根本沒有跳回B HandlerIRQ,有沒有人幫忙解惑一下? #include <string.h> #include "..\inc\def.h" #include "..\inc\44b.h" #include "..\inc\44blib.h" void Beep(int BeepStatus) { //PC1,PC2,PC3 High available rPDATE=(rPDATE & 0xDF) | (BeepStatus<<5); } __irq void Eint4567Isr(void) { rI_ISPC=BIT_EINT4567; Delay(0); //calibrate Delay() Led_Display(7); Delay(1000); //calibrate Delay() Led_Display(0); Delay(5000); //calibrate Delay() Led_Display(7); while(!Uart_GetKey()) { Delay(5000); //calibrate Delay() Led_Display(1); Beep(1); Delay(5000); //calibrate Delay() Led_Display(2); Beep(0); Delay(5000); //calibrate Delay() Led_Display(4); Beep(0); } } int Main(void) { rSYSCFG=SYSCFG_8KB; #if (PLLON==1) ChangePllValue(PLL_M,PLL_P,PLL_S); #endif rINTMOD=0x0; rINTCON=0x1; rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); pISR_EINT4567=(int)Eint4567Isr; rPCONG=0xffff; rPUPG=0x0; rEXTINT=rEXTINT|0x22220000; rI_ISPC=BIT_EINT4567; rEXTINPND=0xF; while(1); return(0); } 另外我在用超級(jí)終端調(diào)試的時(shí)候,發(fā)生 ## Starting application at 0x0C008000 ... ## Application terminated, rc = 0x0 有誰(shuí)知道這是怎么原因造成的嗎?rc是什么東西啊?看了U-boot的使用說(shuō)明,上面也沒有具體的解釋啊。 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |