本帖最后由 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);
} |