实验三:外部中断实验【实验目的】掌握lpc2000系列arm处理器的中断处理工作原理掌握外部中断的寄存器设置掌握中断服务程序的在Keil下的编程方法【实验内容】借助于外部中断,将按键动作进行累加计数,用4个led指示当前按键的次数
【实验原理】LPC2000系列可以管理最多32个外部中断,并将这些中断源最终通过irq或者fiq提交给ARM核进行处理
外部中断也在管理之中,通过设置相应的外部中断寄存器,可以对外部按键的输入进行中断处理
VIC的中断处理通道和相应的寄存器管理如下图具体的寄存器功能请参照教材,VIC一章节
外部中断寄存器见下图根据需要可以设置外部中断的方式和极性,寄存器的具体描述参照教材
【实验步骤】按照下图设计一个可以进行外部中断实验的电路
按键要接到EINT0~3的任一引脚上
下图以EINT0
0为例:向量IRQ0使能中断源向量IRQ0控制寄存器VICVectCntl0向量地址0寄存器VICVectAddr0默认向量地址寄存器VICDefVectAddr向量IRQ15使中断源向量IRQ15控制寄存器VICVectCntl15向量地址15寄存器VICVectAddr15DefIRQIRQ0IRQ15VectAddrVectAddr1DefVectAd硬件优先级向量地址寄存IRQ0IRQ15DefIRQIRQ中断信号向量向量非向量高低优先级IRQ中断状态寄存FIQ中断中断选择寄存中断使能寄存器中断使能清零寄中断源软件中断使能寄软件中断清零寄FIQ中断状态寄中断状态寄存IRQFIQ+用Keil建立一个工程,命名为eintled,并添加一个main
c文件到项目中
具体步骤参照实验一和实验二
主要函数功能如下:staticcharled=0;voideint0_isr()__irq{IOCLR=0xff;IOSET=led;led++;while(EXTINT&0x