os_wait2
所属模块:时间管理 | 类型:精细延时函数
函数简介
os_wait2 提供基于定时器当前计数值的精细延时能力,
可实现比时间片级更高精度的时间控制。
该函数结合系统调度与忙等待机制,
在保证精度的同时兼顾系统整体运行效率。
函数原型
void os_wait2(u16 delay) reentrant;
参数说明
| 参数 |
说明 |
| delay |
延时时间(基于定时器计数单位) |
源码实现
void os_wait2(u16 delay) reentrant
{
u16 remain;
while(delay)
{
remain = 65536 - (TH0 * 256 + TL0);
if(delay >= remain)
{
delay -= remain;
os_delay(1);
}
else
{
while(delay >= (65536 - (TH0 * 256 + TL0)))
{
; // busy wait
}
break;
}
}
}
使用示例
void task1()
{
while(1)
{
// 精细延时
os_wait2(30000);
// 执行任务逻辑
}
}
注意事项
在短延时阶段采用忙等待(busy wait),会占用CPU资源,
不适合长时间延时或多任务高并发场景。