一、抢占优先级和响应优先级

STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号

越小,表明它的优先级别越高

抢占,是指打断其他中断的属性,即因为具有这个属性会出现嵌套中断(在执行中断

服务函数A 的过程中被中断B 打断,执行完中断服务函数B 再继续执行中断服务函数

A),抢占属性由NVIC_IRQChannelPreemptionPriority 的参数配置。

而响应属性则应用在抢占属性相同的情况下,当两个中断向量的抢占优先级相同时,

如果两个中断同时到达, 则先处理响应优先级高的中断, 响应属性由

NVIC_IRQChannelSubPriority 参数配置。例如,现在有三个中断向量,如下表。

若内核正在执行C 的中断服务函数,则它能被抢占优先级更高的中断A 打断,由于B

和C 的抢占优先级相同,所以C 不能被B 打断。但如果B 和C 中断是同时到达的,内核

就会首先响应响应优先级别更高的B 中断。

二、NVIC 的优先级组

在配置优先级的时候,还要注意一个很重要的问题,即中断种类的数量。NVIC 只可

以配置16 种中断向量的优先级,也就是说,抢占优先级和响应优先级的数量由一个4 位的

数字来决定,把这个4 位数字的位数分配成抢占优先级部分和响应优先级部分。有5 组分

配方式:

第0 组: 所有4 位用来配置响应优先级。即16 种中断向量具有都不相同的响应优先

级。
第1 组:最高1 位用来配置抢占优先级,低3 位用来配置响应优先级。表示有2 种

级别的抢占优先级(0 级,1 级),有8 种响应优先级,即在16 种中断向量之中,有

8 种中断,其抢占优先级都为0 级,而它们的响应优先级分别为0~7,其余8 种中断向

量的抢占优先级则都为1 级,响应优先级别分别为0~7。

第2 组:2 位用来配置抢占优先级,2 位用来配置响应优先级。即4 种抢占优先

级,4 种响应优先级。

第3 组:高3 位用来配置抢占优先级,最低1 位用来配置响应优先级。即有8 种抢占

优先级,2 种响应2 优先级。

第4组:所有4 位用来配置抢占优先级,即NVIC 配置的16 种中断向量都是只有

抢占属性,没有响应属性。

要配置这些优先级组,可以采用库函数NVIC_PriorityGroupConfi g(),可输入的参

数为NVIC_PriorityGroup_0 ~ NVIC_PriorityGroup_4,分别为以上介绍的5 种分配组。

于是,有读者觉得疑惑了,如此强大的STM32,所有GPIO都能够配置成外部中断,

USART、ADC 等外设也有中断,而NVIC 只能配置16 种中断向量,那么在某个工程中

使用超过16 个中断怎么办呢?注意NVIC 能配置的是16 种中断向量,而不是16 个,当

工程中有超过16 个中断向量时,必然有两个以上的中断向量是使用相同的中断种类,

而具有相同中断种类的中断向量不能互相嵌套

(转自野火《零死角玩转STM32》)

STM32 抢占优先级和响应优先级的更多相关文章

  1. 【转】STM32中的抢占优先级、响应优先级概念

    STM32(Cortex-M3)中有两个优先级的概念--抢占式优先级和响应优先级,有人把响应优先级称作'亚优先级'或'副优先级',每个中断源都需要被指定这两种优先级. 具有高抢占式优先级的中断可以在具 ...

  2. stm32中断 抢占优先级 和 响应优先级 有什么区别

    与51不同,stm32的中断分类更灵活.51只是按先后顺序大小排列互相打断. stm32中多了响应优先级这一概念. stm32的中断分为 1.抢占(占先)优先级. 2.响应优先级. 1.抢占优先级.抢 ...

  3. STM32 之 NVIC(中断向量、优先级) 简述

    一.背景 需要使用STM32的CAN进行通信,经过一系列配置后,已可正常收发,还剩下一个CAN通信的错误处理.可错 误中断使能寄存器已经配置使能了,出错后就是无法进入"CAN1_SCE_IR ...

  4. 对STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解(转)

    源:http://blog.chinaunix.net/uid-22670933-id-3443085.html STM32有43个channel的settable的中断源:AIRC(Applicat ...

  5. STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解

    STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解 STM32的优先级NVIC_PriorityGroupConfig的理解及其使用 STM32中断优先级彻底讲解 S ...

  6. 802.1p 优先级与内部优先级的映射关系

    缺省情况下,所有华为 S 系列交换机的 802.1P 优先级 与内部优先级的映射关系是 一 样的,如表 10-3 所示.从中可以看出,这些交换机中 802.1p 优先级与内部优先级的缺省映射关系是按等 ...

  7. ARM-ContexM3/4组优先级和子优先级抢占规则

    多个中断源在它们的抢占式优先级相同的情况下,子优先级不论是否相同,如果某个中断已经在服务当中,则其它中断源都不能打断它:只有抢占式优先级高的中断才可以打断其它抢占式优先级低的中断. 就是说, 组优先级 ...

  8. STM32用FreeRTOS时任务优先级和中断优先级说明

    下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固. FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 co ...

  9. 【C# 线程】优先级反转与优先级继承

    什么是优先级反转(翻转)优先级反转,是指在使用信号量时,可能会出现的这样一种不合理的现象,即:    高优先级任务被低优先级任务阻塞,导致高优先级任务迟迟得不到调度.但其他中等优先级的任务却能抢到CP ...

随机推荐

  1. listView中adapter有不同的click事件的简单写法

    在android中,listview一般都是通过一个adapter来绑定数据,一般的item的点击事件都会指向同一个目标(intent),仅仅是所带的參数不同而已.但有的时候事与愿违,每一个item的 ...

  2. POJ - 3257 Cow Roller Coaster (背包)

    题目大意:要用N种材料建一条长为L的路,如今给出每种材料的长度w.起始地点x.发费c和耐久度f 问:在预算为B的情况下,建好这条路的最大耐久度是多少 解题思路:背包问题 dp[i][j]表示起始地点为 ...

  3. Pixhawk---基于NSH的Firmware开发与调试

    1 相关知识了解 1.1 Nuttx系统   嵌入式实时操作系统(RTOS). 强调标准兼容和小型封装,具有从8位到32位微控制器环境的高度可扩展性.NuttX 主要遵循 Posix 和 ANSI 标 ...

  4. iodine免费上网——本质就是利用dns tunnel建立tcp,然后tcp proxy来实现通过访问虚拟dns0网卡来访问你的dns 授权server

    我的命令: server端: sudo iodined -P passwd -f -DD 10.0.0.100 abc.com client端(直连模式,-r表示使用xxx.abc.com的xxx来转 ...

  5. 19. Remove Nth Node From End of List[M]删除链表的倒数第N个节点

    题目 Given a linked list, remove the n-th node from the end of list and return its head. *Example: Giv ...

  6. POJ 3411 DFS

    大致题意: 有n座城市和m(1<=n,m<=10)条路.现在要从城市1到城市n.有些路是要收费的,从a城市到b城市,如果之前到过c城市,那么只要付P的钱,如果没有去过就付R的钱.求的是最少 ...

  7. word-break属性和css换行显示

    这几天在做项目的时候,遇到了比较棘手的问题,便是在一个标签里边展示内容,如果说展示中文汉字,一点问题都没有,但是只要连续展示英文字母或者中文的标点符号(中间不带空格),那么所渲染的内容就不会换行,而是 ...

  8. 手把手教你写带登录的NodeJS爬虫+数据展示

    其实在早之前,就做过立马理财的销售额统计,只不过是用前端js写的,需要在首页的console调试面板里粘贴一段代码执行,点击这里.主要是通过定时爬取https://www.lmlc.com/s/web ...

  9. vue2.x directive - 限制input只能输入正整数

    onlyNum.js import Vue from 'vue' //只对input生效 export default function (el) { var input = el; input.on ...

  10. javascript中构造函数的说明

    1.1 构造函数是一个模板 构造函数,是一种函数,主要用来在创建对象时对 对象 进行初始化(即为对象成员变量赋初始值),并且总是与new运算符一起使用. 1.2 new 运算符 new运算符创建一个新 ...