NVIC和EXIT寄存器工作

目录

[1. EXTI 控制的寄存器](#1. EXTI 控制的寄存器)

[2. NVIC 控制的寄存器](#2. NVIC 控制的寄存器)

[3. EXTI 和 NVIC 的交互](#3. EXTI 和 NVIC 的交互)


EXTI(外部中断/事件控制器)NVIC(嵌套向量中断控制器) 的控制寄存器是不同的 。这两个控制器分别有自己独立的一套寄存器来完成不同的功能。EXTI 寄存器主要用于外部中断的配置和管理 ,而 NVIC 寄存器则用于整体中断的优先级管理和使能控制

1. EXTI 控制的寄存器

EXTI 控制器用于配置和管理外部中断(如 GPIO 引脚上的中断),它有自己专门的寄存器来设置中断的触发条件、使能、屏蔽等功能。EXTI 控制器的寄存器包括:

1.1 EXTI_IMR(中断屏蔽寄存器,Interrupt Mask Register)

  • 用于使能或屏蔽 特定的外部中断线。对应位置 1 时,中断使能,0 时,中断被屏蔽。
  • 每条 EXTI 线对应一位,位号与中断线号一致。例如,IMR2 对应 EXTI2 线。

1.2 EXTI_EMR(事件屏蔽寄存器,Event Mask Register)

  • 用于使能或屏蔽事件请求。与 IMR 类似,位 1 时,事件使能,位 0 时,事件被屏蔽。
  • 事件不会触发中断,但可能用于触发其他硬件模块。

1.3 EXTI_RTSR(上升沿触发选择寄存器,Rising Trigger Selection Register)

  • 控制 EXTI 线的上升沿触发 。如果某一位设置为 1,则对应的 EXTI 线会在上升沿(信号从低到高变化)时产生中断。

1.4 EXTI_FTSR(下降沿触发选择寄存器,Falling Trigger Selection Register)

  • 控制 EXTI 线的下降沿触发 。如果某一位设置为 1,则对应的 EXTI 线会在下降沿(信号从高到低变化)时产生中断。

1.5 EXTI_SWIER(软件中断事件寄存器,Software Interrupt Event Register)

  • 允许通过软件触发中断 。对应位写 1 后,可以通过软件触发相应的 EXTI 线中断,而不需要等待外部信号变化。

1.6 EXTI_PR(挂起寄存器,Pending Register)

  • 当外部中断线检测到有效的边沿变化时,EXTI_PR 的相应位会被置为 1,表示该中断线有一个中断请求处于挂起状态
  • 在中断服务程序(ISR)中,通过向 PR 对应位写入 1清除挂起位,否则该中断可能无法再次触发。

2. NVIC 控制的寄存器

NVIC 控制器是整个系统的中断管理器,负责处理包括外部中断(EXTI)在内的所有中断源,并根据优先级调度这些中断。NVIC 有自己的一套寄存器,主要用于中断的优先级控制和中断使能/屏蔽。

2.1 NVIC_ISER(中断使能寄存器,Interrupt Set-Enable Register)

  • 用于使能指定的中断 。如果某位被设置为 1,对应的中断将被使能。
  • STM32 中每个中断都有一个 IRQ 号(例如 EXTI2 对应的 IRQ 号为 EXTI2_IRQn)。通过将该中断对应的 IRQ 位写 1,可以使能该中断。

2.2 NVIC_ICER(中断清除使能寄存器,Interrupt Clear-Enable Register)

  • 用于禁用指定的中断 。如果某位被设置为 1,对应的中断将被禁用。

2.3 NVIC_ISPR(中断挂起寄存器,Interrupt Set-Pending Register)

  • 可以通过软件设置中断为挂起状态 。写 1 会将指定的中断置为挂起状态(即将中断请求传递给 NVIC,即使实际中断没有触发)。

2.4 NVIC_ICPR(中断清除挂起寄存器,Interrupt Clear-Pending Register)

  • 用于清除挂起状态 。当某位写入 1 时,表示清除对应中断的挂起状态。

2.5 NVIC_IPR(中断优先级寄存器,Interrupt Priority Register)

  • 用于设置每个中断的优先级。STM32 使用 NVIC_IPR 来设置不同中断源的优先级。每个中断的优先级可以独立配置,优先级越高的中断将优先被 NVIC 处理。

3. EXTI 和 NVIC 的交互

尽管 EXTINVIC 是两个独立的控制器,它们在中断处理中是相互协作的。

  • EXTI 控制器首先检测到外部信号的边沿变化(例如 GPIO 引脚上的变化),并在其 挂起寄存器(PR) 中置位,表示该中断处于挂起状态。这时,EXTI 发送中断请求给 NVIC

  • NVIC 收到 EXTI 控制器的中断请求后,会根据当前中断的优先级决定是否处理这个中断。如果决定处理,NVIC 将调用中断向量表中与该中断源对应的中断服务程序(ISR)。

  • 在 ISR 中,开发者必须手动清除 EXTI_PR 寄存器中的挂起位,表示中断已经被处理完毕。随后,NVIC 将该中断标记为已处理,可以再次接收来自该中断源的请求。

相关推荐
AOI小白新手上路1 小时前
江科协51单片机 17-2 红外遥控电机调速实验调试总结
单片机·嵌入式硬件·51单片机
oshan20123 小时前
零基础STM32入门教程--10-PWM 呼吸灯
stm32·单片机·嵌入式硬件
记帖4 小时前
STM32C5A3R开发(7)----ADC电压采集
嵌入式硬件·adc·dac·stm32cubeide·stm32c5·stm32cubemx2·stm32c5a3rgt6
自小吃多6 小时前
器件移动、旋转、镜像、对齐、等间距操作笔记
笔记·嵌入式硬件
jianqiang.xue7 小时前
智能体整体架构设计:四大模块与目录组织
单片机·嵌入式硬件·物联网·架构·esp32
Messy create9 小时前
【BMS-AFE-温度检测】
stm32·单片机·能源
东莞市永盛电气9 小时前
三相208V变380V变压器,出海工业设备供电适配方案
python·单片机·嵌入式硬件
Learn-Share_HY10 小时前
[IT Network]如何配置反向路徑過濾器(rp_filter),以解決路由不對稱問題?
linux·嵌入式硬件·物联网·网络协议·tcp/ip·http·iot
深圳市宝华视联11 小时前
医院内网部署手术示教系统注意事项
嵌入式硬件·实时互动·音视频·实时音视频·视频编解码·嵌入式实时数据库
新晨单片机设计11 小时前
S001A-基于STM32单片机超声波视力保护仪【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus