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

FreeRTOS中断理解

FREERTOS中断可以看下面这篇文章:

05-FreeRTOS中断管理简介

问题1:

最低优先级禁止抢占啥意思

回答:

一、先纠正两个关键基础规则(Cortex-M + FreeRTOS Group4)

  1. 中断优先级数值越小,优先级越高0 > 1 > 2 > ... > 15,15 是全系统最低中断优先级;
  2. FreeRTOS 固定分组 4:4 位全是抢占优先级,只要抢占优先级更高,就能打断正在运行的中断(中断嵌套)。

表格里:

  • N =configMAX_SYSCALL_INTERRUPT_PRIORITY(分界阈值)
  • M = 14,M+1 = 15,也就是PendSV、SysTick 固定设为 15,是整个系统最低的中断优先级。

二、“最低优先级区域禁止抢占” 两层含义

1. 第一层:外部任何中断都能抢占它,它抢不了任何人

最低优先级区间是 15(SysTick/PendSV):

  • 只要当前有别的中断在运行(0~14 任意优先级),SysTick/PendSV 触发了也不能打断别人,必须排队等所有中断执行完;
  • 反过来:只要 SysTick/PendSV 正在运行,随便一个外设中断(UART、定时器等)都能立刻抢占、打断它。 这就是 “禁止抢占别人”—— 它没有抢占其他中断的资格。

2. 第二层:系统设计层面,不允许用这两个中断去抢占业务中断

FreeRTOS 把 SysTick、PendSV 设为最低优先级的核心目的: 优先保障硬件外设、紧急故障中断实时响应,任务切换操作必须让步于所有硬件事件。

  • 假如 SysTick 优先级很高,它就会抢占 UART、定时器中断,导致串口丢数据、定时不准;
  • 现在它优先级最低,任何外设中断来了都能打断调度流程,硬件实时性优先。

三、区分表格三行的 “禁止” 含义(别混淆)

  1. 最高优先级 (0~N):禁止调用 FreeRTOS API这类中断不受 RTOS 管控,不能用队列、信号量等 RTOS 函数,和抢占无关;
  2. 可屏蔽中断 (N+1~M):允许调用 FromISR 系列 API日常外设中断,优先级中等,既能被高优先级硬件中断抢占,也能抢占系统 SysTick/PendSV;
  3. 最低优先级 (M+1~15):禁止抢占无法抢占任何其他中断,所有中断都能抢占它,它只能在无任何中断运行时才能执行。

举个直观例子

假设:

  • 外部 UART 中断优先级 = 5(可屏蔽区间,N+1~M)
  • SysTick 优先级 = 15(最低区间) 场景 1:UART 中断正在接收数据,此时 SysTick 计时到触发中断 → SysTick 优先级更低,不能抢占 UART,只能等串口中断处理完再执行 SysTick; 场景 2:SysTick 正在运行,此时 UART 收到数据触发中断 → UART 优先级更高,直接抢占 SysTick,立刻处理串口数据。

补充:为什么写 “禁止抢占” 而不是 “不能被抢占”

文字表述是站在 SysTick/PendSV 自身视角: 它没有抢占其他中断的能力,所以总结为 “禁止抢占”; 而高、中优先级中断,都具备抢占更低级别中断

http://www.jsqmd.com/news/1076456/

相关文章:

  • Django计算机毕设之基于 Django+LSTM 的学生考试行为分析系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 轴用卡簧槽的直径和轴径的尺寸关系
  • LibTorch(PyTroch C++前端)
  • ROS 2 Fast DDS性能调优实战:解锁XML配置、零拷贝与QoS优化
  • Django计算机毕设之基于 Django 的智能餐饮推荐查询系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 二维抛物方程逆漂移问题:单调迭代重建方法原理与工程实践
  • 【Java基础】反射 + 泛型手写 ORM:你写的框架,Spring 也在用同一套原理
  • 轻量级AI Agent实战:从目标分解到工具调用的四层架构
  • 模板驱动型文档自动化:让批量生成文档变成填空题
  • Python毕业设计-基于 Echarts+Python 的图书零售监测系统设计与实现 基于 Echarts+Python 的图书销售数据可视化(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • OWASP ZAP实战:从被动扫描到主动Fuzzing的Web安全测试进阶
  • WebSocket认证绕过漏洞深度剖析:从CVE-2026-39987看实时交互应用安全
  • AI 辅助 Java 开发实战:我用 Codex 写完了一个生产级项目
  • 智能体三要素:ReAct、Planning与Reflection实战设计指南
  • GEO 技术文章
  • 群星 银河版下载|官方中文|游牧民族DLC+全DLC+修改器
  • 2026申博机构深度测评:申博有术十七连冠卫冕,7家精选机构实测
  • 告别多工具切换烦恼:Mobaxterm中文版一站式远程管理解决方案
  • 安卓ComposeUI:创建一个本地保存数据
  • Social Analyzer开源情报分析实战指南:高效追踪数字足迹的终极方案
  • 后量子密码学实战指南:从NIST标准到企业迁移路径
  • 软件矩阵图管理化的因素关系
  • Selenium IDE:从零掌握Web自动化测试的录制回放与脚本优化
  • 菜单栏开发:实现顶部原生菜单栏(MenuBar)(77)
  • Python的多进程居然把我坑惨了!别踩这个坑
  • 3步快速解决Jellyfin中文影视刮削难题:MetaShark完整配置教程
  • 别再瞎找了!盘点2026年万众偏爱的的AI论文平台
  • 致远FE平台apprvaddNew接口SQL注入漏洞挖掘与防御实践
  • Detecting hallucinations in large language models using semantic entropy
  • AI离题(Digression)识别与防御实战指南