NVIC(嵌套向量中断控制器)与EXIT(外部中断和事件寄存器)

目录

NVIC的基本结构(图解)

NVIC 主要特性

NVIC的作用

1)管理中断事件(清除、挂起)

2)支持中断向量化处理(向量表)

3)支持中断嵌套  (优先级)

EXTI

EXTI的介绍

外部中断触发过程

外部中断流程框图

关于STM32CubeMX的配置

外部中断重写函数:void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)


NVIC的基本结构(图解)

要是想了解学习NVIC,需要先熟悉下面这个图片,如果只是想了解基本概念,也可选择跳过此图片。

NVIC 主要特性

32 个可屏蔽中断通道 ( 不包含 16 Cortex-M0 的中断线 )
4 个可编程的优先级 ( 使用了 2 位的中断优先级 )
低延时的异常和中断处理
电源管理控制
系统控制寄存器的实现
嵌套向量中断控制器 (NVIC) 和处理器核的接口紧密相连,可以实现低延迟的中断处理和高效
地处理晚到的中断。
嵌套向量中断控制器管理着包括内核异常等中断。更多关于异常和 NVIC 编程的说明请参考
STM32xxxxxxxxxx  编程手册》。

NVIC的作用

1)管理中断事件(清除、挂起)

每一个中断事件都有执行禁止两种状态,由NVIC负责将中断事件标记为清除和挂起两种状态。 处理器的中断可以电平的形式的,也可以是脉冲形式的,这样中断控制器就可以处理任何中断源。

(当中断执行完成时,NVIC会将中断事件置为清除状态)

2)支持中断向量化处理(向量表)

      当中断事件发生时,处理器会将PC(程序计数器 PC :保存要执行的指令地址)设置为一个特定地址(中断事件入口函数的地址),进而跳转到中断服务程序去执行,这就是个中断(异常)向量,因为每一个异常源或者中断事件都会对应一个服务程序的入口地址,将这些地址按照优先级进行排布后,组成的一张表就称为中断(异常)向量表。

3)支持中断嵌套  (优先级)

 •NVIC的中断优先级由优先级寄存器的4位(0~15)决定,这4位可以进行切分,分为高n位的抢占优先级和低4-n位的响应优先级 

抢占优先级高的可以中断嵌套响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队

EXTI

EXTI的介绍

•EXTI(Extern Interrupt)外部中断

•EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序

•支持的触发方式:上升沿/下降沿/双边沿/软件触发

•支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断

•通道数:16个GPIO_Pin,外加PVD输出、RTC闹钟、USB唤醒、以太网唤醒

•触发响应方式:中断响应/事件响应

主要功能:产生中断、事件。

外部中断触发过程

外部中断流程框图

注:①PCLK,提供给低速总线APB的时钟信号

编号1是信号输入线,EXTI支持产生多达28个外部事件/中断请求。

编号2是边沿检测电路,用于监测上升沿或下降沿信号。

它会根据上升沿触发选择寄存(EXTI_RTSR)和下降沿触发选择寄存器(EXTI_FTSR)对应位的设置来控制信号触发。

边沿检测电路以输入线作为信号输入端,监测是否有边沿跳变,检测到有边沿跳变输出有效信号 1 给编号 3 电路,否则输出无效信号0。

编号3是一个或门电路,信号来源是外部事件或者软件中断/事件寄存器产生。

允许我们通过程序控制EXTI_SWIER就可以启动中断/事件线

编号4是一个与门电路,信号来源是编号3送来的信号和中断屏蔽寄存器的值,

如果中断屏蔽寄存器为0,也不会将信号送到NVIC,

只有编号3送来了中断信号且中断屏蔽寄存器允许产生中断,才会将中断信号送入NVIC.

接下来我们来看看红色虚线指示的电路流程。它是一个产生事件的线路,最终输出一个脉冲信号。

     产生事件线路是在编号3电路之后与中断线路有所不同,之前电路都是共用的。

编号5是一个与门电路,信号来源是编号3送来的信号和事件屏蔽寄存器的值,

如果事件屏蔽寄存器为0,不会将信号送到脉冲发生器,

只有编号3送来了信号且事件屏蔽寄存器允许产生事件,才会将信号送入脉冲发生器(编号6), 进而产生脉冲来控制外部设备做出动作。

这样我们可以简单的控制 EXTI_EMR 来实现是否要产生事件的目的

关于STM32CubeMX的配置

外部中断重写函数:void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)

重写这个函数,可以控制中断发生的事件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花田里的泪光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值