嵌入式系统(六):STM32中断

一、异常与中断

(1)基本概念

  • 所有能打断正常执行流事件都称为异常
  • 异常指在正常执行流程中发生暂时的停止并转向相应的处理,包括ARM内核产生复位,取值或存储器访问失败,遇到未定义指令,执行软件中断,或者出现外部中断等
  • 大多数异常都对应一个软件的异常处理程序,也即在异常发生时执行的软件程序

(2)二者的区别

  • 中断往往来自于内核的外部,是内核来说一个突发事件,异步事件。
  • 异常(系统异常)是由于内核活动产生的,是内核在执行指令或访问存储器时产生的,对CM3核是“同步”的
    在这里插入图片描述

(3)中断与外部中断

  • 在内核的层次讨论问题时,“中断”都是内核以外产生的,都叫做“外部中断”;
  • 在芯片的级别来说,例如针对STM32芯片,通过EXTI控制的那几个中断(来自引脚、RTC闹钟、USB唤醒、PVD输出),叫做“外部中断”。
  • 也就是说,如果和系统异常进行比较,我们都叫外部中断。但是中断之间相互比较的话又有新的层次,片上外设相对于中断引脚反而是比较内部的,
    在这里插入图片描述

(4)异常的优先级

  • 有三个异常:复位(-3),NMI(-2)、硬件fault(-1)的优先级是负的,最高的,软件不能编程,比其他任何异常都高
  • 其他异常:随着编号的增大而降低,优先级都可以编程
  • 可编程的软件优先级权限高于默认硬件优先级(默认优先级即随着编号增大而降低)
  • 软件优先级数字越大优先级越低,当两个中断的软件优先级一样时我们才查看他们的硬件优先级。
    在这里插入图片描述
    前三个优先级不可以通过软件来更改,优先级即硬件默认优先级,对于可设置优先级的异常而言,软件设置的优先级会覆盖原来的硬件优先级。注意-3:6是异常,是没有位置的,从中断开始才有位置
    在这里插入图片描述

二、相关设备与中断/异常处理

1:嵌套向量中断控制器(Nested Vectored Interrupt Controller, NVIC)

在这里插入图片描述
每个寄存器组有240位(一个寄存器只有32位,但是他们都是寄存器组),例如:中断使能设置寄存器组,ISER[0]对应中断源0~31,ISER[1]对应中断源32~63,STM32只有60个中断源,所以没有用到ISER[2:7]。定义NVIC_TypeDef的结构体在库文件core_cm3.h文件。

NVIC中的每个寄存器组都有8个寄存器
在这里插入图片描述

2:系统控制寄存器(SCB):中断配置

在这里插入图片描述
在这里插入图片描述

3:中断和异常处理

STM32芯片的中断和系统异常是分别处理的,其内部处理结构也是分开的
在这里插入图片描述

(1)中断

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们可以通过中断激活位寄存器来知道现在正在执行的中断是哪个
在这里插入图片描述

(2)异常

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、STM32中断优先级

如何对系统优先级进行一个设置?

1:中断优先级为何?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
也就是说总是先看抢占是优先级,再看响应优先级,如果这两个都相等,就按照硬件优先级(也就是中断表的排位顺序)。

2:中断优先级分组设定

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

3:NVIC配置过程

在这里插入图片描述
(中断初始化结构体):
在这里插入图片描述

4:EXTI(外部中断/事件控制器)

在STM32F103XX处理器中,外部中断/事件控制器由用于产生事件/中断请求的19个边沿检测器组成,其中16个中断通道EXTI0-EXTI15对应GPIOx_Pin0-GPIOx_Pin15,另外3个是EXTI16连接PVD(Programmable Votage Detector 可编程电压监测器,作用是监视供电电压)输出,EXTI17连接到RTC(Real Time Clock,实时时钟)和EXTI18连接到USB唤醒事件。
在这里插入图片描述
每根外部中断输入线也均可以被单独屏蔽,并且处理器通过一个挂起寄存器保存中断请求的状态。外部中断/事件控制器EXTI的主要特性如下所示:
(1)每根外部中断/事件输入线上均可独立触发和屏蔽
(2)每根外部中断/事件输入线都具有专门的状态标志位
(3)最多可产生19个软件事件/中断请求
(4)可捕获脉宽频率低于APB时钟的外部信号

上图中看出来好像exit对中断和事件的处理没有差别,其实是有的,主要就是事件最终由硬件自动完成,而中断需要CPU参与处理。
在这里插入图片描述
在这里插入图片描述
EXIT只是对NVIC提供一个辅助的作用,并不是取代了NVIC。60个中断,EXIT只能管理19个,而且每一个的运行最终也都是要回到NVIC。

EXIT的寄存器:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值