STM32 中断系统 掌握

1. 中断系统

**中断:**在主程序运行过程中,出现了特定的中断触发条件,使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回被暂停的位置继续运行。(对于外部中断来说,可以是引脚发生了电平跳变。对于定时器来说,可以是定时的时间到了。对于串口通信来说,可以是接收到了数据)

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

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

2. STM32中断

* 68个可屏蔽中断通道(EXTI,TIM,ADC,USART,ISP......等多个外设)

* 使用NVIC统一管理中断,每个中断通道都拥有16个可编程的优先等级,可对优先级进行分组,进一步设置为抢占优先级和响应优先级

3. NVIC基本结构

NVIC优先级分组

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

4. EXIT外部中断

  1. EXIT可以监测指定的GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI会向NVIC发出中断申请,经过NVIC的裁决后即可中断CPU主程序,使CPU执行EXIT的中断服务函数

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

  3. 支持所有的GPIO口

  4. 通道数16个GPIO_Pin

AFIO复用IO口

复制代码
主要作用是用于引脚复用功能的选择和重定义在STM32中,AFIO主要完成两个任务:复用功能引脚重映射,中断引脚选择

EXIT线与IO映射关系

EXTI 线 0~15:对应外部 IO 口的输入中断。但是STM32F1 供给 IO 口使用的中断线只有 16 个(EXTI0~EXTI15),但是 STM32F1 的 IO 口 却远远不止 16 个,STM32GPIO 管脚 GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线 0~15。这样子每个中断线对应了最多 9 个 IO 口,以EXIT线 0 为例:它对应了GPIOA.0、GPIOB.0、 GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0 和 GPIOG.0。而中断线每次只能连接到 1 个 IO 口上, 这样就需要通过配置决定对应的中断线配置到哪个 GPIO 上了。

其中按照控制功能划分,共分为4个部分;有两条主线,一条是由输入线到 NVIC 中断控制器,一条是由输入线到脉冲发生器。

输入线:是线路的信息输入端,它可以通过配置寄存器设置为任何一个 GPIO 口,或者是一些外设的事件。输入线一般都是存在电平变化的信号。

复制代码
1、边沿检测电路:上升沿触发选择寄存器和下降沿触发选择寄存器。边沿检测电路
复制代码
以输入线作为信号输入端,如果检测到有边沿跳变就输出有效信号‘1’,就输出有效
复制代码
信号‘1’到部分电路,否则输入无效信号‘0’。边沿跳变的标准在于对两个触发选择
复制代码
寄存器的设置。
复制代码
2、或门电路:它的两个信号输入端分别是软件中断事件寄存器和边沿检测电路的
复制代码
输入信号。或门电路只要输入端有信号‘1’,就会输出‘1’,所以就会输出 ‘1’到
复制代码
中断控制电路和脉冲电路。
复制代码
3、与门电路:两个信号输入端分别是中断屏蔽寄存器和电路信号。如果中断屏蔽寄
复制代码
存器设置为 0 时,不管从电路输出的信号特性如何,最终电路输出的信号都是 0;假如中断屏蔽寄存器设置为 1 时,最终标号3电路输出的信号才由标号2电路输出信号决定,这样子就可以简单控制 中断屏蔽寄存器 来实现中断的目的。电路输出 ‘1’就会把请求挂起寄存器(EXTI_PR)对应位置 1。
复制代码
4、与门电路(标号4):输入端来自标号2电路以及来自于事件屏蔽寄存器。可以简
复制代码
单的控制事件屏蔽寄存器来实现是否产生事件的目的。标号4电路输出有效信号 1
复制代码
就会使脉冲发生器电路产生一个脉冲,而无效信号就不会使其产生脉冲信号。
复制代码
脉冲信号产生可以给其他外设电路使用,例如定时器,模拟数字转换器等,这样的
复制代码
脉冲信号一般用来触发 TIM 或者 ADC 开始转换。

产生中断线路目的使把输入信号输入到 NVIC,进一步运行中断服务函数,实现功能。

相关推荐
全栈游侠6 小时前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
Lsir10110_6 小时前
【Linux】中断 —— 操作系统的运行基石
linux·运维·嵌入式硬件
深圳市九鼎创展科技9 小时前
瑞芯微 RK3399 开发板 X3399 评测:高性能 ARM 平台的多面手
linux·arm开发·人工智能·单片机·嵌入式硬件·边缘计算
辰哥单片机设计9 小时前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦10 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报10 小时前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
范纹杉想快点毕业10 小时前
嵌入式与单片机开发核心学习指南——从思维转变到第一性原理的深度实践
单片机·嵌入式硬件
Industio_触觉智能10 小时前
瑞芯微RK3566开发板规格书,详细参数配置,型号EVB3566-V1,基于RK3566核心板SOM3566邮票孔封装
嵌入式硬件·开发板·rk3568·rk3566·核心板·瑞芯微
czwxkn11 小时前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响11 小时前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件