打印

LPC2103在IAR的变异环境中如何进中断?

[复制链接]
1516|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
stoneluolei|  楼主 | 2011-8-25 10:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 stoneluolei 于 2011-8-25 15:23 编辑

大家好,我使用IAR怎么也进入不了中断。
我也参考了网上的许多方法,可就是不行。

具体的问题是,我要使用外部中断0,下降沿触发,
在flash中进行调试。芯片是LPC2103,编译环境
是IAR,请问应该怎么写???

具体的代码是:

#include<configLT.h>
#include<I2CINT.h>
#include<LCD12864_Driver.h>
#include<ZLG7290.h>
#include <intrinsics.h>     //中断头文件
#include <stdio.h>
#define IRQV 0x18
U8 KeyValue;      //键值
U8 KeySym;        //按键标志
/*************************************************************************
* 函数名称:irq_handler
* 入口参数:无
*
* 返回参数:无
*
* 描    述:IRQ handler
*
*************************************************************************/
#pragma vector=IRQV
__irq __arm void irq_handler (void)
{
void (*interrupt_function)();
unsigned int vector;
  vector = VICVectAddr;     //获得中断向量
  interrupt_function = (void(*)())vector;
  if(interrupt_function != NULL)
  {
    interrupt_function();  //调用中断指向的函数
  }
  else
  {
    VICVectAddr = 0;      //清除在VIC中的中断
  }
}

void IRQ_EXT0(void)
{
  KeySym=1;                                //置按键标志
  EXTINT|=0x01;                            //清楚外部中断标志
  VICVectAddr=0;                           //向量中断结束
}
void EXT0Init()
{
  PINSEL1=0x01;       //配置外部中断0
  
  VICIntSelect=0;
  VICVectCntl1=(0x20|0x0e);
  VICVectAddr1=(unsigned int)IRQ_EXT0;
  
  EXTINT=0x01;
  EXTMODE=0x01;
  EXTPOLAR=0x00;                          //外部中断0下降沿触发
  
  VICIntEnable=1<<14;
}
void Init_pll(void)
{
  PLLCON = 0;
  // Write Feed
  PLLFEED = 0xAA;
  PLLFEED = 0x55;
  VPBDIV = 0;
  MAMCR=0;
  MAMTIM=3;
  MAMCR=2;
}
void main()
{
  U8 test=8;
  
__disable_interrupt();  
  Init_pll();
  
  MEMMAP= 1;
  
  EXT0Init();                         //外部中断0初始化
  __enable_interrupt();    //开启中断
  

  while(1);
  
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

2

帖子

1

粉丝