os_delay_ms

所属模块:时间管理 | 类型:忙等待延时函数

API Metadata

函数ID:os_delay_ms
模块:time / delay
类型:busy-wait delay
嵌套深度:1

函数简介

os_delay_ms 是一个忙等待延时函数, 通过空循环消耗 CPU 时间实现短时间延迟。

该函数不会进入调度器,也不会释放 CPU, 仅适用于硬件时序控制或极短延时场景。

函数原型

void os_delay_ms(unsigned char ms);

参数说明

参数 说明
ms 延迟时间(毫秒级近似值,依赖系统时钟与循环频率)

返回值

无返回值(void函数)

源码实现

/*------------------------------------------------------------------------ | FILE DESCRIPTION | ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | - File name : delay_ms.c | - Author : 谭舒 | - Update date : 2026-09-19 | - Copyright(C) : 2026 HRTOS. All rights reserved. ------------------------------------------------------------------------*/ /*------------------------------------------------------------------------ | INCLUDES | ------------------------------------------------------------------------*/ #include "hrtos_internal.h" /*------------------------------------------------------------------------ | API FUNCTIONS | ------------------------------------------------------------------------*/ /** * @brief 执行毫秒级忙等待延时。 * * @param[in] ms 延时时间,单位为毫秒。 * * @return None。 * * @note 该函数采用忙等待方式实现延时,执行期间持续占用 CPU, * 不释放处理器,也不会主动触发任务调度。 * 仅适用于短时间的硬件时序等待,不适用于任务长时间延时。 */ void os_delay_ms(unsigned char ms) //忙等待延时函数;占用CPU,不释放处理器,仅用于短时间硬件时序等待 { u8 i,j; while(ms--) { i = 3; j = 172; do { while(--j) { ; } } while(--i); } } /*------------------------------------------------------------------------ | END OF FILE: delay_ms.c | ------------------------------------------------------------------------*/

使用示例

void task() { os_delay_ms(100); }

注意事项

该函数为忙等待实现,会占用 CPU 资源,不会进入调度器。 不建议在多任务系统中长时间使用,否则会影响实时性。

相关推荐