开发环境:ADS1.2
在利用LPC2103的三个外部中断作为按键输入时,slot0存放EINT0,slot1存放EINT1,slot2存放EINT2。
下面分三种情况说明
(1)如果首先是EINT2进入中断,那么EINT1和EINT0还是可以进入中断的;
(2)如果首先是EINT1进入中断,那么EINT2就进不去中断处理程序了,但是EINT0还是可以进入中断的;
(3)如果首先是EINT0进入中断,那么EINT1和EINT0就都无法进入中断的
而且不管是EINT0,EINT1还是EINT2,都只能进入一次中断,第二次就无法进入了。
针对以上外部中断中的bug,本人进行了多次反复的实验,发现在中断处理程序里面把VICVectAddr 的值重新修改为0以后,可以解决上述问题。
在中断处理程序的最后写VICVectAddr =0是为了更新硬件优先级。
以上解决方法是建立在程序正确,唯独在中断处理程序中没有修改VICVectAddr 的情况
关键字:LPC2103 外部中断
引用地址:
关于LPC2103外部中断
推荐阅读最新更新时间:2024-03-16 15:04
ATmega32 掉电模式
当SM2..0 为010 时, SLEEP 指令将使MCU 进入掉电模式。在此模式下,外部晶体停振,而外部中断、两线接口地址匹配及看门狗(如果使能的话)继续工作。只有外部复位、看门狗复位、BOD 复位、两线接口地址匹配中断、外部电平中断INT0 或INT1,或外部中断INT2 可以使MCU 脱离掉电模式。这个睡眠模式停止了所有的时钟,只有异步模块可以继续工作。 当使用外部电平中断方式将MCU 从掉电模式唤醒时,必须保持AVR外部电平一定的时间。具体请参见P64“ 外部中断”。 从施加掉电唤醒条件到真正唤醒有一个延迟时间,此时间用于时钟重新启动并稳定下来。唤醒周期与由熔丝位CKSEL 定义的复位周期是一样的,如P23“ ATmega
[单片机]
51单片机外部中断程序
/*以下是能在keilC 中变异的源码,直接粘贴过去就行,外部中断0(INT0)和外部中断1都有(INT1)*/ /*程序很简单,但是对新手来说还是很实用的*/ /*******************************************************************/ /* */ /* 单片机开发系统演示程序 - INT0 INT1 中断计数 */ /* */ /* 6位数码管显示 */ /*
[单片机]
STM8L探索套件学习笔记-EXTI外部中断(二)
上节讲到GPIO口可以作为外部中断使用,今天我们就使用探索套件上的USER按键,翻转LED1灯。外部中断叙述如下图所示,USER KEY连到的是PC.1所以使用的是EXTI1中断线,和STM32的中断方式比较接近。 首先我们把KEY的GPIO设置为输入中断使能 GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_IT); 然后配置中断1为下降沿低电平触发 EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling_Low); 设置中断的优先级 ITC_SetSoftwarePriority(EXTI1_IRQn, ITC_Pri
[单片机]
HOLTEK单片机-中断优先权测试
功能说明: HT48R50A-1 有3个中断,外部中断,定时器0和定时器1.通过实验就可以了解到他们的优先级关系。 电路说明: 电路图如下图所示: HT48R50A-1 的PA4-PA7各自接一个LED,以便指示正在执行哪一个中断子程序或主程序。 PA6 所接的LED2用来指示定时器0的中断子程序是否正在执行。 PA5 所接的LED3用来指示定时器1的中断子程序是否正在执行。 PA4 所接的LED4用来指示主程序是否正在执行。 完整版本的源程序下载: http://www.51hei.com/f/htzd.rar 程序: #INCLUDE HT48R50A-1.INC ;-------
[单片机]
STM32学习笔记(2)外部中断
一、中断 1.什么是中断 操作系统需要管理外设,但是外设的速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率。 为此我们引入了中断机制,让外设在需要操作系统处理外设相关事件的时候,能够主动通知操作系统,即当CPU收到中断或者异常的事件时,打断操作系统和应用的正常执行,暂停执行当前的程序或任务,让操作系统完成外设的相关处理,在完成对这个事件的处理后,再恢复操作系统和应用的正常执行。 举个栗子,当你在读文章时忽然来了一个电话,你会先去接电话,等电话挂断后你又接着回来读文章,接电话这一过程就是执行中断。 正是由于中断机制,计算机系统才能有条不紊地“同时”完成多个任务,中断机制实质上帮助提高了并
[单片机]
51单片机外部中断的C51编程
学习到中断这卡壳了,先是理解不了两种触发,现在是自己写查询方式的也不对。可能是心不静,也没好好来想想到底是为啥不行?从网上粘点学习的过来吧!我越来越懒了。 以下来自网址: http://bbs.cepark.com/forum.php?mod=viewthread&tid=35813&page=1 谢谢原创! 相关知识: 1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0; 2、中断源的编号: 串行口中断为4、定时中断1为3、外部中断1为2、定时中断0为1、外部中断0为0; 3、中断源的优先级:按以上顺序排列,串行口中断最低、外部中断0最高; 4、使用外部中断0和1,必
[单片机]
STM32之EXTI(中断)
什么叫中断?(学过51单片机的肯定不陌生!!) EXTI(External interrupt)指的是外部中断,通过GPIO检测输入脉冲,引起中断事件,打断原来的代码执行流程,进入到中断服务函数中进行处理,处理完后,再返回到之前中断的代码继续执行 stm32的中断和异常(在stm32中,所有的GPIO都可以用作外部中断源的输入端) 在stm32的中断向量表是重新进行编排的,(Cortex内核中,打断代码执行流程的事件分为异常(exception)以及中断(interrupt),编号0~15为内核异常,16以上都是外部中断(外部,是相对内核而言)) 把编号-3至6的中断向量定义为系统异常,编号为负的内核异常不能被设置优先
[单片机]
ARM中外部中断
在整个ARM体系结构中,为了处理外部中断,依次学习了MMU,模式跳转,异常,GIC,看门狗程序,这些都是为了处理外部中断 具体如下: 处理外部中断有五个步骤: 30 //step 1: cpu cpsr 31 __asm__ __volatile__( 32 mrs r0, cpsr\n 33 bic r0, r0, #0x80\n //设置CPSR的I位,将IRQ位打开 34 msr cpsr, r0\n 35 ::: r0 36 ); 37 38 //setp1:GIC 39 ICCICR_CPU0 = 1; 40 ICCPMR_C
[单片机]