os_task_yield
所属模块:任务管理 | 类型:CPU让出函数
函数简介
os_task_yield 用于当前任务主动让出CPU执行权。
该接口不会改变任务状态,仅触发一次系统调度,使调度器重新选择任务执行。
常用于协作式调度、循环任务节拍控制或降低实时占用时间。
函数原型
void os_task_yield(void);
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : task_yield.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 当前任务主动让出 CPU,并请求系统进行任务调度。
*
* @param[in] None
*
* @return None。
*
* @note 调用该接口后设置调度请求,并触发 Timer0 中断,
* 由系统在中断处理过程中执行任务调度。
*/
void os_task_yield()//主动挂起自己,让出CPU触发调度
{
OS_SCHED_REASON=1;//调度触发位
TF0=1;//T0中断
}
/*------------------------------------------------------------------------
| END OF FILE: task_yield.c |
------------------------------------------------------------------------*/
使用示例
void task_loop()
{
while(1)
{
// 执行一段逻辑
os_task_yield();
}
}
注意事项
yield 不会改变任务状态,仅触发调度器重新选择任务。
如果没有其他就绪任务,当前任务可能继续执行。