在进行STM32f103的时候,进行中断分组的相关概念
Cortex-M3允许具有较少中断源时使用较少的寄存器位指定中断源的优先级,因此STM32把指定中断优先级的寄存器位减少到4位,这4个寄存器位的分组方式如下:

第0组:所有4位用于指定响应优先级

第1组:最高1位用于指定抢占式优先级,最低3位用于指定响应优先级

第2组:最高2位用于指定抢占式优先级,最低2位用于指定响应优先级

第3组:最高3位用于指定抢占式优先级,最低1位用于指定响应优先级

第4组:所有4位用于指定抢占式优先级

可以通过调用STM32的固件库中的函数NVIC_PriorityGroupConfig()选择使用哪种优先级分组方式,这个函数的参数有下列5种:

NVIC_PriorityGroup_0=> 选择第0组

NVIC_PriorityGroup_1=> 选择第1组

NVIC_PriorityGroup_2=> 选择第2组

NVIC_PriorityGroup_3=> 选择第3组

NVIC_PriorityGroup_4=> 选择第4组

接下来就是指定中断源的优先级,下面以一个简单的例子说明如何指定中断源的抢占式优先级和响应优先级:
// 选择使用优先级分组第1组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);

// 使能EXTI0中断
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; // 指定抢占式优先级别1

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定响应优先级别0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

// 使能EXTI9_5中断
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 指定抢占式优先级别0
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; // 指定响应优先级别1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

要注意的几点是:

1)如果指定的抢占式优先级别或响应优先级别超出了选定的优先级分组所限定的范围,将可能得到意想不到的结果;

2)抢占式优先级别相同的中断源之间没有嵌套关系;

3)如果某个中断源被指定为某个抢占式优先级别,又没有其它中断源处于同一个抢占式优先级别,则可以为这个中断源指定任意有效的响应优先级别。

STM32中断优先级分组概念相关推荐

  1. stm32中断优先级分组

    STM32中断优先级和开关总中断一,中断优先级:STM32(Cortex-M3)中的优先级概念 STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作' ...

  2. STM32——中断优先级分组

    一.SCB-AIRCR寄存器 首先,对STM32中断进行分组,0--4.同时,每个中断设置一个抢占优先级和一个响应优先级. 1. 高抢占可以打断正在执行的低抢占 2. 抢占相等,高响应不能打断低响应 ...

  3. STM32中断优先级概念

    一:综述 STM32 目前支持的中断共为 84 个(16 个内核+68 个外部),可以提供16 级可编程中断优先级的设置(仅使用中断优先级设置8bit中的高4位)和16个抢占优先级(因为抢占优先级最多 ...

  4. STM32中断优先级彻底讲解

    一.综述 STM32 目前支持的中断共为 84 个(16 个内核+68 个外部), 16 级可编程中断优先级的设置(仅使用中断优先级设置 8bit 中的高 4 位)和16个抢占优先级(因为抢占优先级最 ...

  5. STM32中断优先级NVIC配置说明

    STM32中断优先级NVIC配置说明 NVIC中断优先级分组列表 优先级分组 抢占优先级 响应优先级 高4bit分配情况 NVIC_PriorityGroup_0 取值:0 取值:0~15 0bit抢 ...

  6. STM32中断优先级的管理(NVIC)

    STM32 NVIC 中断优先级管理 CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置. STM32 并没有使用 CM3 内核的 ...

  7. STM32F4设置NVIC中断优先级分组

    中断管理方法:  首先,对STM32中断进行分组,组0~4.同时,对每个中断设置一个抢占优先级和一个响应优先级值.  分组配置是在寄存器SCB->AIRCR中配置:  高优先级的抢占优先级是可以 ...

  8. stm32——中断优先级管理

    1.NVIC中断优先级分组 1.CM3内核支持256个中断, 其中包含16个内核中断和240个外部中断,并且具有256级的可编程中断设置. 2.STM32并没有使用CM3内核全部的东西,而是只用了他其 ...

  9. 中断优先级分组与抢占优先级和响应优先级的关系

    之前学习嵌入式的时候不太明白中断优先级分组与抢占优先级和响应优先级的关系,比如分组为2,抢占优先级也为2,响应优先级也为2,就是不明白他们之间有什么关系,谁决定谁,总共有多少个数值可供选择. 趁着现在 ...

最新文章

  1. “;“分号空语句的使用
  2. iOS:融云即时通讯快速集成
  3. github上的版本和本地版本冲突的解决方法(Updates were rejected because the tip of your current branch is behind)
  4. Java的后缀分类_java数据类型扩展及相应的面试题
  5. eclipse链接mycat报数据源初始化失败
  6. 抖音城市美食算数报告
  7. linux 内核空间 缺页,Linux-3.14.12内存管理笔记【缺页异常处理(1)】
  8. 简单好用的sshfs -- 通过ssh映射远程路径(转)
  9. Linux线程的同步,linux线程同步
  10. 为Web Service添加缓存
  11. Android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)
  12. java代码-----逻辑运算符
  13. cf446C DZY Loves Fibonacci Numbers
  14. EC20 4G模块 *99# 拨号上网
  15. 这些配色方案让数据可视化图表更加高大上
  16. JavaScript(3)基础
  17. 自用tomcat、springboot、rust发布脚本
  18. 大疆 机器视觉 图像相关岗位的招聘要求
  19. 计算机基础长文档的排版,“WORD长文档排版技术
  20. numpy中数据不以科学记数法显示

热门文章

  1. 2020中国新基建409家细分领域龙头企业全名单!
  2. 同步与异步区别之我见(一)
  3. [转] Attach、Detach和DeleteObject
  4. NetHunter-Rootless:安卓手机免Root安装Kali NetHunter
  5. Ubuntu18的bug导致系统启动后黑屏的问题
  6. java 免登录_最简单、稳定的免密登录
  7. 分享几个去图片水印好用的软件给你
  8. 关于时域、频域和波数域的一些概念
  9. exception的使用
  10. 自动化项目倍加福WCS-PG210E使用GSD文件