STM32 (Cortex-M3) 中的优先级概念

STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。

1. 何为占先式优先级(pre-emption priority)

高占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套。

2. 何为副优先级(subpriority)

在占先式优先级相同的情况下,高副优先级的中断优先被响应;

在占先式优先级相同的情况下,如果有低副优先级中断正在执行, 高副优先级的中断要等待已被响应的低副优先级中断执行结束后才能得到响应—非抢断式响应(不能嵌套)。

3. 判断中断是否会被响应的依据

首先是占先式优先级,其次是副优先级;

占先式优先级决定是否会有中断嵌套;

Reset、NMI、Hard Fault 优先级为负(高于普通中断优先级)且不可调整。

4. 优先级冲突的处理

具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断的嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断。

当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之后才能被处理。如果这两个中断同时到达,则中断控制器根据他们的响应优先级高低来决定先处理哪一个;如果他们的抢占式优先级和响应优先级都相等,则根据他们在中断表中的排位顺序决定先处理哪一个。

5. Cortex-M3中对中断优先级的定义

既然每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位可以有8种分配方式,如下:

所有8位用于指定响应优先级

最高1位用于指定抢占式优先级,最低7位用于指定响应优先级

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

最高3位用于指定抢占式优先级,最低5位用于指定响应优先级

最高4位用于指定抢占式优先级,最低4位用于指定响应优先级

最高5位用于指定抢占式优先级,最低3位用于指定响应优先级

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

最高7位用于指定抢占式优先级,最低1位用于指定响应优先级

这就是优先级分组的概念。

6. stm32中对中断优先级的定义

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

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

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

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

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

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

STM32之中断嵌套控制器相关推荐

  1. 【转-Andrew_qian】stm32中断嵌套全攻略

    断断续续学习STM32一学期了,时间过的好快,现在对STM32F103系列单片机的中断嵌套及外部中断做一个总结,全当学习笔记.废话不多说,ARM公司的Cortex-m3 内核,支持256个中断,其中包 ...

  2. 【STM32】 中断详解

    NVIC 嵌套中断向量控制器(Nested Vectored Interrupt Controller) 1.中断优先级分组 STM32 中断优先级分为两种:抢占式优先级(可嵌套).子优先级(不可嵌套 ...

  3. STM32——理解中断与中断配置

    前言:本文将从"这是什么?" "为什么需要它?" "如何配置操作它"三个角度展开讨论分析 目录 中断简介 抢占优先级和子优先级 中断分组 配 ...

  4. stm32之中断模式

    stm32之中断模式 一.中断简介 二.外部中断配置 (一)外部中断简介 (二)配置外部中断 1.配置外部中断 2.配置中断优先级 3.生成并查看代码 (三)编写中断函数 (四) 实例演示 三.使用串 ...

  5. STM32学习--中断

    这里写目录标题 什么是中断? 中断的作用 中断的特点 STM32与中断 NVIC 中断通道 中断优先级 中断服务函数 SysTick中断(内核中断) SysTick中断函数 NVIC库函数 NVIC初 ...

  6. STM32之中断控制LED灯

    STM32中断控制LED灯 一.中断 1. 中断地址 2. 中断优先级 3. 中断响应过程 二.新建工程 三.编写代码 四.运行结果 五.总结 参考 一.中断 在处理器中,中断是一个过程,即CPU在正 ...

  7. 【嵌入式STM32-05】STM32 外部中断 EXTI 基本原理|库函数程序代码|寄存器

    STM32外部中断 1.中断基本原理 中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行 中断 ...

  8. STM32外部中断与(NVIC)中断优先级管理

    文章目录 1.中断介绍 1.中断的概念 2.中断的产生 3.中断处理的流程 2.STM32内嵌向量中断控制器NVIC 1.NVIC控制器的寄存器 2.STM32中断配置 3.STM32外部中断EXIT ...

  9. STM32的中断介绍

    目录 一.STM32中断应用概览 (1)简介 (2)中断编程的顺序: 1.使能中断请求: 2.中断优先级分组: 3.配置NVIC寄存器,初始化NVIC_InitTypeDef; 4.编写中断服务函数 ...

最新文章

  1. 沉痛悼念 pip search 一路走好
  2. 【 转 】Keepalived工作原理
  3. 【组合数学】指数生成函数 ( 指数生成函数求解多重集排列示例 2 )
  4. [转载] 杜拉拉升职记——06 预算与排期
  5. 【经典回放】JavaScript学习详细干货笔记之(二)
  6. ip地址自动切换器_网络IP切换器IPProviders下载_IPProviders官方版下载1.1.22
  7. goaccess配置nginx日志解析
  8. nacos配置中心信息 nacos版本2.0.3
  9. 第10章 评价分类结果 学习上
  10. setup factory mysql_(一)setupFactory零基础制作零配置安装程序实例(打包JDK Tomcat Mysql mypm)...
  11. 联想用u盘重装系统步骤_如何使用U盘重装系统?使用U盘重装系统步骤详解
  12. 时分秒毫秒 正则表达式
  13. RGB565 转 RGB
  14. 鹅厂web前端实习面经
  15. GPU架构与管线总结
  16. java关于地图经纬度的计算
  17. 帝国CMS[!--onclick--]标签动态显示页面点击数,解决刷新页面浏览量无变化的问题
  18. android id如何修改密码,小编教你忘记Apple ID密码怎么办?以及如何修改密码
  19. STM32---PB3和PB4引脚
  20. [原创]Camtasia Studio 6.0录制视频时鼠标闪烁的解决办法

热门文章

  1. php cli输出百分比,CLI模式。能不能修改已经输出的内容?
  2. html 图片自由缩放_PS中的“缩放”
  3. 3综述 yolo_Onestage目标检测算法综述
  4. 三星mega2 android os,GALAXY MEGA2
  5. 420集的python教程下载_阿里达摩院推荐的420集的python教程,据说懂中文就能入门高清版...
  6. java如何编写年月_如何从Java中的日历对象构建天,月,年的列表?
  7. UI测试常见BUG汇总
  8. pthread_once()
  9. poj3009深度优先搜索挑战程序设计竞赛
  10. 获取浏览器书签、浏览器文件夹数据