os_task_suspend

所属模块:任务管理 | 类型:任务挂起函数

API Metadata

函数ID:os_task_suspend
模块:task
类型:task suspend
嵌套深度:1

函数简介

os_task_suspend 用于将指定任务置为挂起状态,使其停止参与调度。

被挂起的任务不会被调度器选择,直到被恢复函数重新激活。

该接口用于任务暂停执行、资源控制或系统管理场景。

函数原型

char os_task_suspend(unsigned char id);

参数说明

参数 说明
id 任务ID(0~OS_PROCESS_MAX+1)

返回值

1:挂起成功
-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 才能重新参与运行。

相关推荐