中断源与连接图

1. 中断线内部分配情况

(1) F28335内部有16个中短线,其中包括2个不可屏蔽中断(RESET和NMI)与14个可屏蔽中断;

(2) 可屏蔽中断中,TIM1和TIM2产生的中断请求通过INT13和INT14中断线到达CPU;这两个中断已经预留给实时操作系统了;

(3) 剩余的12个可屏蔽中断可供外部中断和处理器内部单元使用;

但是  F28335外设中断源总共有58个;

矛盾点:外设中断源58个,内部可操作的中断线只有12个;故引出PIE模块,用于中断线复用;

中断源与IO复用结构图:

gpio0~31->INT1过程

2. F28335中断机制

F28335中断采用的是3级中断机制,分别是外设级中断,PIE级中断和CPU级中断;

外设->PIE->CPU

上图中下部分为PIE小组响应外设中断的过程,上半部份为CPU响应12组PIE中断的过程;

(1) 外设级中断

外设产生了中断事件,该外设对应的标志寄存器(IF)响应的位将被自动置位;若外设对应的中断使能寄存器(IE)中断响应的使能位正好置位(软件控),则外设产生的中断将向PIE控制器发出中断申请;若对应的外设级中断没有被使能,就相当于该中断被屏蔽,不会像PIE提出中断申请;此时的中断标志寄存器将保存不变,一直处在中断置位状态,要使该中断信号消失,中断标志寄存器需要复位;若没有复位,一旦中断使能位被使能,同样会向PIE申请中断;

当进入中断服务后,有部分硬件外设会自动复位中断标志寄存器,多数外设需要在中断服务中复位手动复位中断标志寄存器;

(2) PIE级中断

由于CPU没有能力处理所有外设级的中断请求,所有cpu让出12个中断线交给PIE模块进行复用管理;

PIE模块内部结构图

上图说明:PIE将外设中断分成了12个组,分别对应着CPU的12个可屏蔽中断线,每一组由8个外设级中断组成,这8个外设中断分别对应相应外设接口的中断引脚;PIE通过8选1选择器将这8个外设中断组成1组;

PIE与外设具体连接图

与外设级中断类似,在PIE模块内有中断标志位(PIEIFRx)和使能位(PIEIERx.y);而且每组PIE中断(INT1~INT12)有一个响应标志位(PIEACK);

一旦PIE控制有中断产生,相应的中断标志位(PIEIFRx.y)将置1;

若相应的PIE中断使能位也置1,则PIE将检查相应的PIEACKx以确定CPU是否准备响应该中断; 若相应的PIEACKx位清零,PIE向CPU申请中断;若PIEACKx置1,PIE将等待相应的PIEACKx清零才向CPU申请中断;

一旦响应后,需要将PIEACKx相应位清零,以让它能够响应该组后边过来的中断;

(3) CPU级中断

一旦CPU申请中断,CPU级中断标志位(IFR)将置1;中断标志锁存到标志寄存器后,只有CPU中断使能寄存器(IER)或中断调试使能寄存器(DBGIER)响应位使能和全局中断屏蔽位(INTM)被使能才会响应中断申请;

3. 中断向量

cpu响应中断,就是cpu要指向相应的中断服务程序;中断服务程序的人口地址就是中断向量;入口地址使22位的,需要2个16位(共32位)的寄存器存放,地址的低16位保存该该向量的低16位,地址的高6位保存到另一寄存器的高6位,更高的10位保留;

(1) 中断向量分配

PIE最多可支持96个中断,每个中断都有自己对应的中断向量,即每个中断源都对应着自己的中断服务入口地址,这些中断向量均连续存放在RAM中,这就构成了整个中断向量表;

在响应中断时,cpu自动从中断向量表中获取相应的中断向量;

cpu获取中断向量和保存重要寄存器所需9个cpu时钟周期;

cpu响应中断是通过中断线的,而且只能1次响应其中1条中断线,有可能同一时刻16条中断线上的请求同时到达cpu,这就要对各个中断请求进行优先级定义;

(2) 中断向量表

中断向量表友256x16B(4k)的SRAM内连续存放,如果这部分空间不作为PIE模块时,可用作数据RAM;复位时PIE向量表内容没有定义;

CPU的中断优先级从高低为: INT1~INT12;  每组PIE控制的8个中断优先级依次是:INTx.1-INTx.8;

INTx.1~INTx.8地址范围
INT1.1~INT1.8地址范围 0x0D40~0x0D4E
INT2.1~INT2.8地址范围 0x0D50~0x0D5E 
INT3.1~INT3.8地址范围 0x0D60 ~0x0D6E
INT4.1~INT4.8地址范围 0x0D70 ~0x0D7E
INT5.1~INT5.8地址范围 0x0D80 ~0x0D8E
INT6.1~INT6.8地址范围 0x0D90 ~0x0D9E
INT7.1~INT7.8地址范围 0x0DA0 ~0x0DAE
INT8.1~INT8.8地址范围 0x0DB0 ~0x0DBE
INT9.1~INT9.8地址范围 0x0DC0 ~0x0DCE
INT10.1~INT10.8地址范围 0x0DD0 ~0x0DDE
INT11.1~INT11.8地址范围 0x0DE0 ~0x0DEE
INT12.1~INT12.8地址范围 0x0DF0 ~0x0DFE

4. 中断向量映射方式

中断向量表可以被映射到4个不同的存储区域,实际应用中,只能使用PIE中断向量表映射区域;

 中断向量表映射配置

其中:M1和M0供TI公司测试使用;M0和M1映射区域可作为SARAM使用,可以随意使用,没有任何限制;

复位后器件默认的中断向量表为BROM向量;VMAP和MOM1MAP模式均被设置为1;而ENPIE模式强制为0; 复位向量始终从boot ROM获取;

复位程序引导(BOOT)完成后,用户需要重新初始化PIE中断向量表,应用程序使能PIE中断向量表,并从PIE向量表中获取中断向量;

5. 复位中断的操作过程

在清除PIEIFR和PIEIER时,需要遵循以下3个规则:

1. 不要用软件编程清除 PIEIFR 的位:清除 PIEIFR 寄存器的位时,有可能会使产生的中断丢失;要清除 PIEIFR 位时,还未被执行的中断必须被执行,如果用户希望在执行正常的服务程序之前就要清除 PIEIFR 位时,需要遵循以下步骤: 
(1) 设置 EALLOW 位为 1,允许修改 PIE 向量表。
(2) 修改 PIE 向量表,使外设服务程序指针向量指向一个临时的 ISR,这个临时的 ISR 只执行一个中断返回(IRET)操作;
(3) 使能中断,使中断执行临时中断服务程序;
(4) 在执行完中断服务程序之后,PIEIFR 位将被清除;
(5) 修改 PIE 向量表,重新映射外设服务程序到正确的中断服务程序;

(6) 清除 EALLOW 位

2. 软件设置中断优先级

3. 使用 PIEIER 禁止中断;

6. 外设复用中断向CPU申请中断的过程

1. 任何一个PIE中断组的外设或外设中断产生中断.若外设模块内的中断被使能,中断请求将被送到PIE模块;

2. PIE模块将识别出PIE中断组x内的y中断(INTx.y)申请,然后相应的PIE中断标志位被锁存:PIEIFRx.y=1;

3.PIE的中断如要送到CPU需满足下面两个条件:

(a) 相应的使能位必须被设置(PIEIFRx.y=1);

(b) 相应的PIEACKx位必须被清除;

4. 若满足3的两个条件,中断请求将被送到CPU并且相应的寄存器被置1(PIEACKx=1);PIEACKx位将保持不变,除非为了使本组的其他中断向CPU发出申请而清除该位;

5. CPU中断标志位被置位(CPU IFRx=1),表明产生一个CPU级的挂起中断;

6. 如果CPU中断被使能(CPU IERx=1或DBGIERx=1),并且全局中断使能(INTM=0),CPU将处理中断INTx;

7.CPU从PIE中获取相应的中断向量;

8. 对于复用中断,PIE模块用PIEIERx和PIEIFRx寄存器中的值确定响应的中断向量地址;

CPU进入中断服务程序后,将清除PIEIFRx.y位;

7. 可屏蔽中断处理

本质即使操作PIEIFR,PIEIER,IFR,IER,INTM相应寄存器;

8. 不可屏蔽中断处理

以 XNMI_XINT13 引脚外部中断设置为例; 只要配置好相应的引脚配置寄存器就可以了,因为NMI优先级最高,CPU必须响应,不需要配置CPU;

DSP28335之中断系统笔记相关推荐

  1. 【DSP开发】C6000非多核非KeyStone系列DSP中断系统

    C6000系列DSP的中断系统 上一篇介绍了C6455的GPIO系统,最后把GPIO4配置成了中断/事件模式,本文将介绍C6455的中断系统,介绍完基本概念后,给出把GPIO4映射到INT4的代码. ...

  2. DSP28335笔记 ———— 中断系统 之 外部中断

    DSP28335笔记 ---- 中断系统 之 外部中断 我用的开发板是"硬汉DSP28335开发板",文中对于硬件的描述可以说是没有,而且我还没有附上电路图希望在看的朋友不要喷我. ...

  3. 51单片机笔记:中断系统

    单片机笔记 中断系统 工作原理 功能描述 终止当前进行的事件,去处理突发需及时处理的事件,处理完还要返回原事件. 中断符函数 void ISR() interupt n 中断符函数与普通函数区别 普通 ...

  4. STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)

    本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...

  5. 8086中断系统——《x86汇编语言:从实模式到保护模式》读书笔记04

    80X86中断系统 能够处理256个中断 用中断向量号0-255区别 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理 1.中断的分类 中断可以分为内部中断和外部中断. (1)内 ...

  6. 51单片机学习笔记(郭天祥版)(3)——引脚讲解、数码管静态显示、中断系统(外部中断,定时器中断)...

    学习引脚的功能 9引脚 复位管脚,当给2个机器周期(24个时钟振荡周期)的高电平时会复位,单片机正常工作时会给0.5v的低电平 VPD备用电源的输入端,当主电源VCC发生故障降低到某一规定的低电平时, ...

  7. 【操作系统笔记】中断系统

    程序中断: 执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂 时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现 行程序的断点处,继续执行原程 ...

  8. Linux驱动开发学习笔记【8】:Linux中断系统

    目录 一.Linux内核中断处理过程 1.1.裸机中断 1.2.linux中断 二.linux中断的上半部和下半部 2.1 软中断 2.2 tasklet 2.3 工作队列 2.4 中断线程化 三.设 ...

  9. STM32笔记 (七)中断系统与NVIC嵌套向量中断控制器

    简介 STM32拥有一个强大的中断系统,几乎所有外设都能产生中断,对于F103系列的单片机,ARM公司在Cortex‐M3 的内核水平上搭载了一个异常响应系统(异常就是中断), 支持为数众多的系统异常 ...

  10. 【C51自学笔记】中断系统

    中断 中断概念与中断触发: 中断的概念: CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生): CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务): 待CPU将事件 ...

最新文章

  1. 自然语言处理:汉语分词
  2. 命令行 蓝牙_Noble - Window平台NodeJs蓝牙BLE开发库
  3. JSP实现小区物业管理系统
  4. C#中串口组件的使用方法总结及上位机制作方法
  5. Nginx入门简介和反向代理、负载均衡、动静分离理解
  6. php 小程序回调,微信小程序Promise简化回调实例分享
  7. 【数学建模】通过调整飞行角度使飞机顺利飞行(Matlab)
  8. 创翼软件linux版本,创翼pc版下载-创翼电脑版下载v5.2.22.5226-软件爱好者
  9. DZY Loves Graph
  10. 微信小程序:宝宝起名神器
  11. matlab 求解发动机换算转速,简单一个公式,教你用发动机转速计算车速!
  12. SQL 建表与索引
  13. mysql 磁盘满_mysql磁盘满了如何恢复
  14. 数据挖掘-贡献度分析
  15. pycharm下载思维导图插件 idea mind map
  16. 根据经纬度获取地址(逆地址解析)
  17. SVG是什么?SVG有什么用途?
  18. 暖风熏的游人醉 直把杭州作汴州 题临安邸--林升
  19. NBA勇士败给残阵湖人后....
  20. webpack基本使用

热门文章

  1. 如何运用Python与高德API来获取餐饮、珠宝等线下行业的竞争对手信息?
  2. 数据结构与算法(java)
  3. eclipse java常用插件_高阶程序员必备25个最好的免费Eclipse插件
  4. Head First Java ——我的Java入门书
  5. C++ 常用代码大全
  6. Java性能优化的七个方向
  7. django python版本选择
  8. Linux虚拟机中vim编辑器常用命令介绍(一)
  9. Ethereum Casper 101
  10. 18.Linux软件安装之Rpm安装