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

Freertos----中断管理

一、中断概念

在RTOS中,需要应对各类事件。这些事件很多时候是通过硬件中断产生,怎么处理中断呢?

假设当前系统正在运行Task1时,用户按下了按键,触发了按键中断。这个中断的处理流程如下:

  • CPU跳到固定地址去执行代码,这个固定地址通常被称为中断向量,这个跳转时硬件实现的
  • 执行代码做什么?
    • 保存现场:Task1被打断,需要先保存Task1的运行环境,比如各类寄存器的值
    • 分辨中断、调用处理函数(这个函数就被称为ISR,interrupt service routine)
    • 恢复现场:继续运行Task1,或者运行其他优先级更高的任务

你要注意到,ISR是在内核中被调用的,ISR执行过程中,用户的任务无法执行。ISR要尽量快,否则:

  • 其他低优先级的中断无法被处理:实时性无法保证
  • 用户任务无法被执行:系统显得很卡顿

二、freertos得ISR函数

xQueueSendToFrontxQueueSendToFrontFromISR为例

任务A中,他在while循环里面执行xQueueSendToFront,去写入队列。

xQueueSendToFront:在写入队列后,会分三种情况,如上图的红色方框。

会耗时的情况:

写入失败:阻塞耗时。写入成功:唤醒其他任务,马上并进行切换

假如其他任务优先级高,会切换执行其他高优先级任务,而自己的任务运行很久,这样子是不能放入中断中的,因此需要有xQueueSendToFrontFromISR中断函数去写入队列。

xQueueSendToFrontFromISR:

反正使用这个函数要加上红色方框就对了。

相关文章:

  • Visual Studio Code 使用tab键往左和往右缩进内容
  • 水域陆地两相宜,便携漏电探测仪
  • 大数据驱动公共交通系统的智慧化革命
  • React19源码阅读之commitRoot
  • 架构-系统工程与信息系统基础
  • 提升内容创作效率:AI原创文章批量生成工具优势
  • CentOS 7.9升级OpenSSH到9.9p2
  • 专家系统的一般结构解析——基于《人工智能原理与方法》的深度拓展
  • DRF凭什么更高效?Django原生API与DRF框架开发对比解析
  • 要从给定的数据结构中提取所有的 itemList 并将其放入一个新的数组中
  • 计算机视觉——速度与精度的完美结合的实时目标检测算法RF-DETR详解
  • Electron Forge【实战】百度智能云千帆大模型 —— AI聊天
  • VMware与Docker:虚拟化技术的双轨演进与融合实践
  • Nginx 反向代理,啥是“反向代理“啊,为啥叫“反向“代理?而不叫“正向”代理?它能干哈?
  • 第十四届蓝桥杯省B.砍树
  • 12.桥接模式:思考与解读
  • 2025年计算机视觉与智能通信国际会议(ICCVIC 2025)
  • 对话模型和补全模型区别
  • LabVIEW实现Voronoi图绘制功能
  • 使用Next.js构建单页面React应用
  • 工信部:加强通用大模型和行业大模型研发布局
  • 老人误操作免密支付买几百只鸡崽,经济日报:支付要便捷也要安全
  • 视频丨英伟达总裁黄仁勋:美勿幻想AI领域速胜中国
  • 三家“券商系”公募同日变更掌门人,新董事长均为公司股东方老将
  • 国家卫健委对近日肖某引发舆情问题开展调查
  • 网商银行2024年年报发布,客户资产管理规模超过1万亿