ARM实验二1061170110贺凌潇1外部中断【实验目的】1、学习LPC系列处理器向量中断控制器VIC的功能原理;2、掌握外部中断引脚功能设置及外部中断的工作模式设置;3、了解中断服务函数的编写方法。【实验原理】一、LPC系列处理器中断控制器的原理重点要掌握向量中断控制器、外部中断引入以及系统控制寄存器中对外部中断的设置。LPC1700含有4个外部中断,分别为EINT0、EINT1、EINT2和EINT3。四个相关寄存器:EXTINT包含中断标志,INTWAKE包含使能唤醒位,EXTMODE和EXTPOLAR指定引脚使用电平或边沿激活方式。二、实验板上的外部中断1.原理图2.说明实验板上使用EINT0(P2.10)脚引入外部中断,在实验板上用一个按键实现。EINT0引脚先被上拉电阻上拉为高电平,当按键按下时,电平下降为低电平,因此中断方式应设置为下降沿触发。三、程序说明1、LED_init:LED初始化,将P2.0-P2.78个IO口设置为输出;2、LED_On与LED_Off:根据num的不同数值点亮或熄灭不同的LED。3、EINT0_init:设置外部中断0的工作模式。4、EINT0_IRQHandler:外部中断0的中断服务函数。清中断标志,中断计数(eint0_counter)加1。【实验内容与步骤】一、阅读程序仔细阅读提供的main.c和EINT.c源程序。二、运行、调试将参考程序进行编译、链接,并下载到实验板上运行,观察程序运行结果是否正确。三、修改程序在参考程序的基础上,对程序相关部分进行修改,改变相应外部中断时板子不同的相应效果,比如LED闪烁形式、频率等等。外部中断按键实验程序:externvolatileinteint0_counter;#includeLPC17xx.h#includeled.h#includeeint.hintmain(void){LED_init();EINT0_init();while(1){if(eint0_counter=8)eint0_counter=0;LED_On(eint0_counter);LED_Off((eint0_counter-1)%8);}}2按键【实验目的】5、学习LPC系列处理器GPIO口的使用方法;6、了解LPC系列处理器GPIO口的功能原理;7、掌握扫描按键的开断控制LED的亮灭。【实验原理】一、LPC系列处理器中断控制器的原理重点要掌握GPIO口的功能原理、使用方法和通过扫描按键的开断控制LED的亮灭。二、实验板上的外部中断1.原理图2.说明实验板上使用P2.11和P2.12引入按键KEY1(SW4)和KEY2(SW3)的状态。KEY1按下时,LED5点亮,否则熄灭;KEY2按下时,LED4点亮,否则熄灭。三、程序说明1、LED_init:LED初始化,将P2.0-P2.78个IO口设置为输出;2、LED_On与LED_Off:根据num的不同数值点亮或熄灭不同的LED。3、EINT0_init:设置外部中断0的工作模式。8、EINT0_IRQHandler:外部中断0的中断服务函数。清中断标志,中断计数(eint0_counter)加1。【实验内容与步骤】一、阅读程序仔细阅读提供的main.c源程序。二、运行、调试将参考程序进行编译、链接,并下载到实验板上运行,按下/松开按键key1,观察程序运行结果是否正确(LD5是否按下时点亮,松开时熄灭)。三、修改程序在参考程序的基础上,对程序相关部分进行修改,用不同的LED来表征按键Key1的动作。实验程序/**************************************************************************//***按键实验*Joystick使用IO口P1.25(SEL)、P1.26(DOWN)、P1.27(LEFT)、P1.28(RIGHT)、P1.29(UP)*KEY1使用P2.11、KEY2使用P2.22******************************************************************************/#includeLPC17xx.h#includeled.h/*----------------------------------------------------------------------------MAINfunction*----------------------------------------------------------------------------*/intmain(void){uint8_tkbd_val,key1,key2;LED_init();LPC_GPIO1-FIODIR&=~((125)|(126)|(127)|(128)|(129));/*P1.25..29isinput(Joystick)*///LPC_GPIO2-FIODIR&=~((111)|(122));/*P2.11、P2.22isinput(KEY1、KEY2)*/LPC_GPIO2-FIODIR&=~((111)|(112));while(1){kbd_val=(LPC_GPIO1-FIOPIN25)&0x1F;//0x2009C020地址FIO1DIR,设置8个LED为输出LPC_GPIO2-FIOPIN=(~kbd_val)&0x1F;//FIO2DIR,P2.0-P2.4为输入key1=(LPC_GPIO2-FIOPIN11)&0x1;if(key1)LED_Off(6);elseLED_On(6);//key2=(LPC_GPIO2-FIOPIN22)&0x1;key2=(LPC_GPIO2-FIOPIN12)&0x1;if(key2)LED_Off(7);elseLED_On(7);}}【实验总结】通过本次试验,学习LPC系列处理器向量中断控制器VIC的功能原理,掌握外部中断引脚功能设置及外部中断的工作模式设置;了解中断服务函数的编写方法。而且学习LPC系列处理器GPIO口的使用方法,了解LPC系列处理器GPIO口的功能原理;掌握扫描按键的开断控制LED的亮灭。