【STM32】中断系统一文读懂

 

目录

中断的概念

 中断处理过程

 NVIC

主要功能

EXTI

主要功能

外部中断流程框图


中断的概念

        中断是计算机系统中的一种机制,用于处理突发事件或优先级较高的任务。当计算机的处理器接收到一个中断信号时,它会立即中断正在执行的任务,保存当前的执行状态,并跳转到中断处理程序来处理中断事件。

        中断可以分为两种类型:外部中断和内部中断。外部中断由外部设备产生,如I/O设备的输入/输出请求、定时器的计时完成等。内部中断由执行指令的程序自身产生,如除法错误、溢出等。

        中断的主要目的是提高计算机系统的效率和响应性能。它允许计算机在处理其他任务时及时响应外部事件的发生,如接收用户输入、处理实时数据等。通过中断,计算机可以灵活地分配和管理任务的处理顺序,提高系统的并发性和吞吐量。

在处理器中,中断相当于对于突发事件的处理过程。

当遇到内部/外部的紧急情况需要处理时暂时中止当前正在执行的程序,转而去处理紧急事件,待处理完毕之后,再返回被打断的程序继续执行。

 

 中断处理过程

  1. 中断触发:中断可以由外部设备(如按键)或内部事件(如系统调用、异常)触发。当一个中断事件发生时,它会向处理器发送一个中断请求

  2. 中断响应:处理器立即响应中断请求,并暂停当前正在执行的任务。处理器会进行压栈操作,保存当前的执行状态(保护现场),包括程序计数器(保存下一条指令的地址)、寄存器的值和其他相关信息。

  3. 中断向量表:处理器从中断向量表中获取中断处理程序的地址。中断向量表是一个存储中断向量(中断号)和对应中断处理程序地址的数据结构。

  4. 中断处理程序执行:处理器根据中断号在中断向量表中查找对应的中断处理程序地址,并跳转到该地址开始执行中断处理程序。中断处理程序是专门设计用来处理特定中断事件的代码。

  5. 中断完成:中断处理程序执行完后,处理器会回到中断触发前的状态,恢复中断前的执行任务(恢复现场)

  6. 返回原任务:处理器重新加载保存的上下文,将程序计数器指向中断触发时的下一条指令,继续执行被中断的任务。

需要注意的是,中断处理过程是非常快速的,处理器需要尽快响应中断请求并处理中断事件,以保证系统的实时性和响应性能。因此,中断处理程序一般会尽量简洁,在中断处理函数中一定要避免使用延时函数,只处理与中断事件相关的操作。

 NVIC

        NVIC全称 Nested vectored interrupt controller 嵌套向量中断控制器。它是一种硬件模块,用于提供中断控制和管理功能。

        NVIC负责管理系统中的中断,包括中断的触发、优先级的管理、中断处理程序的执行等。它通过中断向量表来将中断请求与相应的中断处理程序关联起来,并根据中断的优先级进行中断的调度和处理。

NVIC提供了一组寄存器,用于设置、配置和管理中断。常用的寄存器包括:

  1. 中断使能寄存器(Enable Register):用于使能或禁用特定中断。

  2. 中断优先级寄存器(Priority Register):用于设置中断的优先级。

  3. 中断状态寄存器(Status Register):用于查询和清除特定中断的触发状态。

  4. 中断控制与状态寄存器(Control and Status Register):用于设置中断的触发方式(边沿触发或电平触发)以及查询中断的挂起状态。

通过配置这些寄存器,可以对中断进行设置和管理,以实现对系统中断的控制。

主要功能

  1. 中断优先级管理:NVIC允许为每个中断分配优先级,可以通过配置优先级来决定中断之间的响应顺序。较高优先级的中断会中断正在执行的较低优先级的中断,以保证系统对紧急事件的快速响应。

  2. 中断使能和禁用:NVIC可以通过使能或禁用特定的中断来控制中断的触发和处理。当一个中断被禁用时,它不会触发,也不会被处理。

  3. 中断状态管理:NVIC提供了接口来获取中断状态和设置中断状态。可以使用这些接口查询中断是否触发或清除中断状态。

  4. 中断向量表:NVIC管理中断向量表,中断向量表是一种存储中断处理程序地址的数据结构,用于将中断请求与相应的中断处理程序关联起来。NVIC可以通过配置中断向量表来设置每个中断的处理程序地址。

总之,NVIC在STM32微控制器中提供了一种方便的方式来管理中断,包括设置中断优先级、使能或禁用中断、查询和设置中断状态,以及管理中断向量表等功能。它是实现可靠和高效中断处理的关键部分。

EXTI

EXTI(External Interrupt)是一种外部中断模块。它是一个专用的硬件模块,用于处理外部引脚的中断触发。

STM32微控制器通常具有多个GPIO引脚,这些引脚可以配置为输入或输出。当一个特定的GPIO引脚被配置为输入时,如果该引脚接收到外部信号的变化(例如电平变化或边沿触发),就会触发一个外部中断。EXTI模块负责检测外部中断触发并执行相应的中断处理程序。

主要功能

  1. 外部中断触发检测:EXTI模块可以检测外部引脚的信号变化,包括上升沿、下降沿、上升沿和下降沿、低电平触发和高电平触发等多种触发方式。

  2. 中断线选择:可以通过配置中断线来选择要使用的外部中断引脚。不同型号的STM32微控制器具有不同数量的中断线和可用的外部中断引脚。

  3. 中断优先级设置:可以为每个外部中断线设置不同的中断优先级。当多个外部中断同时触发时,优先级较高的中断会被先处理。

  4. 中断屏蔽、使能和清除:可以通过控制寄存器来屏蔽或使能外部中断。同时,还可以通过清除标志位来清除中断状态。

  5. 中断处理函数:当外部中断触发时,通过配置中断处理函数(IRQHandler)来执行相应的中断处理代码。可以在处理函数中进行特定的操作,例如读取传感器数据、更新状态等。

通过EXTI模块,可以实现对外部信号的中断触发和处理,用于及时响应外部事件,例如按键、传感器输入等。它提供了一种有效的方式来处理外部事件并进行相关的操作。

外部中断流程框图

作者:码农小展

物联沃分享整理
物联沃-IOTWORD物联网 » 【STM32】中断系统一文读懂

发表回复