下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

xSemaphoreTakeFromISR
[信号量]

semphr. h
xSemaphoreTakeFromISR ( SemaphoreHandle_t xSemaphore, signed BaseType_t *pxHigherPriorityTaskWoken )

可从 ISR 调用的 xSemaphoreTake() 版本。 与 xSemaphoreTake() 不同,xSemaphoreTakeFromISR() 不允许 指定阻塞时间。

参数:
xSemaphore 信号量被“获取”。 信号量由 SemaphoreHandle_t 类型的变量引用,必须在使用之前显式创建。
pxHigherPriorityTaskWoken 信号量可能(尽管不太可能,并且取决于信号量类型)阻塞一个或多个任务,等待给出信号量。 调用 xSemaphoreTakeFromISR() 将使被阻塞的任务等待信号量离开已阻塞状态。 如果调用 API 函数导致任务离开已阻塞状态,并且未阻塞的任务的优先级等于或高于当前正在执行的任务(被中断的任务),则在内部,API 函数会将 *pxHigherPriorityTaskWoken 设置为 pdTRUE。

如果 xSemaphoreTakeFromISR() 将 *pxHigherPriorityTaskWoken 设置为 pdTRUE,则应在退出中断之前执行上下文切换。 这将确保中断直接返回到最高优先级的就绪状态任务。 该机制与 xQueueReceiveFromISR() 函数中使用的机制相同,读者可以参考 xQueueReceiveFromISR() 文档以获得进一步解释。

从 FreeRTOSV7.3.0 开始,pxHigherPriorityTaskWoken 是一个可选参数,可设置为 NULL。

返回:
如果信号量已成功获取,则返回 pdTRUE。 如果信号量因不可用而未成功获取,则返回 pdFALSE。




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.