stm之中断系统

概述:

提供中断控制器,用于总体管理异常,称之为“嵌套向量中断控制器:Nested Vectored Interrupt Controller (NVIC)

  VIC:中断管理器;

  NVIC:内嵌中断管理器,将中断嵌套进入内核;

    带来的优势:1、响应速度提高;

          2、标准化,统一管理;

  stm32创新:所以IO口都可以中断;

  stm32的中断向量表:一个中断源,对应的地址、优先级等信息;

具体参见stm32的文档:

        

NVIC中断优先级:

  中断优先级高的中断可以抢占中断优先级低的中断,从而实现了中断嵌套;

  STM32中有两个优先级的概念-------抢占式优先级(主优先级)和响应优先级(从优先级),每个中断源都需要被指定这两种优先级,具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理的中断过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断;

  当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到了时,如果cpu正在处理另一个中断,这个后到的中断就要等到前一个中断处理完之后才能被处理;(从优先级不能抢占关系)

  如果这两个中断同时到达而从优先级不同时,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;

  如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪个中断;  

  

Cortex-m3允许具有较少中断源时,使用较少的寄存器位指定中断源的优先级,因此STM32把中断优先级的寄存器位由8位减少到4位,这4个寄存器位的分组方式如下:

  第0组:所以4位用于指定响应优先级;

  第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级;

  第2组:最高2位用于指定抢占式优先级,最低2位用于响应优先级;

  第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级;

  第4组:所以4位用于指定抢占式优先级;

以上设置可以调用固件库函数中的NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式;

 (NVIC_PriorityGroup_0,  NVIC_PriorityGroup_1,  NVIC_PriorityGroup_2, NVIC_PriorityGroup_3, NVIC_PriorityGroup_4)

  typedef  struct

  {

    u8  NVIC_IRQChannel;  //中断通道号;

    u8  NVIC_IRQChannelPreemptionPriority;  //主优先级

    u8  NVIC_IRQChannelSubPriority;      //从优先级

    FunctionalState NVIC_IRQChannelCmd;    //是否使能

  }NVIC_InitTypeDef;

外部中断:

            

另外三种其他的外部中断/事件控制器连接如下:

    EXTI线16连接到PVD输出;

    EXTI线17连接到RTC闹钟事件;

    EXTI线18连接到USB唤醒事件;

外部中断配置:

  外部中断/事件控制器由19个产生事件/中断要求的边沿检测器组成。每个输入线可以独立地
配置输入类型(脉冲或挂起)和对应的触发事件(上升沿或下降沿或者双边沿都触发)。每
个输入线都可以被独立的屏蔽。挂起寄存器保持着状态线的中断要求。

硬件中断选择:
通过下面的过程来配置19个线路做为中断源:
  ??   配置19 个中断线的屏蔽位(EXTI—IMR)
  ??   配置所选中断线的触发选择位(EXTI_RTSR 和EXTI_FTSR);
  ??   配置那些控制映像到外部中断控制器(EXTI)的NVIC 中断通道的使能和屏蔽位,使得19个中断线中的请求可以被正确地响应。
硬件事件选择
  通过下面的过程,可以配置19个线路为事件源
  ??   配置19 个事件线的屏蔽位(EXTI_EMR)
  ??   配置事件线的触发选择位(EXTI_RTSR and EXTI_FTSR)
软件中断/事件的选择
  19个线路可以被配置成软件中断/事件线。下面是产生软件中断的过程:
  ??   配置19 个中断/事件线屏蔽位(EXTI_IMR, EXTI_EMR)
  ??   设置软件中断寄存器的请求位(EXTI_SWIER)

相关寄存器:

  中断屏蔽寄存器(EXIT_IMR):

  上升沿触发中断寄存器()

  下降沿触发中断寄存器()

  软件中断事件寄存器(EXTI_SWIER)

  挂起寄存器(EXTI_PR)

时间: 2024-10-08 22:22:13

stm之中断系统的相关文章

Linux中断(interrupt)子系统之一:中断系统基本原理

这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层.内核版本基于3.3.虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变. /*****************************************************************************************************/ 声明:本博内容

单片机的中断系统

中断概念 正常的工作过程被外部的事件打断了,EX 你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书. 中断源 引起中断的事件称之为中断源,51中一共有5五个:两个外部中断,两个计数/定时器中断,一个串行口中断. 中断优先级与嵌套 当两个中断同时产生时,就要考虑优先级. 当一个中断已发生,又一个中断产生了,又要考虑另一种嵌套优先级. 中断的响应过程 保护断点:保存下面将要执行的指令地址送人堆栈,以便中断处理完之后回到原来地方继续执行 寻找中断入

Linux中断(interrupt)子系统之一:中断系统基本原理【转】

转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于ARM这一体系架构,其他架构的原理其实也差不多,区别只是其中的硬件抽象层.内核版本基于3.3.虽然内核的版本不断地提升,不过自从上一次变更到当前的通用中断子系统后,大的框架性的东西并没有太大的改变. /***************************************************

51单片机中断系统

51中断系统 1.什么是中断 中断是CPU在执行程序是不需要管中断源的状态,当中断源满足中断触发条件时CPU再去进行终端处理 2.中断源 80C51共五个中断源分别是两个外部中断源:INT0.INT1,两个定时中断源T0.T1,一个串行口中断源 每个中断源对应着一个中断入口地址 中断源 入口地址 外部中断源INT0 0003H 定时器T0 000BH 外部中断源INT1 0013H 定时器T1 001BH 串行口中断 0023H 3.中断控制 3.1.     定时控制寄存器TCON 控制对象

【CC2530入门教程-03】CC2530的中断系统及外部中断应用

第3课  CC2530的中断系统及外部中断应用 广东职业技术学院  欧浩源 一.中断相关的基础概念  内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件:中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到原来暂停的程序中去继续执行. 这种程序在执行过程中由于外界的原因而被中间打断的

TMS320F28335项目开发记录9_28335之中断系统

28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统.C28XX一共有16个中断源,其中有2个不可屏蔽的中断RESET和NMI.定时器1和定时器2分别使用中断13和14.这样还有12个中断都直接连接到外设中断扩展模块PIE上.说的简单一点就是PIE通过12根线与28335核的12个中断线相连.而PIE的另外一侧有12*8根线分别连接到外设,如AD.SPI.EXINT等等. 这样PIE共管理12*8=96个外部中断.这12组大中断由28335核的中断寄存器IER来控制,即IER确

zynq7000 中断系统及在UCOSIII中的中断处理接口

一.zynq7000中断处理概述 详见zynq7000的用户指导手册UG585相关章节. zynq7000的中断系统整体架构如下图所示: 中断源有三种类型的中断: 私有外设中断PPI:每个CPU有5个PPI,使用中断ID 27~31. 共享外设中断SPI:共60个 软件产生中断SGI:每个CPU都可以使用SGI中断自身.其他CPU,或两个CPU,各自16个SGI,使用中断ID 0-15. GIC集中管理来自PS和PL的中断,包括使能.禁用.掩码.优先级.发送到不同的CPU.zynq的GIC基于A

实验五--中断系统

一.平台 系统:ubuntu12.04 开发板:jz2440 编译器:gcc 二.中断简略 大概除了FPGA这种并行的cpu才不需要中断,像51,AVR,arm这类串行的芯片中断是他们不被淘汰的利器.没有中断,他们不可能得到这么广泛的应用. arm中断和51的类似,无非就是设置相关寄存器.中断开关,中断源,中断分辨之类的东西:但是注意,arm的中断只是7个模式下的一个,此外,中断还有普通中断和快速中断之分. 而快速中断不需要进行中断的分辨,因为每次最多只有一个被设置为快速中断. 这里看中断源分为

DSP 28335 的中断系统总结--来源:李旭瑞_小鸡电子

PIE通过12根线与28335核的12个中断线相连.而PIE的另外 一侧有12*8根线分别连接到外设,如AD.SPI.EXINT等等.这样PIE共管理12*8=96个外部中断.这12组大中断由28335核的中断寄存器IER来控 制,即IER确定每个中断到底属于哪一组大中断(如IER |= M_INT12;说明我们要用第12组的中断,但是第12组里面的什么中断CPU并不知道需 要再由PIEIER确定).接下来再由PIE模块中的寄存器PIEIER中的低8确定该中断是这一组的第几个中断,这些配置都要告