收藏 分销(赏)

嵌入式系统实验2中断实验.doc

上传人:仙人****88 文档编号:8225917 上传时间:2025-02-08 格式:DOC 页数:5 大小:144.50KB
下载 相关 举报
嵌入式系统实验2中断实验.doc_第1页
第1页 / 共5页
嵌入式系统实验2中断实验.doc_第2页
第2页 / 共5页
点击查看更多>>
资源描述
中 南 大 学 嵌入式系统实验(二) 中断实验 学 院:************** 专业班级:********* 姓 名:************* 学 号:************* 中断实验 一. 实验目的 1. 熟悉arm开发板中断原理。并产生中断。 2. 了解快速中断和普通中断。编写嵌套中断实验。 二. 实验器材 PC机一台,周立功开发板一块 三.实验原理 EasyARM2103开发板提供了4个绿色发光二极管用作显示,电路如图1.1所示。显示电路采用了灌电流的方式来驱动发光二极管,由于微控制器LPC2103 I/O口提供的灌电流大于其拉电流,采用此驱动方式可以保证二极管发光的亮度。 1.1 Led电路原理 四. 实验原理 ARM体系的CPU有7种工作模式,可以通过软件来进行模式切换,或者发生各类中断、异常进行相应模式。CPU可以识别两种类型中断,正常中断(IRQ)和快速响应中断(FIQ)状态寄存器的PSR中F和R位决定是中断的启闭。为了使能中断,必须将PSR中F或R位清零,并且中断屏蔽寄存器相应位也要清零。 ARM中断分为子中断源和一般中断源,子中断源多了两个寄存器SUBRCPN(标识子中断源是否发生)INTSUBMSK(屏蔽子中断源)。 ARM中断发生过程如下:   1.如果为子中断源,则SUBSRCPND寄存器相应位置1,然后根据子中断源屏蔽寄存器(INTSUBMSK)的设置来判断该中断是否被屏蔽,如未屏蔽,则在SRCPND寄存器相应位置1。   2.如果为非子中断则直接在SRCPND寄存器相应位置1。    3. 如果INTMOD寄存器中该中断被设置为FIQ快速中断(相应位置1),即该中断立即执行。如不是,则判断INTMSK寄存器中该中断是否被屏蔽,如未屏蔽,则进入中断优先仲裁器进行中断优先设置(PRIORITY寄存器)     经过中断优先仲裁后,最高优先级的中断在INTPND寄存器中相应位置1(同一时间,此寄存器只有一位置1),INTOFFSET寄存器值用来表示INTPND寄存器置1位(即INTPND寄存器中位[x]为1时,INTOFFSET寄存器值为x,可以用它确定是什么中断。 要启用一个中断,我们主要设置以下寄存器: 1、INTMOD设置是否为快速中断(一个系统中只能有一个快速中断,默认没有快速中断,如不使用,可以不用设置) 2、INTMSK设置该中断是否被屏蔽 3、 PRIORITY设置该中断的优先级 如为子中断源,还需设置 4、INTSUBMSK设置子中断源是否被屏蔽 如果外接中断,还需设置以下寄存器: 5、GPXCON设置相应引脚为中断输入 6、EINTMASK设置外部中断输入使能 7、EXTINT0-EXTINT2设置外部引脚输入中断电平信号类型 其中,为外部中断输入时,EINTPEND寄存器用于保存是否有中断发生。EINTMASK 、EINTPEND寄存器[3-0]位保留取值为0。 中断信号清除 清除中断时在EINTPEND、 INTPND、SUBSRCPND及SRCPND寄存器该位写入1令此位为0,写入0效果。其清除过程为EINTPEND、SUBSRCPND、SRCPND 、INTPND,否则,将导致无限次中断。 五.  实验内容及步骤 1. 下面以GPIO的中断测试程序为例,熟悉EasyJTAG-H软件的使用方法,程序功能设计为控制单路LED闪烁,硬件电路如图1.1所示。 2. 打开示例工程。示例工程路径:配套光盘内容->光盘内容v1.00->3.EasyARM2103安装手册->GPIO Test,将此文件夹复制到其它目录下打开,要求存放目录必须无中文路径。打开文件夹后,建议用户先删掉“GPIO_Test_Data”文件夹,然后双击打开“GPIO Test.mcp”文件,即打开示例工程。 3. 点击“user”文件夹,打开main.c文件,见到示例代码 4. 编译连接工程。项目目标栏处选择DebugInFlash模式,然后编译连接工程。 5. 仿真调试 。将计算机并口与EasyJTAG-H仿真器相连,然后再将EasyJTAG-H仿真器的JTAG接口连接到EasyARM2103目标板上,打开H-JTAG,检测到芯片内核信息后,选择Auto Download选项,此时会自动启动H-Flasher软件,选择目标芯片的型号,将当前的配置信息保存起来,建议将配置信息保存到安装路径下的Hconfig文件夹内。 6. 设置完成后,关闭H-JTAG Server和H-Flasher(注意:不能使用Exit项关闭)。启动AXD,打开【Options】->【Configure Target...】,弹出Choose Target窗口,点击“ADD”添加仿真器的驱动程序,在添加文件窗口选择如D:\Program Files\H-JTAG 目录下的H-JTAG .dll,点击“打开”即可。 7. 为实现嵌套中断,修改main.c函数,重复上述步骤。 8. 在AXD环境点击运行,即可看到主程序led亮。通过中断按键,使其他led灯亮。 六. 附源代码如下: #include "config.h" #define LED 1 << 17 /********************************************************************************************************* ** Function name: Eint0IRQ ** Descriptions: 外部中断0服务程序 ** input parameters: 无 ** ouput parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void __irq Eint0IRQ(void) { /* 进入中断取反LED */ if ((IO0PIN & (1 << 17)) == 0) { IO0SET = 1 << 17; /* 熄灭发光二极管 */ } else { IO0CLR = 1 << 17; /* 点亮发光二极管 */ } while((IO0PIN & (1 << 16)) == 0); /* 等待按键松开 */ EXTINT = 0x01; /* 清中断标志 */ VICVectAddr = 0x00; /* 通知VIC中断处理结束 */ } /********************************************************************************************************* ** Function name: main ** Descriptions: P0.16低电平触发外部中断主函数 ** input parameters: 无 ** ouput parameters: 无 ** Returned value: 无 *********************************************************************************************************/ int main (void) { PINSEL1 = PINSEL1 & (~0x03); PINSEL1 = PINSEL1 | 0x01; /* 设置P0.16为外部中断0管脚 */ PINSEL1 = PINSEL1 & (~(0x03 << 2)); /* 设置P0.17为GPIO功能 */ IO0DIR = LED; /* 设置P0.17为输出 */ IO0SET = LED; /* 设置输出为高电平 */ IRQEnable(); /* IRQ中断使能 */ EXTMODE = 0x00; /* 设置外部中断为低电平触发 */ EXTPOLAR = 0x00; VICIntSelect = 0 << 14; /* 选择EINT0为FIQ中断 */ VICVectCntl0 = 0x20 | 14; /* 将外部中断0分配给向量中断0 */ VICVectAddr0 = (uint32)Eint0IRQ; /* 设置中断服务程序地址 */ VICIntEnable = 1 << 14; /* 使能EINT0中断 */ EXTINT = 0x01; /* 清除EINT0中断标志 */ while(1); return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服