os_task_resume
所属模块:任务管理 | 类型:任务恢复函数
函数简介
os_task_resume 用于将指定任务从挂起状态恢复为就绪状态。
恢复后任务将重新参与调度,并可能在下一次调度周期中立即运行。
该接口支持普通任务与高速任务统一恢复,并会触发一次系统调度事件。
函数原型
char os_task_resume(unsigned char id);
参数说明
| 参数 |
说明 |
| id |
任务ID(0~OS_PROCESS_MAX+1) |
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : task_resume.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 待恢复的任务编号。
*
* @return 操作结果。
* @retval 1 任务恢复成功。
* @retval -1 任务编号无效或任务不存在。
*
* @note 将指定任务由挂起状态恢复为就绪状态,使其重新参与系统调度。
* 对于高速任务,恢复对应的高速任务运行标志。
* 函数执行完成后请求系统重新进行任务调度。
*/
char os_task_resume(unsigned char id)//将任务编号为id的任务,由挂起状态变为就绪状态
{
u8 i;
i=1;
if(id>OS_PROCESS_MAX+1)
{
return -1;
}
if(id>=OS_PROCESS_MAX)
{
id%=OS_PROCESS_MAX;
if(OS_KUAI_SP[id]==0)
{
return -1;
}
if(id==1)
{
OS_KUAI_PROCESS_B=1;
}
else
{
OS_KUAI_PROCESS_A=1;
}
}
else
{
if(OS_PROCESS_OK[id]==0)
{
return -1;
}
OS_PROCESS_OK[id]|=0x01;
}
OS_SCHED_REASON=1;//调度触发位
TF0=1;//T0中断
return i;
}
/*------------------------------------------------------------------------
| END OF FILE: task_resume.c |
------------------------------------------------------------------------*/
使用示例
void demo_resume()
{
os_task_resume(2);
}
注意事项
恢复操作会立即触发调度事件,任务可能在当前或下一调度周期运行。
高速任务与普通任务恢复路径不同,需注意资源一致性。