os_delay

所属模块:任务管理 | 类型:任务延时函数

API Metadata

函数ID:os_delay
模块:task
类型:delay control
嵌套深度:2

函数简介

os_delay 用于使当前任务进入延时等待状态。

任务会在指定 tick 时间后由系统调度器自动唤醒,重新进入就绪状态。

该接口基于统一等待机制 os_wait 实现,是任务延时的基础API之一。

函数原型

void os_delay(u16 tick);

参数说明

参数 说明
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 使用。

相关推荐