os_queue_send_from_isr

所属模块:通信机制 | 类型:中断安全队列函数

API Metadata

函数ID:os_queue_send_from_isr
模块:ipc
类型:isr safe queue send
嵌套深度:1

函数简介

os_queue_send_from_isr 用于在中断上下文中向邮箱/队列写入1字节数据。 该函数是HRTOS中中断安全IPC机制的一部分。

该接口在ISR中快速投递数据,并触发调度请求。

函数原型

char os_queue_send_from_isr(u8 id, u8 value);

参数说明

参数 说明
id 邮箱/队列ID(0 ~ OS_RESOURCE_MAX-1)
value 写入的数据(1字节)

返回值

1 - 成功
-1 - 失败(ID非法)

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : queue_send_from_isr.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include"hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 在中断环境向指定资源写入数据,并触发调度请求。 * * @param[in] id 资源编号。 * @param[in] value 待写入的数据。 * * @return 操作结果。 * @retval 1 数据发送成功。 * @retval -1 资源编号无效。 * * @note 该接口用于中断环境。 * 数据写入资源后,待处理信号计数增加,并请求系统进行调度。 */ char os_queue_send_from_isr(u8 id, u8 value) { if (id >= OS_RESOURCE_MAX) { return -1; } /* 写入邮箱 */ OS_RES[id].value = value; /* 事件计数 */ OS_RES[id].pending_signal++; /* 触发调度 */ OS_SCHED_REASON = 1; return 1; } /*------------------------------------------------------------------------ | END OF FILE: queue_send_from_isr.c | ------------------------------------------------------------------------*/

使用示例

void UART_ISR(void) { os_queue_send_from_isr(1, RX_DATA); // 立即返回中断 }

注意事项

该函数必须在中断上下文调用,禁止在任务中使用 ISR 版本接口。

相关推荐