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

嵌入式学习笔记- freeRTOS 带FromISR后缀的函数

FreeRTOS中带FromISR后缀的函数 是用于中断的函数,它有两个特点

一个是无等待延时,

一个是无立刻触发任务切换,

那么

一 为什么中断中不能等待(阻塞)?

因为中断中等待的,一般都是任务给予的,比如消息队列,信号量,而isr中断运行优先级又高于任何任务,要尽早结束中断让系统任务运行起来才有可能尽可能快的得到想要的消息,不然任务中断都会很被动的运行甚至拖死,任务得不到运行发不出消息,中断得不到消息

二 为什么中断中不能使用port YIELD立即触发任务切换的语句?而要放到中断结束位置?

其实没有必须,只是因为合适,中断中不可能进行任务切换,放在中间也可以但是也不会立即切换,放在末尾能够确保中断尽快完整的运行结束,确保对信号量消息队列的关键操作全部完成再判断是否进行切换,比较符合逻辑,
而且不放的话系统只能等到systick中断使能切换,又不符合实时性。

另外cortexM之外的有些架构这个语句可能会直接切换任务而不是等到pendsv来执行?可能造成上下文混乱,这个只是猜测,这个问题有答案的欢迎留言

http://www.lryc.cn/news/2402656.html

相关文章:

  • Linux系统:ELF文件的定义与加载以及动静态链接
  • 迷宫与陷阱--bfs+回路+剪枝
  • 【国产化适配】如何选择高效合规的安全数据交换系统?
  • 基于深度学习的裂缝检测与分割研究方向的 数据集介绍
  • 【Prompt实战】国际翻译小组
  • 简化复杂系统的优雅之道:深入解析 Java 外观模式
  • 设计模式杂谈-模板设计模式
  • LangChain【8】之工具包深度解析:从基础使用到高级实践
  • C#入门学习笔记 #6(字段、属性、索引器、常量)
  • 广目软件GM DC Monitor
  • 每日八股文6.6
  • 动静态库的使用(Linux下)
  • PostgreSQL17 编译安装+相关问题解决
  • FFMPEG 提取视频中指定起始时间及结束时间的视频,给出ffmpeg 命令
  • React 第五十六节 Router 中useSubmit的使用详解及注意事项
  • 华为云学堂-云原生开发者认证课程列表
  • Vue.js 组件:深入理解与实践
  • 什么是强化学习:设置奖励函数最为loss, 监督学习:标签准确率作为loss
  • 理解网络协议
  • placeholder不显示and模板字符串无效
  • 在MyBatis中设计SQL返回布尔值(Boolean)有几种常见方法
  • 全球知名具身智能/AI机器人实验室介绍之AI FACTORY基于慕尼黑工业大学
  • DASCTF
  • 钉钉 - 机器人消息推送(签名版)
  • Redux 实践与中间件应用
  • ModBus总线协议
  • 【计算机网络】非阻塞IO——poll实现多路转接
  • 在.NET Core控制器中获取AJAX传递的Body参数
  • snprintf函数用法及注意事项详解
  • vue-20(Vuex 状态管理的最佳实践)