音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(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++筆記
/*----------------------------------------------------------------------
              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
我怎么看好像和C一樣啊?
我怎么看好像和C一樣啊?

3樓: >>參與討論
hotpower
哈哈,只是不加C++的演示部分,主要為了測(cè)試通用SWI.S文件
看看這個(gè)像嗎???

* - 本貼最后修改時(shí)間:2006-2-19 12:36:51 修改者:hotpower

黃河頌

4樓: >>參與討論
hotpower
Store_SPSR=0/1時(shí)用Disable_IRQ()關(guān)向量中斷的帖圖
這里今天暈圖,給個(gè)鏈接吧...

兩種不同的結(jié)果的仿真結(jié)果(也通過(guò)硬件測(cè)試)

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
不跪不求,芝麻開門
ZLG-IP的數(shù)據(jù)接收的限制和更改方法
LPC2146電源設(shè)計(jì)
easyjtag沒法在arm realview的ADX下使用,該怎么辦?
大家在設(shè)計(jì)ARM應(yīng)用板時(shí),是采用四層板,還是雙面板
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)