当前位置: 首页 > 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应用
  • 韩国对华中厚板征收临时反倾销税
  • 建设高标准农田主要目标是什么?有哪些安排?两部门有关负责人答问
  • 上海举行金融服务企业“走出去”推进大会
  • 三亚亚龙湾3.4公里岸线近岸海域使用权挂牌出让,起始价近九千万
  • 外交部回应菲律宾涉仁爱礁言论:菲方7轮运补均提前通报中方
  • 詹妮弗·劳伦斯、罗伯特·帕丁森新片入围戛纳主竞赛单元