中断控制实验_第1页
中断控制实验_第2页
中断控制实验_第3页
中断控制实验_第4页
全文预览已结束

下载本文档

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

文档简介

1、中断控制实验1.实验目的(1)掌握 LM3S8962 中的中断控制和NVIC 的原理和使用方法(2)掌握 CCS 开发环境平台2.实验内容(1)ARM 的初始化配置(2)占先优先权中断和尾链中断实验3.中断控制原理ARM Cortex-M3 处理器和 NVIC 将区分所有异常的优先等级并对其进行处理,所有异常都在处理器模式中处理。 在出现异常时, 处理器的状态将被自动存储到堆栈中,并在中断服务程序 (ISR)结束时自动从堆栈中恢复。软件可在 7 个异常(系统处理程序)以及 36 个中断上设置 8 个优先级,通过 NVIC 中断优先级寄存器来配置其优先等级。 当中断输入生效后, 该中断就被挂起,

2、 当它的中断优先级最高时, 开始执行其中断服务程序, 称此时中断进入了活跃状态, 同时自动清零挂起位。当一个中断进入活跃状态, 直到其服务程序执行完毕并且返回后,才能对同一中断的新请求予以响应。中断控制的状态如图1 所示。中断请求被软件清除中断请求中断挂起状态中断活跃状态处理模式中断返回处理器模式线程模式图 1中断控制的状态为了缩短中断延迟, 设计了尾链中断机制。 当处理器响应某中断时, 又发生了其他优先级较低的中断, 则先被挂起。 在当前中断执行返回后, 不再执行出栈和入栈操作,直接处理挂起的中断, 就好像后一个中断与前一个中断的尾链接起来了,前后只执行了一次入栈 /出栈操作。从而使两个 I

3、SR 之间的间隔大大缩短。如图 2 所示是尾链中断机制。中断 1 的优先级高于中断 2。中断 #1中断 #2中断返回中断返回IRQ#1ISR#1ISR#2处理器模式入栈出栈线程模式处理模式处理模式线程模式图 2尾链中断机制在发生嵌套中断的时候,如果后触发的中断的抢占优先级高于先触发的中断,那么将发生占先优先级中断, 即先执行完抢占优先级高的中断后再继续执行抢占优先级低的中断。4.软件流程设置 3 种不同的优先级: 同等优先级、 递减优先级和递增优先级。 观察中断控制的不同状态,实现占先优先级中断控制,了解尾链中断机制。开始初始化配置设置同等优先级 C=B=AIntGPIOc()IntGPIOb

4、()函数入口函数入口触发 GPIOC 中断,在 OLED 上显示中断状态调用函数 DisplayIntStatus()调用函数 DisplayIntStatus()在OLED 上显示中断状态在 OLED 上显示中断状态设置递减优先级 C>B>A触发 GPIOB 中断触发 GPIOA 中断触发 GPIOC 中断,在 OLED 上显示中断状态调用函数 DisplayIntStatus()调用函数 DisplayIntStatus()设置递增优先级 C<B<A在OLED 上显示中断状态在 OLED 上显示中断状态触发 GPIOC 中断,在 OLED 上显示中断状态延时 2s延

5、时 2s显示中断处理结果g_ulGPIOc = g_ulIndex+g_ulGPIOb = g_ulIndex+无限循环IntGPIOc()IntGPIOb()函数返回函数返回图 3 主函数流程图图 4GPIOC 的 ISR 流程图图 5GPIOB 的 ISR 流程图IntGPIOa()函数入口调用函数 DisplayIntStatus()DisplayIntStatus()在 OLED 上显示中断状态函数入口延时 2s在 OLED 上显示目前活跃的中断g_ulGPIOa = g_ulIndex+在OLED 上显示挂起的中断IntGPIOa()DisplayIntStatus()函数返回函数返

6、回图 6GPIOA 的 ISR 流程图图 7显示函数流程图5.实验步骤(1) 运 行CCS , 添 加 驱 动 库 "driverlib" , 打 开 路 径 "D:LM3S8962MyDocumentsboardsek-lm3s8962", 选择 存放 中断 控制 实 验 的 工程 的文 件 夹"interrupts",单击完成添加到编辑界面;(2)浏览实现预定功能的源代码,编译、连接,检验并修正错误;(3)编链无错误后,点击调试按钮进入调试界面;(4)点击单步调试按钮,通过单步运行和设置断点调试程序, 观察在同等优先级、递减优先级

7、和递增优先级 3 种不同优先等级的情况下,中断的活跃和挂起状态;(5)单步调试完成后,取消断点,点击运行按钮,观察 OLED 上中断处理状态的显示。实验结果:首先显示同等优先级 (C=B=A) 时的中断处理状态,先进入 GPIO 端口 C 的中断服务子程序,挂起 GPIO 端口 B 的中断,然后进入 GPIO 端口 B 的中断服务子程序,挂起 GPIO 端口 A 的中断,最后进入 GPIO 端口 A 的中断服务子程序;接着显示递减优先级 (C>B>A) 时的中断处理状态,过程与同等优先级时一样,这两种情况都用到了尾链中断机制, 可通过外部设施观察需要的时钟周期;然后显示递增优先级 (C<B<A) 时的中断处理状态,先进入 GPIO 端口 C 的中断服务子程序,触发 GPIO 端口 B 中断后直接执行 GPIO 端口 B 的中断服务子程序,触发 GPIO 端口 A 中断后直接执行 GPIO 端口 A 的中断服务子程序,在 GPIO 端口 A 的中

温馨提示

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

评论

0/150

提交评论