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资源, 不适合长时间延时或多任务高并发场景。

相关推荐