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

1、中断优先级分组

STM32 中断优先级分为两种:抢占式优先级(可嵌套)、子优先级(不可嵌套)。STM32 中断优先级分组具体由 4 位二进制决定:

分组号 4 bit 分配情况 说明
第0组 0 : 4 无抢占式优先级,16 个子优先级
第1组 1 : 3 2 个抢占式优先级,8 个子优先级
第2组 2 : 2 4 个抢占式优先级,4 个子优先级
第3组 3 : 1 8 个抢占式优先级,2 个子优先级
第4组 4 : 0 16 个抢占式优先级,无子优先级

可嵌套是指抢占式优先级高的中断可以抢占抢占式优先级低的中断的CPU使用权,不可嵌套是指子优先级高的中断不能抢占子优先级低的中断的CPU使用权。

中断优先级分组标准库库函数:

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)

NVIC_PriorityGroup_0 => 选择第 0 组
NVIC_PriorityGroup_1 => 选择第 1 组
NVIC_PriorityGroup_2 => 选择第 2 组
NVIC_PriorityGroup_3 => 选择第 3 组
NVIC_PriorityGroup_4 => 选择第 4 组

例如配置为第 2 组:

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

注:
如果用户没有设置优先级分组,即用户没有调用NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),则优先级分组默认设置为分组 0,即无抢占式优先级、16个子优先级。

2、中断初始化

2.1 中断初始化结构体配置

结构体类型定义如下:

typedef struct{uint8_t NVIC_IRQChannel;             uint8_t NVIC_IRQChannelPreemptionPriority;  //抢断优先级uint8_t NVIC_IRQChannelSubPriority;  //响应优先级      FunctionalState NVIC_IRQChannelCmd;
} NVIC_InitTypeDef;

例如 STM32 外部中断 0 配置:

NVIC_InitTypeDef EXTI_NVIC_InitStructure;
EXTI_NVIC_InitStructure.NVIC_IROChannel = EXTI0_IRQn;
EXTI_NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//抢占式优先级
EXTI_NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级
EXTI_NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

2.2 中断初始化标准库库函数

void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)

中断初始化标准库库函数调用:

NVIC_Init(&EXTI_NVIC_InitStructure);

【STM32】 中断详解相关推荐

  1. STM32 中断详解

    目录 1 EXTI控制器 2 NVIC控制器 3 code 中断,在单片机中占有非常重要的地位.代码默认地从上向下执行,遇到条件或者其他语句,会按照指定的地方跳转.而在单片机执行代码的过程中,难免会有 ...

  2. stm32位操作详解

    stm32位操作详解 STM32位操作原理 思想:把一个比特分成32位,每位都分配一个地址,这样就有32个地址,通过地址直接访问. 位操作基础 位运算 位运算的运算分量只能是整型或字符型数据,位运算把 ...

  3. STM32 定时器详解

    STM32 定时器详解 吃了一个猛亏,自己理解花了大半天时间,结果一看代码发现巨简单 算了,把自己理解的放上来吧 目录 STM32 定时器详解 前言 一.定时器种类和区分 二.时钟源 三.计数过程 3 ...

  4. linux内核中断详解

    linux内核中断详解 1.中断的硬件触发流程 外设:如果外设有操作或者有数据可用,那么就会产生一个电信号,这个电信号发送给中断控制器. 中断控制器:中断控制器接收到外设发来的电信号以后,进行进一步的 ...

  5. STM32开发 -- 外部中断详解

    如需转载请注明出处:https://blog.csdn.net/qq_29350001/article/details/87376865 在讲三轴加速度计的时候,提到外部中断.接下来就看看中断为什么这 ...

  6. 【STM32学习笔记】(13)——外部中断详解

    EXTI 简介         EXTI(External interrupt/event controller)-外部中断/事件控制器,管理了控制器的 20 个中断/事件线.每个输入线可以独立地配置 ...

  7. 【stm32】中断详解

    stm32中断的顺序: 1)初始化 IO 口. 2)开启 AFIO 时钟 3)EXTI配置. 4)NVIC配置. 5)编写中断服务函数. 1 NVIC中断优先级管理 CM3 内核支持 256 个中断, ...

  8. STM32 SPI详解

    目录 1.SPI简介 2.SPI特点 2.1.SPI控制方式 2.2.SPI传输方式 2.3.SPI数据交换 2.4.SPI传输模式 3.工作机制 3.1.相关缩写 3.2.CPOL极性 3.3.CP ...

  9. STM32 GPIO 详解

    0. 实验平台 基于STM32F407ZG 1. GPIO 简介 1.1 简介 GPIO全称:General Purpose Input Output,即通用输入输出端口,一般用来采集外部器件的信息或 ...

  10. STM32 ADC详解

    目录 01.ADC简介 02.STM32的ADC外设 03.STM32ADC框图讲解 04.触发源 05.转换周期 06.数据寄存器 07.中断 08.电压转换 09.电路图设计 10.代码设计 01 ...

最新文章

  1. MySQL【案例讲解】单行函数
  2. java 常量区存放 new_java---堆、栈、常量池的存储数据
  3. 如何使用django显示一张图片
  4. MyEclipse的快捷使用(含关联源码和Doc的方式)
  5. python基础高级函数(十九)
  6. edge 浏览器中数字显示为链接
  7. JS中定时器的返回数值ID值
  8. LDA︱基于LDA的Topic Model变形+一些NLP开源项目
  9. 《unity2021》如何改成中文
  10. IDEA谷歌翻译插件提示:更新 TKK 失败,请检查网络连接
  11. 【组合数学】二项式定理与组合恒等式 ( 二项式定理 | 三个组合恒等式 递推式 | 递推式 1 | 递推式 2 | 递推式 3 帕斯卡/杨辉三角公式 | 组合分析方法 | 递推式组合恒等式特点 )
  12. “创新雷神号”卫星成功发射,华为云分布式云原生“天地一体”首次组网成功
  13. 数论-杨辉三角和二项式定理
  14. 知物由学 | AI网络安全实战:生成对抗网络
  15. 键盘辅助功能指南:JavaScript
  16. Android 仿今日头条频道管理(下)(GridView之间Item的移动和拖拽)
  17. 大概率思维《The House Advantage》
  18. matlab 二次最优控制,基于MATLAB的线性二次型最优控制
  19. 日系小清新PPT模板
  20. Linux基础学习(Ubuntu)

热门文章

  1. 3.4利用单臂路由实现vlan间路由
  2. ES module与commonjs的区别
  3. Dalvik虚拟机垃圾收集(GC)过程分析
  4. 机器学习实战:Python基于支持向量机SVM-RFE进行分类预测(三)
  5. 什么是BOSS业务?
  6. 平安科技-前端面试1
  7. 行为识别笔记:iDT算法用法与代码解析
  8. Go语言 linux下开发 IDE -SpaceVim\NeoVim
  9. MAC地址 单播,组播,广播
  10. 树莓派4B通过16路PWM输出的PCA9685模块控制舵机(机械臂)附完整代码