嵌入式系统实训报告-外部中断
嵌入式中断实验报告心得

一、实验背景随着物联网、智能制造等领域的快速发展,嵌入式系统在各个行业中扮演着越来越重要的角色。
中断技术作为嵌入式系统的重要组成部分,对于提高系统的实时性、可靠性和响应速度具有重要意义。
为了更好地掌握中断技术,我进行了嵌入式中断实验,以下是我对实验的心得体会。
二、实验目的1. 理解中断的概念、作用及中断处理流程;2. 掌握嵌入式系统中断的配置方法;3. 学会编写中断服务程序;4. 通过实验验证中断技术的应用效果。
三、实验内容1. 硬件环境:嵌入式开发板、仿真器、连接线等;2. 软件环境:嵌入式操作系统、集成开发环境、仿真器驱动程序等;3. 实验步骤:(1)搭建实验环境,包括硬件连接和软件配置;(2)配置中断源,如GPIO、定时器等;(3)编写中断服务程序,实现中断响应和处理;(4)通过仿真器观察实验效果,验证中断技术。
四、实验心得1. 理解中断原理在实验过程中,我首先学习了中断的基本概念和作用。
中断是指当外部事件发生时,系统暂停当前执行的任务,转而执行中断服务程序,处理外部事件。
通过实验,我明白了中断处理流程,包括中断请求、中断响应、中断处理和中断返回等环节。
2. 中断配置方法在实验中,我学习了如何配置中断源。
以GPIO为例,首先需要设置GPIO引脚为中断模式,然后配置中断触发方式(上升沿、下降沿或双边沿触发),最后设置中断优先级。
通过实验,我掌握了中断配置方法,为后续应用中断技术打下了基础。
3. 编写中断服务程序中断服务程序是中断处理的核心,我通过实验学会了编写中断服务程序。
在编写过程中,需要注意以下几点:(1)保护现场:在中断服务程序开始执行前,需要保存当前CPU状态,如寄存器值等;(2)处理中断:根据中断类型,执行相应的处理逻辑;(3)恢复现场:在中断服务程序执行完毕后,需要恢复CPU状态,以便继续执行被中断的任务。
4. 实验效果验证通过仿真器观察实验效果,我发现中断技术能够有效地提高系统的响应速度和实时性。
嵌入式中断按键实验报告

嵌入式中断按键实验报告本实验的目的是学习如何在嵌入式系统中使用中断来处理按键输入。
通过该实验,我们可以掌握如何配置和使用中断,以及如何编写中断服务程序来处理按键输入。
实验材料:1. 嵌入式开发板2. 按键模块3. 电源适配器实验步骤:1. 将按键模块连接到嵌入式开发板的GPIO引脚上,确保连接正确。
2. 打开开发板的开关,给开发板供电。
3. 在开发板上配置GPIO引脚作为中断输入,并使能中断。
4. 编写中断服务程序来处理按键输入。
当按键被按下时,中断服务程序将被调用,并执行相应的操作。
5. 在主程序中初始化中断服务程序,并进入一个无限循环。
在该循环中,可以进行其他的操作,并等待按键中断的发生。
实验结果:在实验中,我们成功地配置并使用了中断来处理按键输入。
当按键被按下时,中断服务程序被调用,并执行了相应的操作。
讨论与分析:通过该实验,我们学习到了中断的基本原理和使用方法。
中断是一种非常重要的机制,可以使嵌入式系统更高效地响应外部事件。
在实际的嵌入式应用中,按键输入是非常常见的操作,使用中断可以很好地处理按键输入,提高系统的响应速度和可靠性。
然而,中断也存在一些问题。
首先,中断处理需要一定的时间,在高速的系统中,中断的处理时间可能会影响到系统的性能。
另外,当系统存在多个中断源时,中断处理的优先级和调度也需要仔细设计,以确保系统的正常运行。
总结:通过本实验,我们成功地学习了嵌入式系统中使用中断处理按键输入的方法。
中断是一种重要的机制,可以使系统更高效地响应外部事件。
通过合理地设计和使用中断,可以提高系统的性能和可靠性。
在实际的嵌入式应用中,我们应该根据具体的需求和系统条件来选择最合适的中断处理方法,并进行适当的优化和调试。
嵌入式技术及应用实验中断实验报告

实验步骤与结果分析1、建立工程1)、在工程文件中包含如下文件(int、doc、user、lib、start)2)、选择STM32F103VB芯片3)、分别添加如下文件2、运行过程(1) 使用Keil uVision3 通过ULINK仿真器连接EduKit-M3实验平台,打开实验例程NVIC_test子目录下的NVIC.Uv2例程,编译链接工程;(2) 点击MDK 的Debug菜单,选择Start/Stop Debug Session项或Ctrl+F5键,远程连接EduKit-M3实验平台并下载调试代码到目标系统的RAM中;(3) 程序正常启动运行后,会有以下结果:当第一次发生EXTI9 中断后(按下EduKit-M3实验平台上Key按钮),SysTick 中断的优先级比EXTI0中断优先级高。
因此当EXTI0中断发生时(按下Wakeup按钮),将先执行主要程序代码分析/* Configure one bit for preemption priority */NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);主从优先级的选择Group_1,有先占优先级1位,从优先级3位//配置一个比特为抢占优先级/* Enable the EXTI0 Interrupt */ //使能EXTI0中断NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = PreemptionPriorityValue;主优先级的选择PreemptionPriorityValueNVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//从优先级等于0.NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Enable the EXTI9_5 Interrupt */ //使能EXTI9_5中断NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//EXTI9_5主优先级的选择等于0NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* Configure the SysTick Handler Priority: Preemption priority and sub priority */ //配置SysTick处理程序优先级:抢占优先级和子优先级NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, !PreemptionPriorityValue, 0);while (1){if(PreemptionOccured != FALSE)//当PreemptionOccured != FALSE)抢占发生{GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_7, (BitAction)(1 -GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_7)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_8)));Delay(0x5FFFF);GPIO_WriteBit(GPIOC, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_9)));Delay(0x5FFFF);}}void GPIO_Configuration(void){/* Configure PC6, PC7, PC8 and PC9 as output push-pull */ 使能为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //使能其速度为50MHz GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //使能为推挽输出GPIO_Init(GPIOC, &GPIO_InitStructure);/* Configure GPIOA Pin0 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为浮空输入GPIO_Init(GPIOA, &GPIO_InitStructure);/* Configure GPIOB Pin9 as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 使能为推挽输出入GPIO_Init(GPIOB, &GPIO_InitStructure);}GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);/* Configure EXTI Line0 to generate an interrupt on falling edge */ 配置EXTI Line0产生一个中断在下降沿EXTI_InitStructure.EXTI_Line = EXTI_Line0;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);(写不完时,可调整表结构。
外部中断实验报告

外部中断实验报告外部中断实验报告引言:外部中断是计算机系统中的一种重要机制,它可以响应外部事件并中断正在执行的程序。
本实验旨在通过设计和实现一个外部中断的示例,加深对外部中断的理解和应用。
实验目的:1. 理解外部中断的概念和原理;2. 掌握外部中断的编程方法;3. 设计和实现一个基于外部中断的应用。
实验设备和材料:1. 一台支持外部中断的计算机;2. 开发板或模块,用于外部中断的触发。
实验过程:1. 硬件连接:将开发板或模块与计算机连接,并确保连接正确和稳定。
2. 编写中断处理函数:在编程环境中,编写一个中断处理函数,用于处理外部中断触发时的操作。
可以根据实际需求,设计适当的处理逻辑。
3. 配置中断触发条件:根据实验要求,配置外部中断触发的条件。
可以通过设置开关、按键或其他外部信号来触发中断。
4. 编写主程序:编写一个主程序,用于初始化外部中断和执行其他操作。
在主程序中,需要配置外部中断的相关寄存器和中断向量表。
5. 运行实验:将程序下载到计算机中,并运行实验。
通过触发外部中断条件,观察中断处理函数的执行情况。
实验结果与分析:在实验中,我们成功实现了一个基于外部中断的应用。
当外部中断触发条件满足时,中断处理函数被调用,并执行相应的操作。
通过实验观察和分析,我们可以得出以下结论:1. 外部中断可以在计算机系统中实现对外部事件的及时响应,提高系统的实时性和可靠性。
2. 外部中断的触发条件可以灵活配置,可以通过外部设备或信号的变化来触发中断。
3. 中断处理函数的执行时间相对较短,可以在不影响主程序正常运行的情况下完成相应的操作。
4. 外部中断的应用范围广泛,可以用于实现各种实时控制、通信和交互功能。
实验总结:通过本次实验,我们深入了解了外部中断的原理和应用,并成功设计和实现了一个基于外部中断的应用。
外部中断作为计算机系统中的重要机制,具有重要的意义和应用价值。
在今后的学习和实践中,我们应进一步探索和应用外部中断,为计算机系统的性能和功能提供更多的可能性。
外部中断的实验报告

一、实验目的1. 理解外部中断的概念和作用。
2. 掌握外部中断的编程方法。
3. 熟悉中断处理程序的设计和调试。
二、实验原理外部中断是指由外部设备或信号产生的中断,用于处理与CPU无关的事件。
在微机系统中,外部中断通常用于处理输入/输出设备的中断请求。
外部中断分为可屏蔽中断和不可屏蔽中断两种类型。
三、实验环境1. 开发平台:Keil uVision 52. 微控制器:STM32F103C8T63. 外部设备:按钮、LED灯4. 连接方式:通过GPIO引脚连接四、实验步骤1. 设计外部中断电路(1)将按钮连接到STM32F103C8T6的GPIO引脚,例如PA0引脚。
(2)将LED灯连接到STM32F103C8T6的另一个GPIO引脚,例如PB0引脚。
2. 编写外部中断初始化程序(1)在Keil uVision 5中创建一个新项目,并添加STM32F103C8T6的起始代码。
(2)在主函数中编写初始化程序,包括以下步骤:a. 配置PA0引脚为输入模式,设置为浮空输入。
b. 配置PB0引脚为输出模式,用于控制LED灯。
c. 使能中断,设置中断优先级。
d. 配置NVIC(嵌套向量中断控制器)以允许外部中断。
3. 编写外部中断处理程序(1)在项目中添加一个新的C文件,用于编写外部中断处理程序。
(2)编写外部中断处理函数,当按钮按下时,触发中断,控制LED灯闪烁。
a. 初始化外部中断处理函数,设置中断优先级和中断触发方式。
b. 在外部中断处理函数中,编写LED灯控制代码,实现LED灯闪烁。
4. 编译并下载程序(1)编译项目,生成.hex文件。
(2)将.hex文件下载到STM32F103C8T6开发板上。
5. 测试实验结果(1)将按钮按下,观察LED灯是否闪烁。
(2)松开按钮,LED灯停止闪烁。
五、实验结果与分析1. 实验结果实验过程中,当按钮按下时,LED灯闪烁;松开按钮后,LED灯停止闪烁。
实验结果表明,外部中断能够正确地处理外部设备的中断请求,并控制LED灯的亮灭。
(单片机原理与应用实验)实验4外中断实验

可通过硬件电路和程序操作实现中断的暂停、延迟和关闭。
单片机中断的限制与局限性
一次中断只能处理单 一任务
每次中断响应只能处理一个事 件,无法同时执行多个中断任 务。
对中断处理的时间和 精度要求较高
中断程序需要快速响应和实现, 并保持高精度和低误差。
中断任务的开销和存 储空间较大
智能门锁
中断用于执行网络任务并接收无 线信号,保证网络的稳定和性能。
中断用于检测密码和指纹等,实 现智能门禁功能和安全保障。
交通信号灯
中断用于控制信号变化和流量监 测,实现交通安全和效率。
中断优先级的控制与调度
提高任务的优先级
终止当前执行的任务,并开始响应更高优先级的中断任务。
屏蔽低优先级的中断
阻止低优先级的中断过程,优先完成高优先级的中断任务并避免误操作。
采用合适的中断驱 动模式
不同的中断驱动模式有着不 同的优点和局限性,需要根 据实际情况及时调整。
对中断控制和优先 级进行优化
中断控制和优先级的设置能 够直接影响到中断系统的性 能和效率,应进行优化和梳 理。
定期检测和维护中 断系统
中断系统的稳定性和可靠性 需要定期检查和维护,及时 修复故障和调整优化。
可能是中断控制端口连接错误或电路设计有误,需要检查原理图和程序,并进行调试和 重组。
2 问题2:中断运行速度太慢。
可能是程序优化不当或中断优先级设置有误,需要进行程序的升级和重新排列优先级。
实验效果的总结与评估
实验优点
本次实验通过对中断控制的学习和探究,深入理解 了单片机系统设计的基本原理和应用方法。
常见中断相关问题与FAQ
1 中断和定时器有什么 2 什么情况下需要进行 3 如何调整中断控制的
单片机外部中断实训报告

一、实训目的1. 理解单片机外部中断的概念和作用。
2. 掌握单片机外部中断的配置方法。
3. 学会编写外部中断服务程序。
4. 通过实际操作,提高单片机编程和调试能力。
二、实训内容1. 单片机外部中断原理2. 单片机外部中断配置3. 外部中断服务程序编写4. 实验验证与调试三、实训环境1. 单片机开发板:选用STC89C52单片机。
2. 仿真软件:Proteus。
3. 实验工具:示波器、电源、连接线等。
四、实训步骤1. 理解单片机外部中断原理外部中断是单片机中断系统中的一种,用于响应外部事件。
当外部事件发生时,单片机会暂停当前程序,转去执行外部中断服务程序。
外部中断有多个中断源,如INT0、INT1等。
2. 单片机外部中断配置(1)设置外部中断触发方式:根据需要选择上升沿触发、下降沿触发或双边沿触发。
(2)设置外部中断优先级:根据实际需求设置中断优先级。
(3)设置外部中断使能:通过设置IE寄存器使能外部中断。
3. 外部中断服务程序编写编写外部中断服务程序,用于处理外部中断事件。
在服务程序中,完成相关处理逻辑,如记录外部事件发生次数、控制LED灯闪烁等。
4. 实验验证与调试(1)搭建实验电路:将单片机开发板与外部设备(如按钮)连接,设置好外部中断配置。
(2)在Proteus中搭建仿真电路,编写代码。
(3)下载代码到单片机开发板,观察实验现象。
(4)根据实验现象,调试程序,确保外部中断功能正常。
五、实验结果与分析1. 实验现象:按下外部按钮,单片机进入外部中断服务程序,控制LED灯闪烁。
2. 分析:通过设置外部中断触发方式、优先级和使能,成功实现外部中断功能。
在服务程序中,完成相关处理逻辑,达到预期效果。
六、实训总结1. 通过本次实训,掌握了单片机外部中断的配置方法,学会了编写外部中断服务程序。
2. 熟悉了外部中断在实际应用中的重要作用,提高了单片机编程和调试能力。
3. 在实训过程中,遇到了一些问题,如外部中断响应不及时、LED灯闪烁不稳定等。
嵌入式-中断实验

嵌入式-中断实验
嵌入式中断实验是一种用来测试和学习嵌入式系统中断功能的实验。
中断是嵌入式系统中常用的一种机制,用于处理紧急事件或高优先级任务。
通过中断,系统可以立即响应外部事件,中断当前正在执行的任务,执行与中断事件相关的代码,然后返回到原来的任务中继续执行。
在进行中断实验时,通常需要以下步骤:
1. 确定中断源:确定要模拟的中断事件,比如外部输入的触发事件、定时器到达时间等。
2. 配置中断控制器:根据硬件平台和实验要求,配置中断控制器的相应寄存器,使其能够正确地处理中断信号。
3. 编写中断服务程序(ISR):定义一个中断服务程序,用于
处理中断事件。
ISR应当对事件进行必要的处理,然后返回到
原来的任务中。
4. 测试和调试:连接硬件平台,运行实验程序,并进行测试和调试,确保中断功能正常工作。
5. 扩展和优化:根据需要,可以进一步扩展和优化中断功能,比如增加多个中断源,实现优先级控制,提高系统响应速度等。
通过嵌入式中断实验,可以深入了解中断机制的工作原理和应用方法,提高对嵌入式系统的理解和能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ClearPending(BIT_EINT2); Uart_Printf("EINT2 is occurred.\n"); rGPBDAT ^= 1<<6; }
static void __irq Eint3_ISR(void) {
ClearPending(BIT_EINT3); Uart_Printf("EINT3 is occurred.\n"); rGPBDAT ^= 1<<7; }
{
ChangeClockDivider(3,1);
ChangeMPllValue(127,2,1);
//405MHZ
//Rtc_Init();
//实时时钟初始化
Isr_Init();
Uart_Init(0, 115200);
Uart_Select(0);
七种异常中断
中断过程框图
4.2 异常中断响应过程和返回过程
异常中断的响应过程:
1).保存处理器当前状态寄存器CPSR 的值到备份程序状态寄存器SPSR 中。 2).设置但前程序状态寄存器CPSR 的值,其中包括:设置CPSR 响应位的值,使处理器 进入特定的处理器模式;按要求屏蔽中断,通常应该屏蔽IRQ 中断。在FIQ 中断时屏蔽FIQ 中 断。 3).设置Lr 寄存器。将相应中断模式的Lr 寄存器的值设为异常中断的返回地址。 4).处理程序计数器 PC,将 PC 值设为相应的中断向量的地址,从而实现跳转以执行中 断服务程序。
5、S3C2440A的中断控制器
SRCPND――源中断指示寄存器
SRCPND 寄存器 32 位中的每一位对应着一个中断源,每一位被设置为 1,则相应的中 断源产生中断请求并且等待中断被服务。因此,这个寄存器表明了哪个中断源在等待中断请 求被处理。注意,SRCPND 寄存器的每一位是由中断源自动设置的,而不管INTMSK 寄存 器中的屏蔽位是否置1。另外,SRCPND 寄存器不影响中断控制器的优先级逻辑。
static void __irq Eint4_7_ISR(void) {
if(rEINTPEND & (1<<4)) { Uart_Printf("EINT4 is occurred.\n"); rEINTPEND=(1<<4); ClearPending(BIT_EINT4_7); rGPBDAT ^= 1<<8; } else if(rEINTPEND & (1<<5)) { Uart_Printf("EINT5 is occurred.\n"); rEINTPEND=(1<<5); ClearPending(BIT_EINT4_7); rGPBDAT &= ~(0xf<<5); } else if(rEINTPEND & (1<<7)) { Uart_Printf("EINT7 is occurred.\n"); rEINTPEND=(1<<7); ClearPending(BIT_EINT4_7); rGPBDAT |= (0xf<<5);
在指定中断源的中断服务程序中,SRCPND 寄存器相对应的位必须被清除,这样才可 以正确地响应来自同一中断源的中断请求。如果从 ISR 返回而没有清除相应的位,也就是 SRCPND 寄存器中的对应的位还是1,那么就会一直响应这个中断请求。
SRCPND 中相应的中断标志位清除的时间依赖于用户的需求,如果想要从同一中断源 接收另一次有效的中断请求,你在第一次就应该清除相应的位,并且使能中断。
z 通过外部K1、K2、K3、K4、K5、K7 按键触发外部中断EINT1、EINT2、EINT3、 EINT4、EINT5、EINT7
4、实验原理
4.1 ARM 的异常中断类型
在嵌入式系统中外部设备的功能实现主要是靠中断机制来实现的。中断功能可以解决 CPU 内部运行速度远远快于外部总线速度而产生的等待延时问题。ARM 提供的FIQ 和IRQ 异常中断用于外部设备向CPU 请求中断服务,一般情况下都是采用IRQ 中断。
INTPND――中断请求寄存器 中断请求寄存器32 位中的每一位对应着相应的中断请求,经过优先级逻辑后,INTPND 寄存器只能有一位被设置为1,并且向ARM 产生中断请求。在IRQ 中断服务子程序,能够 读 取这个寄存器的值来决定32 个中断源的那一个中断被服务。 同 SRCPND 寄存器,在中断服务子程序里,这个寄存器的相应位需要被清除。我们可 以 向INTPND 寄存器写一个数据1,来清除寄存器的指定位。
rEINTMASK=~( (1<<4)|(1<<5)|(1<<7) ); rINTMSK=~(BIT_EINT1|BIT_EINT2|BIT_EINT3|BIT_EINT4_7);
}
7.3 中断主程序
/*********** 主程序 ************/
实训中心制
广东岭南职业技术学院
void xmain(void)
用户可以通过向SRCPND 寄存器的相应位写“1”,这样可以清除该位。 下 表为SRCPND 寄存器的地址和位定义说明
INTMOD――中断模式寄存器 中断模式寄存器(INTMOD)的32 位中的每一位对应一个中断源,当INTMOD 的谋一 位 都设置为1,则ARM 内核将以FIQ 模式响应中断,否则将以IRQ 模式响应中断。INTMOD 寄存 器的定义如下表:
static void __irq Eint1_ISR(void) {
ClearPending(BIT_EINT1); Uart_Printf("EINT1 is occurred.\n"); rGPBDAT ^= 1<<5; }
static void __irq Eint2_ISR(void) {
需要注意的是:对于不同的异常中断,其返回地址的计算方法也是不同的,IRQ 和FIQ 异 常中断产生时,程序计数器PC 已经更新,而SWI 中断和未定义指令中断时由当前指令自 身 产生的,程序计数器PC 尚未更新,所以要计算出下一条指令的地址来执行返回操作;指 令 预取指中指异常中断和数据访问中断要求,返回到出现异常的执行现场,重新执行操作。
S3C2440A 异常中断的响应-返回流程图:
保存状态寄存器CPSR->进入特定模式、屏蔽中断->设置Lr 寄存器->设置程序计数 器PC进入中断向量、异常中断的处理程序->恢复状态寄存器->将返回地址复制到程序计 数器
4.3 异常中断的安装
S3C2440A 系统通过异常向量表安装异常中断处理程序。即将异常向量表指向异常中断处理程 序的入口,实现面向异常中断的跳转,异常向量中断的的入口地址是固定的(0x00-0x1C), 系统运行到满足异常中断时,系统将自动跳入相应的异常中断向量表中,而在异 常向量表中 保存的正是利用跳转指令或LDR 指令指向该中断的异常中断处理程序,这就实 现了异常中断 处理程序的安装。
void INIT_interrupt() {
rGPFCON = (rGPFCON & ~((3<<2)|(3<<4)|(3<<6)|(3<<8)|(3<<10)|(3<<14)))|(1<<3)|(1<<5)|(1<<7)|(1<<9)|(1<< 11)|(1<<15); //GPF0/2 = EINT0/2
S3C2440A 子中断列表 SUBSRCPND――次级源中断指示寄存器
INTSUBMSK――次级中断屏蔽寄存器
EINTPND――外部中断判断寄存器 EINTPND 用来判断外部的20 个中断源(EINT[23:4]),用户可以通过向EINTPEND 寄 存 器的相应位写“1”,这样可以清除该位。 EINTMASK――外部中断屏蔽寄存器
广东岭南职业技术学院
EXTINTn――外部中断控制寄存器n 外部中断控制寄存器可以控制外部中断信号有效方式,外部中断信号有效方式可以设置为 电 平触发和边沿触发,具体内容见下表。
6、实验电7.1 外部中断服务程序
/*********** 外部中断服务程序 ************/
INTMSK――中断屏蔽寄存器 在INTMSK 寄存器中,32 位依次对应着每个中断源,如果指定的位被设为1,ARM 将
不响应中断源的中断请求(注意,即使在SRCPND 相应的位被置位1 的条件下也不响应)。如 果屏蔽位为0,则中断请求可以被响应。