|
|||||||||||
| 技術(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 |
請(qǐng)問(wèn)一下關(guān)于中斷的問(wèn)題 |
| 作者:肖賓 欄目:ARM技術(shù) |
各位大蝦,小弟是個(gè)新手,請(qǐng)問(wèn)一下關(guān)于中斷的問(wèn)題。我用的LPC2138 我用了一個(gè)外部中斷,一個(gè)RTC年增量中斷,只要我一初始化結(jié)束就是立刻進(jìn)入到中斷服務(wù)程序 ,就是一直在響應(yīng)中斷。感覺(jué)好奇怪啊。 void IRQSet (void) {VICIntSelect = 0x00000000; EXTMODE = 0x00; EXTPOLAR = 0x00; VICVectCntl0 = 0x20 |14; VICVectAddr0 = (uint32)IRQ_Eint0; EXTINT = 0x01; VICIntEnable |= 1 << 14; VICVectCntl2 = 0x20 | 13; VICVectAddr2 = (uint32)RTC_Int; VICIntEnable |= (1 << 13); ILR = 0x01; } int main(void) { PINSEL0 =0x80050000; //初始化管腳 PINSEL1 =0x054802A9; PINSEL2 =0x00000004; IO0DIR =0x00001CFF; IO1DIR =0x03FF0000; IRQSet() ; IRQEnable(); while(1) {... ... } } 外部中斷0用的P0.16,實(shí)測(cè)P0.16為3.32V,初始化中斷設(shè)置電平模式,低電平有效,但是只要執(zhí)行到IRQEnable();,就會(huì)立刻產(chǎn)生中斷,且一直在中斷中,請(qǐng)各位前輩幫我分析一下什么地方出了問(wèn)題。 |
| 2樓: | >>參與討論 |
| 作者: microlab 于 2007/3/31 0:44:00 發(fā)布:
Re 首先,我不太清楚 為什么設(shè)置成低電平模式,卻高電平會(huì)觸發(fā)中斷. 但是,你所說(shuō)的一直在中斷中,我猜想可能有如下兩個(gè)原因: 1. 既然p0.16為高能觸發(fā)中斷,那么,如果你的p0.16一直是高的話,那自然會(huì)一直有中斷 2. 就是進(jìn)了中斷后,沒(méi)有清中斷標(biāo)志位,那么也會(huì)一直進(jìn)中斷 |
|
| 3樓: | >>參與討論 |
| 作者: 肖賓 于 2007/3/31 9:45:00 發(fā)布:
re microlab 首先感謝microlab對(duì)我的問(wèn)題的關(guān)注。我想再說(shuō)明一下情況。 p0.16低電平,初始化后仍會(huì)發(fā)生中斷,可以這樣認(rèn)為吧,無(wú)論P(yáng)0.16的高低,只要初始化外部中斷0,后就會(huì)產(chǎn)生中斷。 如果初始化改成高電平觸發(fā)中斷,無(wú)論P(yáng)0.16的高低,都不會(huì)發(fā)生中斷。另外我這里的確需要低電平觸發(fā)的。還有中斷服務(wù)程序我清除了中斷標(biāo)志,那不會(huì)忘掉的。 |
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開(kāi)發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |