实验5S3C2440中断实验_第1页
实验5S3C2440中断实验_第2页
实验5S3C2440中断实验_第3页
实验5S3C2440中断实验_第4页
实验5S3C2440中断实验_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、掌握ARM处理器的中断处理机制及中断响应过程。掌握S3C2440的中断控制寄存器的使用及中断处理程序编程。掌握基于嵌入式裸机系统的中断应用程序设计实现实验内容实验内容一、验证实验一、验证实验 输入并调试实验教程提供的参考程序,实现当按下与实输入并调试实验教程提供的参考程序,实现当按下与实验箱外部中断验箱外部中断3引脚引脚EINT3连接的按键时,使连接的按键时,使8位位LED中的低中的低4位位LED依次点亮后再熄灭。依次点亮后再熄灭。二、设计实验二、设计实验 当多次按下与当多次按下与EINT3连接的按键时,记录按键次数并在连接的按键时,记录按键次数并在低低4位位LED按照二进制方式显示,同时在制

2、定的数码管上以按照二进制方式显示,同时在制定的数码管上以十六进制显示。十六进制显示。实验原理电路实验原理电路nCS_LEDnCS_LED地地址址总总线线驱驱动动数数据据总总线线驱驱动动A26A26A0A0ED7ED7ED0 ED0 nGCS4nGCS4地地址址译译码码 S3C2440S3C2440处理器处理器D31D31D0D0EINT3(GPF3)EINT3(GPF3)3.3V中断信号中断信号按钮按钮8D8D锁锁存存驱驱动动处理器以外部总线扩展方式挂接外设,以地址总线及处理器以外部总线扩展方式挂接外设,以地址总线及BANK4BANK4的片选信的片选信号号nGCS4nGCS4经过译码电路产生经

3、过译码电路产生8 8位发光二极管锁存驱动电路的选通信号,位发光二极管锁存驱动电路的选通信号,以数据线提供显示的以数据线提供显示的8 8位数据。位数据。将将INT3INT3接之以按键接之以按键开关作为中断信号开关作为中断信号输入端,每按一次输入端,每按一次按键产生一次中断按键产生一次中断请求,中断处理请求,中断处理程程序使低序使低4 4位位LEDLED逐个逐个点亮然后再熄灭。点亮然后再熄灭。8D8D锁锁存存驱驱动动8D8D锁锁存存驱驱动动nCS_SEG2nCS_SEG2nCS_SEG1nCS_SEG1nCS_SEG2nCS_SEG2 = =0 x200070000 x20007000nCS_SE

4、G1nCS_SEG1 = =0 x200060000 x20006000nCS_LEDnCS_LED =0 x20005000=0 x20005000nCS_SEG2nCS_SEG2nCS_SEG1nCS_SEG1 . . xxxxxxxxxsubs pc, lr, #4 . . . . . .指令指令i指令指令i+1 . . . . . .sub sp,sp,#4sub sp,sp,#4stmfd sp!,r8-r9stmfd sp!,r8-r9 .依据中断偏移寄存器依据中断偏移寄存器 .ldmfd sp!,r8-r9,pcldmfd sp!,r8-r9,pc . . . .S3C2440中

5、断中断响应响应流程流程图解图解 注:在响应中断请求之前需要构建好异常向量表和二级中断向量表注:在响应中断请求之前需要构建好异常向量表和二级中断向量表 (1)(1)某某IRQIRQ中断源发出中断请求中断源发出中断请求 (2)(2)CPUCPU自动转移到异常向量表内地址自动转移到异常向量表内地址0 x0180 x018去运行。去运行。(3)(3)运行地址运行地址0 x0180 x018中存放的跳转指令,转移到用户编写的中断源识别程序段中存放的跳转指令,转移到用户编写的中断源识别程序段IsrIRQIsrIRQ。(4)(4)寻址二级向量表内寻址二级向量表内HandleXXXHandleXXX地址单元获

6、取向量地址单元获取向量IsrXXXIsrXXX( (地址地址) )并将其置入并将其置入PCPC。(5)(5)跟随跟随PCPC内容转移到起始地址内容转移到起始地址IsrXXXIsrXXX对应的中断处理程序运行。对应的中断处理程序运行。 0 x000000000 x000000040 x000000080 x0000000C 0 x000000100 x000000140 x000000180 x0000001C . .IsrIRQIsrIRQHandleEINT0HandleEINT0( (起始地址起始地址) ) HandleXXX HandleXXX 外设经序号为外设经序号为XXXXXX的中的

7、中断源向断源向CPU发中断请求并发中断请求并触发触发IRQ类型异常。类型异常。跳转到跳转到中中断 源 序 号断 源 序 号(索引值)(索引值)判定程序段判定程序段 寻址二级寻址二级中断向量表中断向量表二级中断向量表二级中断向量表IsrXXXIsrXXX 中断返回中断返回中断处理程序中断处理程序ISR 处理器响应处理器响应中断并自动设置中断并自动设置PC=0 x00000018用户主程序用户主程序中断源判别程序中断源判别程序异常向量表异常向量表(一级向量表一级向量表)第第1次转移次转移第第2次转移次转移第第3次转移次转移b b ResetHandlerResetHandlerb HandlerU

8、ndefb HandlerUndefb HandlerSWIb HandlerSWIb HandlerPabortb HandlerPabortb HandlerDabortb HandlerDabortb.b IsrIRQb IsrIRQb HandlerFIQb HandlerFIQ . . . . IsrEINT0IsrEINT0 . . . . IsrXXX IsrXXX .IsrADCIsrADC转移到中转移到中断处理程序断处理程序实验程序实验程序流程流程框框图图由由IRQIRQ异常向量导入异常向量导入依次点亮依次点亮4 4个个LEDLED程序结束返回断点程序结束返回断点保存保存现场

9、现场清除清除INT3INT3中断悬挂和中断悬挂和中断服务悬挂位中断服务悬挂位设置设置GPF3GPF3为为EINT3EINT3外外中断中断设置设置EINT3为上升沿触发为上升沿触发设置中断模式寄存器设置中断模式寄存器设置设置二级向量表二级向量表EINT3EINT3表项表项 熄灭所有熄灭所有LEDLED 开开 始始0 x0地址建立异常向量表地址建立异常向量表 设置存储器工作参数设置存储器工作参数 屏蔽所有中断屏蔽所有中断 设置时钟及功耗管理设置时钟及功耗管理 禁止看门狗禁止看门狗设置设置IRQIRQ及及USERUSER堆栈指针堆栈指针 循环等待中断循环等待中断拷贝拷贝ROMROM内程序内程序/数据

10、到数据到SDRAMSDRAM区区读中断偏移值寄存器判读中断偏移值寄存器判别中断源并由二级向量别中断源并由二级向量表进入中断处理程序表进入中断处理程序复复位位异异常常处处理理程程序序 允许允许EINT3EINT3中断中断主程序及中断控制器初始化流程框图主程序及中断控制器初始化流程框图中断处理程序流程框图中断处理程序流程框图说明说明: 因整个程序中的因整个程序中的复位异常处理程序复位异常处理程序与前面实验中与前面实验中的相同,此处不再赘述。后面仅解读主程序内与中断处理的相同,此处不再赘述。后面仅解读主程序内与中断处理有关的初始化程序段以及中断处理子程序。有关的初始化程序段以及中断处理子程序。二级向

11、量表结构与设置二级向量表结构与设置说明:说明: 因本例只用到了因本例只用到了EINT3EINT3中断,所以只将二级向量表从开始建立到中断,所以只将二级向量表从开始建立到EINT3EINT3。 本例本例IRQ中断二级向量表起始地址设为中断二级向量表起始地址设为0 x33FF_FF00。 在程序未运行时该表为空表,仅预留了在程序未运行时该表为空表,仅预留了4个字单元。个字单元。 EINT3表项的内容需要在主程序运行时动态提取表项的内容需要在主程序运行时动态提取EINT3中断处理程序中断处理程序interrupt具体的地址值填入具体的地址值填入HandleEINT3单元内。单元内。 该单元存入的中断

12、处理程序入口地址在响应中断时由中断源判别程序该单元存入的中断处理程序入口地址在响应中断时由中断源判别程序IsrIRQ动动态索取。态索取。;二级向量表定义程序段二级向量表定义程序段AREA AREA RamDataRamData, DATA, READWRITE, DATA, READWRITEHandleEINT0HandleEINT0#4 #4 HandleEINT1HandleEINT1#4#4HandleEINT2HandleEINT2#4#4HandleEINT3HandleEINT3#4#4ENDEND 中断处理程序中断处理程序 HandleEINT0HandleEINT0Handl

13、eEINT1HandleEINT1HandleEINT2HandleEINT2HandleEINT3HandleEINT3interrupt二级向量表二级向量表主程序内与中断相关的初始化程序实现主程序内与中断相关的初始化程序实现设置设置GPF3GPF3为为EINT3EINT3外外中断中断设置设置EINT3为上升沿触发为上升沿触发设置中断模式寄存器设置中断模式寄存器设置设置二级向量表二级向量表EINT3EINT3表项表项 熄灭所有熄灭所有LEDLED设置设置IRQIRQ及及USERUSER堆栈指针堆栈指针 循环等待中断循环等待中断 允许允许EINT3EINT3中断中断主程序及中断控制器初始化流程

14、框图主程序及中断控制器初始化流程框图InitStacksInitStacksmrsmrs r0,cpsr r0,cpsrbicbic r0,r0,#MODEMASK|NOINT r0,r0,#MODEMASK|NOINTorrorr r1,r0,#IRQMODE r1,r0,#IRQMODEmsrmsr cpsr_cxsf,r1 cpsr_cxsf,r1ldrldr sp,= sp,=IRQStackIRQStack ;设置设置IRQIRQ堆栈指针堆栈指针orrorr r1,r0,#USERMODE r1,r0,#USERMODEmsrmsr cpsr_cxsf,r1 cpsr_cxsf,r1

15、ldrldr sp,= sp,=UserStackUserStack;设置用户堆栈指针设置用户堆栈指针ldrldr pc,=Main pc,=Main ;转移到主程序转移到主程序MainMainLTORGLTORG转换为转换为IRQ模式模式转换为转换为用户模式用户模式0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 00 0 0 01 0 0 00 0 0 0ldrldr r0,= r0,=pGPFCONpGPFCONldrldr r1,=0 x080 r1,=0 x080strstr r1,r0 r1,r0GPFCONGPFCON寄存器位结构寄存器位结构设置设置GPF3GP

16、F3为为EINT3EINT3ldrldr r0,=pEXTINT0 r0,=pEXTINT0ldrldr r1,=0 x04000 r1,=0 x04000 strstr r1,r0 r1,r0ldrldr r0,= r0,=PintmodPintmod ldrldr r1,=0 x0 r1,=0 x0strstr r1,r0 r1,r0ldrldr r0,= HandleEINT0+0 x0c r0,= HandleEINT0+0 x0c adrladrl r1,interrupt r1,interrupt strstr r1,r0 r1,r0中断处理子程序实现中断处理子程序实现(1)(1)

17、由由IRQIRQ异常向量导入异常向量导入中断处理程序流程框图中断处理程序流程框图IsrIRQIsrIRQ sub sp,sp,#4; sub sp,sp,#4; stmfdstmfd sp!,r8-r9 sp!,r8-r9 ; ; 压栈保存压栈保存r8r8,r9r9内容内容 ldrldr r9,= r9,=pINTOFFSETpINTOFFSET ; ; 中断偏移寄存器中断偏移寄存器 ldrldr r9,r9 r9,r9; ; 读中断读中断偏移值偏移值寄存器寄存器 ldrldr r8,= r8,=HandleEINT0; HandleEINT0; 二二级向量表起始级向量表起始地址地址 adda

18、dd r8,r8,r9,lsl # r8,r8,r9,lsl #2; 2; 二二级向量表内偏移级向量表内偏移地址地址 ldrldr r8,r8 r8,r8; ; 读中断处理读中断处理程序程序地址地址 strstr r8,sp,#8 r8,sp,#8; ; 将向量存入预留堆栈单元将向量存入预留堆栈单元 ldmfdldmfd sp!,r8-r9,pcsp!,r8-r9,pc ; ; 恢复恢复r8,r9r8,r9并转入中断并转入中断 LTORG LTORG读中断偏移值寄存器判读中断偏移值寄存器判别中断源并由二级向量别中断源并由二级向量表进入中断处理程序表进入中断处理程序依次点亮依次点亮4 4个个LE

19、DLED程序结束返回断点程序结束返回断点保存保存现场现场清除清除INT3INT3中断悬挂和中断悬挂和中断服务悬挂位中断服务悬挂位中断处理子程序实现中断处理子程序实现 (2)(2)由由IRQIRQ异常向量导入异常向量导入中断处理程序流程框图中断处理程序流程框图依次点亮依次点亮4 4个个LEDLED程序结束返回断点程序结束返回断点保存保存现场现场清除清除INT3INT3中断源悬挂中断源悬挂和中断悬挂和中断悬挂位位读中断偏移值寄存器判读中断偏移值寄存器判别中断源并由二级向量别中断源并由二级向量表进入中断处理程序表进入中断处理程序interruptinterrupt stmfdstmfd sp!,r0

20、,r1,lr; sp!,r0,r1,lr; 保存现场保存现场LOOP0LOOP0 ldrldr r0,=0 x20005000 r0,=0 x20005000 ; ; 取取LEDLED灯驱动器端口地址灯驱动器端口地址ldrldr r1,=0 x01 r1,=0 x01strstr r1,r0 r1,r0; ; 点亮第点亮第1 1个个LEDLED灯灯blbl Delay Delay; ; 延迟延迟 ldrldr r0,=0 x20005000 r0,=0 x20005000; ;ldrldr r1,=0 x03 r1,=0 x03strstr r1,r0 r1,r0; ; 点亮第点亮第2 2个个LEDLED灯灯 blbl Delay Delay; ; 延迟延迟 ldrldr r0,=0 x20005000; r0,=0 x20005000;ldrldr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论