os_event_query
所属模块:通信机制 | 类型:事件状态查询函数
函数简介
os_event_query 用于查询指定事件是否已触发,
是事件机制中的状态读取接口。
该函数不修改事件状态,仅用于读取当前事件触发情况。
函数原型
char os_event_query(u8 obj);
参数说明
| 参数 |
说明 |
| obj |
事件ID(0 ~ OS_RESOURCE_MAX-1) |
返回值
1 - 事件已触发
0 - 事件未触发
-1 - 参数错误
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : event_query.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 0 事件未触发。
* @retval -1 事件资源槽位编号无效。
*/
char os_event_query(u8 obj)//事件触发查询
{
if(obj >= OS_RESOURCE_MAX)
{
return -1;
}
if(OS_RES[obj].value != 0)//已触发
{
return 1;
}
return 0;//未触发
}
/*------------------------------------------------------------------------
| END OF FILE: event_query.c |
------------------------------------------------------------------------*/
使用示例
void task()
{
if(os_event_query(2))
{
// 事件已触发
handle_event();
}
}
注意事项
该函数仅用于查询,不会清除事件状态。
若需消费事件,请使用 os_event_clear。