收藏 分销(赏)

ARM中断编程实验.docx

上传人:二*** 文档编号:4746870 上传时间:2024-10-11 格式:DOCX 页数:9 大小:627KB 下载积分:5 金币
下载 相关 举报
ARM中断编程实验.docx_第1页
第1页 / 共9页
本文档共9页,全文阅读请下载到手机保存,查看更方便
资源描述
数字信息技术实验 学 校 学 院 专 业 实验题目 ARM 中断实验编程 小组成员 二Ο一七年三月 一.实验目的 通过本次实验了解中断是什么以与学会如何进展中断编程。 二.实验要求 根底实验:利用 Exynos4412 的 K1、 K2 这 2 个 I/O 引脚的中断模式,分别点亮LED1和LED2, 扩展实验:配置K3为中断模式,点亮LED3. 三.实验仪器 1、计算机 2、USB转9脚串口线〔通过USB与计算机连接,母头与实验平台连接〕 3、Exynos4412处理器开发与应用实验平台 4、BL-JTAG 仿真器〔通过USB与计算机连接, JTAG口与实验平台连接〕 5、电源线〔与实验平台相连接的交流电源线〕 四.实验原理 1.电路原理 K1、 K2、K3 分别与 GPX1_1、 GPX1_2、 GPX3_2相连, 在没有按下按键时这些引脚上一直处于高电平,当按键按下时产生下降沿触发中断。 EXYNOS4412 中断实验电路图 实验箱上按键位置 2、 编程流程 去除 GPX1_2、 GPX1_2, GPX3_2 部上下拉属性,配置为中断模式 。 GPIO 控制器中关闭屏蔽、使能中断; 在 GIC 中断控制器中使能中断; 设置中断优先级; 使能 GIC; 选择中断发送给 CPU0; 等待中断产生,然后进入中断处理函数; 去除中断源。 五.实验容 (1) 连接好开发板与计算机之间的串口线和 BL-JTAG 仿真器 (2) 连接好开发板的交流电源线 (3) 接下来利用计算机演示集成开发环境的使用,以与LED灯的控制实验软硬件仿真流程,翻开Eclipse,导入工程Key_Int,进展相应代码编写,编译,配置相关debug信息,装载程序,按下KEY1,KEY2,KEY3在putty串口终上查看相应的信息输出以与可以看到LED1和LED2和LED3亮灭情况。 六. 实验步骤 根据实验一步骤,连接仿真器、串口线,翻开Eclipse,导入工程Key_Int,进展相应代码编写,编译,配置相关debug信息,装载程序,按下KEY1,KEY2,在putty串口终端上查看相应的信息输出以与可以看到LED1和LED1亮灭情况。 修改代码,完成扩展实验 K3中断签需要配置的存放器 GPX3.PUD 4-5位设为0 GPX3.CON 8-11位设为0XF EXT_INT43_CON 8-11位设置为0x2 EXT_INT43_MASK 第2位设为0 ICDISER.ICDISER2 第0位设为1 K3中断效劳程序中需要配置的存放器 GPX1.DAT 第3位和第5位为0 GPL1.DAT 第1位为1 EXT_INT43_PEND 第2位设为1 ICDICPR.ICDICPR2 第0位设为0 七.实验结果 可以看到按下K1对应的按键第一颗灯亮第二颗和第三颗灯灭 可以看到按下K2对应的按键第二颗灯亮第一颗和第三颗灯灭 可以看到按下K3对应的按键第三颗灯亮第一颗和第二颗灯灭 代码分析〔主要对LED3的代码分析,LED1与LED2的编写根本类似〕: //Interrupt GPX3_2: Turn off LED1, turn off LED2, turn on LED3 //此处编写LED相关处理 GPL1.DAT |= 0x1 << 1; //turn on LED3 GPX1.DAT &= ~(0x1 << 5); GPX1.DAT &= ~(0x1 << 3);//Turn off LED1, turn off LED2 EXT_INT43_PEND |= 0x1 << 2; //EXT_INT43_PEND 第2位设为1 ICDICPR.ICDICPR2 &= ~(0x1 << 0);//ICDICPR.ICDICPR2 第0位设为0 printf("PWRON3(GPX1_1:XEINT09) IRQ interrupt !! Turn on LED1, turn off LED2, turn off LED3\n"); //Clear Pend //此处去除K3对应的中断标志位 break; 这段代码是扩展实验的代码,该段执行的是当按下K3按键时cpu检测到相应中断源产生,进入switch选择,LED3常亮,关闭LED1,LED2 //在此处添加K3的相关存放器配置 GPX3.PUD = GPX3.PUD & ~(0x3 << (2*2)); // GPX3.PUD 4-5位设为0 GPX3.CON = (GPX3.CON & ~(0xF << (2*4))) | (0xF << (2*4)); //GPX1_3: 8-11位设为0XF EXT_INT43_CON = (EXT_INT43_CON & ~(0x7 << (2*4))) | 0x2 << (2*4);//EXT_INT43_CON 8-11位设置为0x2 EXT_INT43_MASK = (EXT_INT43_MASK & ~(0x1 << 2)); // 第2位设为0 //配置K3对应的ICDISER.ICDISER2 ICDISER.ICDISER2 |= 0x1 <<0; //第0位设为1 结果分析 在完成扩展实验的代码并烧录进去后,LED4是不断闪烁的,按下K1时,LED1灯常亮 LED2 LED3熄灭,当按下K2时,LED2常亮 LED1 LED3熄灭,当按下K3时,LED3常亮而LED1 LED2熄灭。到达了实验要求 源程序先配置存放器去除上拉电阻以与配置GPIO为中断属性,配置中断触发方式等一系列的配置操作进展中断代码的配置初始化,然后再在中断函数中写入中断函数的代码进展配置,在main()函数中,通过不断配置GPL2.DAT存放器让LED4不断进展闪烁的操作。在中断函数过按下按键,亮起对应的LED灯到达实验要求 心得体会 通过这次实验,我们进一步了解了中断代码的程序编写以与对这款芯片的使用,在以前的课程学习中我们接触过根底的51系列单片机中断程序的编写,中断程序的编写思路根本一致,都是在main函数中进展存放器相关的配置,在中断函数中写入中断代码等待中断函数的执行。但是对不同类型的芯片具体的使用过程就会有所不同,这款芯片比起最根底的51系列要复杂一些所以初始化存放器的配置过程要繁琐一些,对于存放器的使用要更复杂,中断函数并没有像以前的那样专门有interrupt的注释,初次承受感觉难以适应。 实验的过程中因为仿真器的问题代码无法烧录进去和其他繁琐的操作导致实验过程中出现了一些小障碍,起初并不能到达要求的结果,但出现了问题与时发现问题的所在之处能够更快的帮助我们提高自己处理问题的能力并让我们对这次实验的体会也更加深刻。 9 / 9
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服