os_delay

所属模块:时间管理 | 类型:任务控制函数

函数简介

os_delay 用于让当前任务进入延时等待状态(阻塞), 延时单位为系统时间片(Tick)。

在延时期间,任务会被从就绪队列移除, 调度器将切换到其他可运行任务,从而实现多任务并发执行。

函数原型

void os_delay(u8 ticks) reentrant;

参数说明

参数 说明
ticks 延时时间(单位:系统时间片)

返回值

无返回值。

源码实现

void os_delay(u8 ticks) reentrant { EA = 0; OS_WAIT_DI[OS_YUNXING_BIANHAO] += ticks; if(OS_WAIT_DI[OS_YUNXING_BIANHAO] < ticks) OS_WAIT_DI[OS_YUNXING_BIANHAO] = 255; OS_WAIT_INT = 1; while(OS_WAIT_DI[OS_YUNXING_BIANHAO] != 0) { OS_PEOCESS_OK[OS_YUNXING_BIANHAO] &= 0xFE; os_switch(); } EA = 1; }

使用示例

void task1() { while(1) { // 延时10个时间片 os_delay(10); // 执行任务逻辑 } }

注意事项

在延时期间任务会被阻塞,不会参与调度。ticks 过大可能影响系统实时性,应合理设置。

相关推荐