嵌入式实验4(中断处理程序设计)
更新时间:2023-10-08 08:42:01 阅读量: 综合文库 文档下载
北华航天工业学院
《嵌入式系统基础》课程实验报告
实验名称编号: 实验4 中断处理程序设计 作者所在系部: 计算机科学与工程系 作者所在专业: 计算机科学与技术 作者所在班级: B09513 作 者 学号: 20094051329 作 者 姓 名 : 康建云 教 师 姓 名: 李建义
一 、实验内容
1.本实验涵盖实验手册《ARM嵌入式系统设计及接口编程实验教程》中的实验9
中
断处理程序设计。
2.修改程序,使得当四个中断源中断时分别调用实验二 跑马灯实验的实验内容第二项中编写的一个函数,即不同中断将控制四个跑马灯的闪烁顺序。
二、实验要求
1.了解ARM处理器中断处理过程。
2.掌握S3C2440下进行中断编程的方法,包括中断设置、中断服务子程序的编写。 3.理解实验手册中的实验9的实验程序。 4.编程实现实验内容中第2项任务。 5.撰写实验报告描述实现上述个要求的情况。
三、实验思路
在SinoSys-M3中,已经将EINT0、EINT1、EINT2、EINT19、EINT11作为外部中断源和开发板上位号为SW1、SW2、SW3、SW4的这四个小按键相连。在实验的过程中,在运行之后,按下开关板上这四个按钮,将触发处理器的四个外部中断,处理器转而去执行相应的中断服务程序,在中断服务程序中,向串口打印中断信息,并输出到开发主机的串口终端工具上。因为key=1、key=3、key=5、key=7分别对应SW1、SW2、SW3、SW4四个按钮。所以改程序时只需控制key值在不同值下的灯亮情况即可,修改程序实现跑马灯不同亮的次序并循环五次,所修改的程序如下:
四、实验程序
static void __irq Key_ISR(void) { int i; U8 key; if(rINTPND==BIT_EINT8_23) { ClearPending(BIT_EINT8_23); if(rEINTPEND&(1<<11)) { Uart_Printf(\ rEINTPEND |= 1<< 11; } if(rEINTPEND&(1<<19)) { Uart_Printf(\ rEINTPEND |= 1<< 19; }} if(rINTPND==BIT_EINT0) {//Uart_Printf(\ ClearPending(BIT_EINT0); } if(rINTPND==BIT_EINT2) { Uart_Printf(\ ClearPending(BIT_EINT2); } key=Key_Scan();
if(key==1)//从左到右依次亮
{ for(i=0;i<5;i++){ rGPFDAT=rGPFDAT&0x0F|0xE0; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0xD0; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0xB0; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0x70; Delay(2000); }} if(key==3) //从右到左依次亮 { for(i=0;i<5;i++){ rGPFDAT=rGPFDAT&0x0F|0x70; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0xB0; Delay(1000);
rGPFDAT=rGPFDAT&0x0F|0xD0; Delay(1000);
rGPFDAT=rGPFDAT&0x0F|0xE0; Delay(2000); }} if(key==5) //从左边两个到右边两个到两边的两个到中间两个依次亮 { for(i=0;i<5;i++){ rGPFDAT=rGPFDAT&0x0F|0xC0; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0x30; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0x90; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0x60; Delay(2000); }}
if(key==7) //从中间两个到两边两个到右边的两个到左边两个依次亮 { for(i=0;i<5;i++){ rGPFDAT=rGPFDAT&0x0F|0x60; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0x90; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0x30; Delay(1000); rGPFDAT=rGPFDAT&0x0F|0xC0; Delay(2000); }}
五、实验结果及实验问题分析 1.实验结果
更改代码后,分别按下sw1、sw2、sw3、sw4按钮,主函数调用keyscan.c文件,继而调用中断服务子程序,根据相应key==1、key==3、key==5、key==7,按实验要求分别实现了使四个灯的闪烁顺序依次为左1灯亮?左2灯亮-?左3灯亮-?左4个灯亮-?四个灯全灭的中断控制;左4灯亮?左3灯亮-?左2灯亮-?左1个灯亮-?四个灯全灭;左1、2灯亮?左3、4个灯亮-?两边两个灯亮-?中间两灯亮-?四个灯全灭;左3、4灯亮-?左1、2个灯亮-?中间两个灯亮-?两边两个灯亮-?四个灯全灭。并且实验结果都是正确的。
2、实验总结:
原程序每次按键触发中断时,中断发生的次数是不固定的,其原因在于对中断寄存器
设置是低电平触发,若长按键则会多次调用中断服务子程序,即中断发生的次数不固定。正确做法:设置中断为低电平触发,中断寄存器设置代码更改部分如下:
rEXTINT0 &=~(7|7<<8);
rEXTINT0 |= (2|2<<8); // set EINT0,2 low power rEXTINT0 &=~(7<<12);
rEXTINT0 |= (2<<12); // set EINT 11 low power rEXTINT0 &=~(0xF<<12);
rEXTINT0 |= (2<<12); // set EINT 19 low power
通过本次实验,基本掌握了中断程序的中断原理,也掌握了用实验箱上按钮控制跑马灯循环亮的情况,也了解并掌握了中断服务子程序的原理。并且掌握了在S3c2440控制台下进行中断服务子程序的编程方法。
正在阅读:
嵌入式实验4(中断处理程序设计)10-08
江西高考历史二轮复习之专项训练效果检测题37Word版含答案09-23
垃圾制砖项目可行性研究报告(专业经典案例)word - 图文11-28
河北省辛集中学2017-2018学年高一下学期地理暑假作业:必修一第二章自然环境中的物质运动和能量交换 含答案01-04
家装设计师渠道预热促销活动政策:03-19
一种应用在电动车上的数字速度_里程表方案04-15
AA320N说明书10-31
机动车辆保险合同2019新整理版 doc03-05
最新校园通讯稿 - 北辛街道马王小学“三套马车”为平安校园助力04-29
安全生产投入管理制度07-01
- 人教新课标必修4 Unit2 Working the land名师导航
- 毕业生“校漂族”大行其道 - 0
- 江苏各市中考作文题出炉 - 0
- 暑期精品班 - 三角形 - 图文
- 情人节送什么礼物好??超强礼物已抵达
- 工程项目管理制度1
- 第四次业务学习 2016
- 会计要素与会计科目
- 欠发达地区小企业会计准则运用问题研究
- 一级锅炉水G4题库
- BBD双进双出筒式磨煤机安装使用说明书 SM-1
- 初一数学有理数教案
- 渝北区房地产评估市场调研报告
- iWebMall 数据字典
- 2018年小学入学教育工作计划
- 计量专业实务与案例分析 - 模拟题三 - 2013年版
- 启示录讲义
- 路基灰土改良(方案)
- 人行反洗钱岗位准入培训测试题集
- 2015电大《学前儿童发展心理学》期末试题及答案
- 程序设计
- 嵌入式
- 中断
- 实验
- 处理
- 计算机网络复习题及答案
- 小学科学三年级下册演示实验报告单 - 图文
- RepRap 3D打印机G-code命令专家详解
- 一篇价值百万的古方 - 图文
- 2017年10月自考-市场营销学(00058)试题及答案
- 主题班会之班会课听课评语
- 大学生个人理财规划书
- 小学开展小课题研究实施方案
- 微生物的危害
- 环球华商财富精英邀请名单
- 第九单元 认识百分数
- (5套)2019年高考英语必修1(全册)课本知识点汇总(含单词及语法)附练习及答案
- 灯丝转换继电器
- 测量员三坐标考试试题卷范本
- 事业单位公开招聘拟聘用人员公示表 - 图文
- 监理工程师考试《建设工程合同管理》全真习题及答案二
- 装修房子最省钱的经验
- 《成本会计》计算分析题
- 建筑施工企业定额应用与管理问题
- 莫砺锋:《诗歌唐朝》讲座5