当前位置: 首页 > article >正文

STM32——HAL库开发笔记18(中断的优先级)(参考来源:b站铁头山羊)

一、基本概念

中断优先级是指系统在处理多个中断请求时,决定哪个中断先被处理的顺序。优先级高的中断会优先得到处理,而优先级低的中断则会被暂时挂起,直到高优先级的中断处理完毕。

二、中断优先级分组

对于STM32F103C8T6,它分为0-15,总共16个终端优先等级,数字越小,等级越高。

四位二进制数来表示中断优先级

bit3、bit2为抢占优先级,和中断嵌套、中断排队有关

bit1、bit0为子优先级,只和中断排队有关

因此产生了物种分配方式,如下图

以上就是中断优先级分组。

三、中断排队

在中断程序执行的时候产生中断,这时候就需要排队,排队规则就是中断优先级越高,排队越靠前。两个中断的优先级相同时,遵循先来后到的原则。

四、中断嵌套

中断嵌套是指在一个中断处理过程中,系统允许更高优先级的中断打断当前中断处理程序,转而执行新的中断处理程序。待高优先级中断处理完成后,再返回继续执行原中断处理程序。

是否发生中断嵌套只和抢占优先级有关,而且发生的条件是:新中断的优先级更高。

五、例子

假设我们采用两位抢占优先级和两位子优先级的分组方式,此时他们的取值范围都是(00~11)即(0~3)。

在我们执行常规程序时来了中断1优先级为11(1011B)抢占优先级为2,子优先级为3,我们写为(2,3)。

执行中断1时又来了中断2,优先级为8(1000B)(2,0)。对比一下两个中断的抢占优先级,都是2,所以遵从先来后到原则。在这时候又来了中断3 ,优先级为4(0100B)(1,0)中断3的抢占优先级为1,比中断1和中断2的优先级高,所以发生中断嵌套,先执行中断3,中断3结束后再执行中断2和中断1。中断1和中断2相比,中断2优先级高,所以先执行中断2。

最终执行顺序为:中断3、中断2、中断1。


http://www.kler.cn/a/547609.html

相关文章:

  • ZOJ 1011 NTA
  • 基于Python Django的微博舆论分析、微博情感分析可视化系统(V2.0)【附源码、技术说明】
  • vue3+vite项目引入electron运行为桌面项目
  • HBASE面试题
  • 一口井深7米,一只蜗牛从井底往上爬每天爬3米掉下去1米,问几天能爬上井口?
  • 算法随笔_51: 表现良好的最长时间段_方法2
  • vue elementui select下拉库组件鼠标移出时隐藏下拉框
  • vscode ESP32配置
  • 【MyBatis】_动态SQL
  • OpenMetadata 获取 MySQL 数据库表血缘关系详解
  • stm32 CubeMx 实现SD卡/sd nand FATFS读写测试
  • 2025年2月14日笔记 3
  • DeepSeek 可视化部署手册:环境配置与运维指南
  • DEIM:加速Transformer架构目标检测的突破,YOLO系列的启发
  • Qt中QApplication 类和uic、moc程序
  • P6792 [SNOI2020] 区间和 Solution
  • 哈希表(C语言版)
  • Dubbo 集群策略:负载均衡与容错机制
  • CST无限平面圆孔RCS --- 单站, 多角单频,T求解器(远场或探针),去耦平面
  • SOUI基于Zint生成Code 2 of 5码