【STM32】外部中断(上)

【STM32】外部中断

  • 前言
  • 一、中断系统
    • [1.1 什么是中断](#1.1 什么是中断)
    • [1.2 中断优先级](#1.2 中断优先级)
    • [1.3 中断嵌套](#1.3 中断嵌套)
    • [1.4 中断执行流程](#1.4 中断执行流程)
  • 二、NVIC
  • 三、EXTI
    • [3.1 EXTI 外部中断(Extern Interrupt)](#3.1 EXTI 外部中断(Extern Interrupt))
    • [3.2 EXTI基本结构](#3.2 EXTI基本结构)
    • [3.3 AFIO复用IO口](#3.3 AFIO复用IO口)
    • [3.4 EXTI内部框图](#3.4 EXTI内部框图)

前言

【STM32】外部中断(上)这部分主要讲解了,对中断系统、NVIC、EXTI的基础知识的介绍,剩余实验部分放在【STM32】外部中断(下)中讲解。

一、中断系统

1.1 什么是中断

  • 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一。
  • 在主程序运行的过程中,出现了特定的中断触发的条件(中断源),使CPU暂停了正在运行的程序,转而去处理中断程序,处理完后返回原来被暂停的位置继续运行。STM32的中断:68个可屏蔽中断通道,包含EXTI、TIM、ADC、USART、SPI、I2C、RTC等多个外设。
  • 例如:
    1)对于外部中断,引脚发生电平跳变
    2)对定时器来说,定时时间到了
    3)对串口通信来说,接收到了数据

1.2 中断优先级

当有多个中断源同时申请中断时,CPU 会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源。

1.3 中断嵌套

当一个中断程序正在运行时,又有新的更高优先级的中断源申请中断,CPU 再次暂停当前的中断程序,转而去处理新的中断程序,处理完成后依次返回。

1.4 中断执行流程

程序由硬件电路自动跳转到中断程序中

二、NVIC

使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置抢占优先级和响应优先级。(NVIC就是STM32用来管理中断,分配优先级的)

2.1NVIC基本结构

NVIC(嵌套中断向量控制器)是一个内核外设,,CPU的小助手

一个外设可能有多个中断通道

2.2 NVIC优先级分组

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

抢占优先级高的可以中断嵌套,响应优先级高的可以优先排队,抢占优先级和响应优先级均相同的按中断号排队。(任何时候都跟优先级高的先响应)

区分0的含义:0位代表无这一优先级,取值为0代表最高。

三、EXTI

3.1 EXTI 外部中断(Extern Interrupt)

  • EXTI 可以监测指定 GPIO 口的电平信号,当其指定的 GPIO 口产生电平变化时,EXTI 将立即向 NVIC 发出中断申请,经过 NVIC 裁决后即可中断 CPU 主程序,使 CPU 执行 EXTI 对应的中断程序。
  • 简单来说:引脚电平变化申请中断。
  • 支持触发方式:上升沿,下降沿,双边沿,软件触发。
  • 支持所有 GPIO 口,但相同的 Pin 不能同时触发中断(PA1 和 PB1 不能同时用,后面AFIO有解释)。
  • 通道数:16 个 GPIO_Pin,PVD 输出,RTC 闹钟,USB 唤醒,以太网唤醒。
  • 触发方式:
    中断响应:申请中断,让 CPU 执行中断函数。
    事件响应:当外部中断检测到引脚变化时,中断信号就不会通向 CPU 了,而是通到其它外设,用来触发其它外设的操作(ADC,DMA),属于外设之间联合工作。

3.2 EXTI基本结构

3.3 AFIO复用IO口

3.4 EXTI内部框图


外部中断触发完整流程:

  • 1. 输入与边沿检测

    输入线接收外部信号(如GPIO引脚电平变化),边沿检测电路 依据上升沿触发选择寄存器下降沿触发选择寄存器的配置(位为1表示使能对应沿检测),判断输入信号是否产生有效边沿(上升沿、下降沿或双边沿)。若检测到有效边沿,输出高电平;否则输出低电平。

  • 2. 软件触发与或操作
    软件中断/事件寄存器 可通过软件写入(对应位设为1),主动生成中断/事件请求。边沿检测电路的输出与软件中断/事件寄存器的输出进入或门,只要其中一个为高电平,或门输出就为高电平,产生中断/事件请求信号。

  • 3. 挂起与屏蔽(中断路径)

    或门输出的高电平使请求挂起寄存器 对应位置1,标记有未处理的中断请求。同时,中断屏蔽寄存器 的输出(位为1表示允许中断,为0表示屏蔽)与请求挂起寄存器的输出进入与门。只有当两者均为高电平时,与门输出高电平,中断请求才会被允许传递至NVIC。

  • 4. 事件触发路径(并行逻辑)

    或门输出的高电平还会与事件屏蔽寄存器 的输出(位为1表示允许事件,为0表示屏蔽事件)进入另一组与门 。若与门输出高电平,信号会通过脉冲发生器,触发其他外设(如ADC启动转换、DMA开始传输等)执行操作,此过程不涉及CPU中断响应,属于外设间的事件联动。

  • 5. 向NVIC传递中断

    经中断路径与门允许的中断请求,通过"至NVIC中断控制器"的通路发送给嵌套向量中断控制器(NVIC)。NVIC根据各中断的优先级配置(抢占优先级和响应优先级),裁决是否响应以及响应的顺序,若响应则暂停当前CPU执行的程序,转去执行对应的中断服务程序。

关于【STM32】外部中断(上)的讲解就到这里,希望对你有所帮助,感谢观看ovo!

相关推荐
猫猫的小茶馆9 小时前
【C语言】汇编语言与C语言的混合编程
c语言·开发语言·stm32·单片机·嵌入式硬件·mcu·物联网
La Pulga9 小时前
【STM32】定时器编码器接口
c语言·stm32·单片机·嵌入式硬件·mcu
北冥电磁电子智能9 小时前
江协科技STM32学习笔记补充之003 :STM32复位电路的详细分析
stm32·单片机·嵌入式硬件
麦子邪9 小时前
C语言中奇技淫巧07-使用GCC栈保护选项检测程序栈溢出
linux·c语言·开发语言
Coision.9 小时前
硬件:51单片机
单片机·嵌入式硬件·51单片机
苏言の狗9 小时前
A*(Astar)算法详解与应用
c语言·c++·算法
逼子格9 小时前
【Protues仿真】基于AT89C52单片机的温湿度测量
单片机·嵌入式硬件·定时器·硬件工程师·dht11·温湿度传感器·at89c52
意法半导体STM3210 小时前
基于 STM32N6-AI Image Classification 使用 git bash 命令行示例 LAT1552
人工智能·git·stm32·ai·gdb·stm32n6·stedgeai
欢乐熊嵌入式编程11 小时前
WIFI协议全解析08:WiFi连接背后的握手过程,你的设备是如何“入网”的
网络·嵌入式硬件·智能路由器·wifi协议·wifi连接