os_event_set_from_isr

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

API Metadata

函数ID:os_event_set_from_isr
模块:event
类型:isr event set
嵌套深度:1

函数简介

os_event_set_from_isr 用于在中断上下文中设置事件标志, 并唤醒所有等待该事件的任务。

该函数属于HRTOS事件广播机制的一部分,用于实现ISR到任务的通知机制。

函数原型

char os_event_set_from_isr(char obj);

参数说明

参数 说明
obj 事件编号(0~OS_RESOURCE_MAX-1)

返回值

1 - 设置成功
-1 - 参数错误

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : event_set_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] obj 事件资源槽位编号。 * * @return 操作结果。 * @retval 1 事件设置成功。 * @retval -1 事件资源槽位编号无效。 * * @note 设置事件后,根据当前等待该事件的任务数量产生相应的待处理信号, * 并请求系统重新进行任务调度。 * 该接口用于中断环境。 */ char os_event_set_from_isr(char obj) { if (obj >= OS_RESOURCE_MAX) { return -1; } OS_RES[obj].value = 1; OS_RES[obj].pending_signal=OS_RES[obj].wait_cnt;//全局广播释放 OS_SCHED_REASON = 1; return 1; } /*------------------------------------------------------------------------ | END OF FILE: event_set_from_isr.c | ------------------------------------------------------------------------*/

使用示例

void EXTI_ISR(void) { os_event_set_from_isr(3); }

注意事项

该函数用于ISR环境,禁止在任务上下文中调用 ISR 版本接口。 并且会唤醒所有等待该事件的任务。

相关推荐