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

Freertos----中断管理

一、中断概念

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

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

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

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

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

二、freertos得ISR函数

xQueueSendToFrontxQueueSendToFrontFromISR为例

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

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

会耗时的情况:

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

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

xQueueSendToFrontFromISR:

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

http://www.xdnf.cn/news/1576.html

相关文章:

  • 使用HYPRE库并行装配IJ稀疏矩阵指南: 矩阵预分配和重复利用
  • 《ATPL地面培训教材13:飞行原理》——第1章:概述与定义
  • 基于PHP+Uniapp的互联网医院源码:电子处方功能落地方案
  • EasyRTC音视频实时通话在线教育解决方案:打造沉浸式互动教学新体验
  • 大模型AI的“双刃剑“:数据安全与可靠性挑战与破局之道
  • 前端跨端框架的开发以及IOS和安卓的开发流程和打包上架的详细流程
  • 电子病历高质量语料库构建方法与架构项目(计划篇)
  • 【C++】二叉树进阶面试题
  • IDEA将本地的JAR文件手动安装到 Maven的本地仓库
  • 无人设备遥控之调度自动化技术篇
  • 在vue项目中实现svn日志打印
  • 数据集中常见的11种变量类型及其在数据分析中的重要性
  • Java 富文本转word
  • debian切换用户
  • A2A Agent 框架结构化分析报告
  • 用 PyQt5 和 asyncio 打造接口并发测试 GUI 工具
  • 第十届电气、电子和计算机工程研究国际学术研讨会(ISAEECE 2025)
  • Lambda表达式
  • TDengine 流计算引擎设计
  • windows中kafka4.0集群搭建
  • CLIP和SimCLR集成到图像-文本检索系统技术实现步骤和部署方案(代码版)
  • 【网络安全】网络钓鱼的类型
  • python异步
  • 专题二十:路由策略与策略路由
  • 内存管理(Linux程序设计)
  • [SystemVerilog]例化
  • 【蓝桥杯】 数字诗意
  • 使用Python创建带边框样式的Word表格
  • 利用爬虫获取 1688 商品详情:高效的数据采集方法
  • sglang部署DeepSeek-R1-Distill-Qwen-7B