os_task_suspend
所属模块:任务管理 | 类型:任务挂起函数
函数简介
os_task_suspend 用于将指定任务置为挂起状态,使其停止参与调度。
被挂起的任务不会被调度器选择,直到被恢复函数重新激活。
该接口用于任务暂停执行、资源控制或系统管理场景。
函数原型
char os_task_suspend(unsigned char id);
参数说明
| 参数 |
说明 |
| id |
任务ID(0~OS_PROCESS_MAX+1) |
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : task_suspend.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_suspend(unsigned char id)//把任务状态变为挂起状态(暂停运行,不参与调度)
{
if(id>OS_PROCESS_MAX+1)
{
return -1;
}
if(id>=OS_PROCESS_MAX)
{
id%=OS_PROCESS_MAX;
if(id==1)
{
OS_KUAI_PROCESS_B=0;
}
else
{
OS_KUAI_PROCESS_A=0;
}
}
else
{
OS_PROCESS_OK[id]&=0xfe;
}
OS_SCHED_REASON=1;//调度触发位
TF0=1;//T0中断
return 1;
}
/*------------------------------------------------------------------------
| END OF FILE: task_suspend.c |
------------------------------------------------------------------------*/
使用示例
void demo_suspend()
{
os_task_suspend(2);
}
注意事项
挂起后任务将立即从调度体系中移除,必须通过 resume 才能重新参与运行。