|
|||||||||||
| 技術(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 |
ARM水鳥外部中斷ARTX之RealView C++筆記 |
| 作者:hotpower 欄目:ARM技術(shù) |
/*---------------------------------------------------------------------- ARM水鳥外部中斷ARTX之RealView C++筆記 HotPower@126.com 2006.2.18 于西安大雁塔村隊(duì)部 http://blog.21ic.com/blog.asp?NAME=hotpower -----------------------------------------------------------------------*/ /***********************************************************************/ /* This file is PART of the CA ARM C Compiler PACKAGE */ /* COPYRIGHT KEIL ELEKTRONIK GmbH 2002 - 2004 */ /***********************************************************************/ /* */ /* MAIN.CPP: Demonstration of various interrupt functions */ /* */ /***********************************************************************/ #include <LPC213x.H> // PHILIPS Peripheral Registers #include <LPC213xDEF.H> //ARM菜鳥HotPower創(chuàng)建定義文件(最新為情人節(jié)修改版) /* *具有特權(quán)保護(hù)的用戶非向量中斷,它只能在VICProtection=0時(shí)在用戶模式下調(diào)用,比SWI更安全 */ extern "C" void Undef_Handler(void) __irq{ if (VICIRQStatus & (unsigned LONG)(1 << VICIntSel_SoftInt31)) { IOPIN1 ^= (1 << P1_19); //取反P1.19 EXTINT = (unsigned CHAR)(1 << VICIntSel_SoftInt31); //清除VICIntSel_SoftInt31中斷標(biāo)志 VICSoftIntClr = (unsigned LONG)(1 << VICIntSel_SoftInt31); } VICVectAddr = 0; } /* extern "C" void IRQ_Handler (void) __irq{//VICIntSelect=0且VICVectCntl0~VICVectCntl15都未中斷使能 unsigned LONG TEMP; TEMP = VICIRQStatus; if (TEMP & (1 << VICIntSel_EINT0)) { IOPIN1 ^= (1 << P1_16); //取反P1.16 EXTINT = (1 << EINT0); //清除INT0中斷標(biāo)志 } else if (TEMP & (1 << VICIntSel_EINT1)) { IOPIN1 ^= (1 << P1_17); //取反P1.17 while(EXTINT & (1 << EINT1)) { EXTINT = (1 << EINT1); //清除INT1中斷標(biāo)志 } } else if (TEMP & (1 << VICIntSel_EINT2)) { IOPIN1 ^= (1 << P1_18); //取反P1.18 EXTINT = (1 << EINT2); //清除INT2中斷標(biāo)志 } else if (TEMP & (1 << VICIntSel_EINT3)) { IOPIN1 ^= (1 << P1_19); //取反P1.19 EXTINT = (1 << EINT3); //清除INT3中斷標(biāo)志 } else {//其他干擾源 //再次填入干擾處理代碼 } VICSoftIntClr = TEMP;//抗擊無(wú)效VICSoftInt=XXX的入侵 VICVectAddr = 0; } */ extern "C" void EINT0IRQ (void) __irq{//IRQ中斷函數(shù)EINT0IRQ被掛接在VICVectCntl0 __enable_irq(); if (VICIRQStatus & (1 << VICIntSel_EINT0)) { IOPIN1 ^= (1 << P1_16); //取反P1.16 } VICSoftIntClr = (1 << VICIntSel_EINT0); EXTINT = (1 << EINT0); //清除INT0中斷標(biāo)志 VICVectAddr = 0; } extern "C" void EINT1IRQ (void) __irq{//IRQ中斷函數(shù)EINT1IRQ被掛接在VICVectCntl1 if (VICIRQStatus & (1 << VICIntSel_EINT1)) { IOSET1 = (1 << P1_17); //P1.17=1 while(EXTINT & (1 << EINT1)) { EXTINT = (1 << EINT1); //清除INT1中斷標(biāo)志 } IOCLR1 = (1 << P1_17); //P1.17=0 VICSoftIntClr = (1 << VICIntSel_EINT1); } VICVectAddr = 0; } extern "C" void EINT2IRQ (void) __irq{//IRQ中斷函數(shù)EINT2IRQ被掛接在VICVectCntl2 if (VICIRQStatus & (1 << VICIntSel_EINT2)) { IOPIN1 ^= (1 << P1_18); //取反P1.18 } EXTINT = (1 << EINT2); //清除INT2中斷標(biāo)志 VICSoftIntClr = (1 << VICIntSel_EINT2); VICVectAddr = 0; } extern "C" void EINT3IRQ (void) __irq{//IRQ中斷函數(shù)EINT3IRQ被掛接在VICVectCntl3 if (VICIRQStatus & (1 << VICIntSel_EINT3)) { IOPIN1 ^= (1 << P1_19); //取反P1.19 } EXTINT = (1 << EINT3); //清除INT3中斷標(biāo)志 VICSoftIntClr = (1 << VICIntSel_EINT3); VICVectAddr = 0; } extern "C" void FIQ_Handler (void) __irq{//VICIntSelect非0 unsigned LONG TEMP; TEMP = VICFIQStatus; if (TEMP & (1 << VICIntSel_EINT0)) { IOPIN1 ^= (1 << P1_16); //取反P1.16 EXTINT = (1 << EINT0); //清除INT0中斷標(biāo)志 } else if (TEMP & (1 << VICIntSel_EINT1)) { IOSET1 = (1 << P1_17); //P1.17=1 while(EXTINT & (1 << EINT1)) { EXTINT = (1 << EINT1); //清除INT1中斷標(biāo)志 } IOCLR1 = (1 << P1_17); //P1.17=0 } else if (TEMP & (1 << VICIntSel_EINT2)) { IOPIN1 ^= (1 << P1_18); //取反P1.18 EXTINT = (1 << EINT2); //清除INT2中斷標(biāo)志 } else if (TEMP & (1 << VICIntSel_EINT3)) { IOPIN1 ^= (1 << P1_19); //取反P1.19 EXTINT = (1 << EINT3); //清除INT3中斷標(biāo)志 } else {//其他干擾源 |
| 2樓: | >>參與討論 |
| 作者: eleven11 于 2006/2/19 12:26:00 發(fā)布:
我怎么看好像和C一樣啊? 我怎么看好像和C一樣啊? |
|
| 3樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/19 12:32:00 發(fā)布:
哈哈,只是不加C++的演示部分,主要為了測(cè)試通用SWI.S文件 看看這個(gè)像嗎??? * - 本貼最后修改時(shí)間:2006-2-19 12:36:51 修改者:hotpower |
|
| 4樓: | >>參與討論 |
| 作者: hotpower 于 2006/2/19 13:00:00 發(fā)布:
Store_SPSR=0/1時(shí)用Disable_IRQ()關(guān)向量中斷的帖圖 這里今天暈圖,給個(gè)鏈接吧... |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |