os_delay_ms
所属模块:时间管理 | 类型:忙等待延时函数
函数简介
os_delay_ms 是一个忙等待延时函数,
通过空循环消耗 CPU 时间实现短时间延迟。
该函数不会进入调度器,也不会释放 CPU,
仅适用于硬件时序控制或极短延时场景。
函数原型
void os_delay_ms(unsigned char ms);
参数说明
| 参数 |
说明 |
| ms |
延迟时间(毫秒级近似值,依赖系统时钟与循环频率) |
源码实现
/*------------------------------------------------------------------------
| 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 资源,不会进入调度器。
不建议在多任务系统中长时间使用,否则会影响实时性。