os_delay
所属模块:任务管理 | 类型:任务延时函数
函数简介
os_delay 用于使当前任务进入延时等待状态。
任务会在指定 tick 时间后由系统调度器自动唤醒,重新进入就绪状态。
该接口基于统一等待机制 os_wait 实现,是任务延时的基础API之一。
函数原型
void os_delay(u16 tick);
源码实现
/*------------------------------------------------------------------------
| FILE DESCRIPTION |
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| - File name : delay.c
| - Author : 谭舒
| - Update date : 2026-09-19
| - Copyright(C) : 2026 HRTOS. All rights reserved.
------------------------------------------------------------------------*/
/*------------------------------------------------------------------------
| INCLUDES |
------------------------------------------------------------------------*/
#include "hrtos_internal.h"
/*------------------------------------------------------------------------
| API FUNCTIONS |
------------------------------------------------------------------------*/
/**
* @brief 延时指定数量的系统 Tick。
*
* @param[in] tick 延时时间,以系统 Tick 数为单位。
*
* @return None。
*
* @note 当 tick 为 0 时,函数直接返回。
* 当 tick 不为 0 时,当前任务进入延时等待状态,
* 并在指定 Tick 数到期后由系统自动唤醒。
*/
void os_delay(u16 tick)
{
/* 0 tick 直接返回 */
if(tick != 0)
{
/* 当前任务合法性检查 */
if(OS_CURRENT_TASK < OS_PROCESS_MAX+2)
{
/* 进入统一等待核心 */
TL0=0x66;
TH0=0xfc;
os_wait(WAIT_DELAY, OS_INVALID_ID, tick);
}
}
}
/*------------------------------------------------------------------------
| END OF FILE: delay.c |
------------------------------------------------------------------------*/
使用示例
void task_demo()
{
os_delay(10); // 延时10个tick
}
注意事项
tick 为系统节拍单位,不同系统配置下对应的实际时间长度可能不同。
建议结合 os_ms_to_tick 使用。