os_task_exit

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

函数简介

os_task_exit 用于当前任务主动结束执行,并触发调度器进行任务切换。

与任务删除函数不同,该函数不会释放任务资源,而是通过修改系统时间片, 强制触发调度机制,使当前任务让出CPU控制权。

函数原型

void os_task_exit(void);

核心机制解析

1. 时间片提前耗尽

OS_TIME_XY = OS_TIME_ONCE - 1;

将当前已运行时间设置为“接近时间片上限”, 使系统在下一次调度检查时认为时间片已用尽。

2. 强制触发定时器中断

TH0 = 0xFF; TL0 = 0xFF;

通过设置定时器寄存器为溢出状态, 强制触发定时器中断,从而进入调度流程。

3. 最小延迟执行

__asm NOP

插入空操作指令,保证寄存器更新稳定, 避免编译器优化导致行为异常。

使用示例

void task1() { // 执行一次后主动退出 os_task_exit(); }

典型使用场景

注意事项

本函数不会删除任务,仅触发调度,任务仍然存在。
若系统中没有其他可运行任务,可能导致重复调度当前任务。

相关推荐