打印

FreeRTOS 提供了一套专门用于中断上下文的 API

[复制链接]
882|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang6623|  楼主 | 2024-5-30 14:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在中断服务程序(ISR)中调用标准的FreeRTOS API 可能会导致问题,因为这些 API 可能包含会引起上下文切换的代码,而这在中断上下文中是不安全的。

FreeRTOS 提供了一套专门用于中断上下文的 API,这些 API 在设计上能够安全地在中断服务程序中使用。这些 API 通常以 "FromISR" 后缀结尾,如你提到的 xSemaphoreGiveFromISR()、xQueueSendFromISR() 等。

使用特权

评论回复
沙发
wang6623|  楼主 | 2024-5-30 14:13 | 只看该作者
这些 "FromISR" 版本的 API 具有以下特点:

避免阻塞调用:这些 API 不会导致任务阻塞,因为在中断上下文中不能进行阻塞操作。

使用特权

评论回复
板凳
wang6623|  楼主 | 2024-5-30 14:13 | 只看该作者
不会引起上下文切换:这些 API 不会引发与任务上下文相关的上下文切换,因为在中断上下文中不能执行此类操作。

使用特权

评论回复
地板
wang6623|  楼主 | 2024-5-30 14:13 | 只看该作者
确保最小延迟:这些 API 被设计为具有最小的延迟,并且能够尽快完成其操作,以确保中断服务程序的快速响应。

使用特权

评论回复
5
wang6623|  楼主 | 2024-5-30 14:13 | 只看该作者
在中断服务程序中使用 FreeRTOS 提供的专门针对中断上下文设计的 API 是保证系统可靠性和性能的关键一步。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

390

帖子

0

粉丝