状态本质
READY:可调度
RUNNING:正在执行
WAIT:因 delay / event / mutex 等统一阻塞
在 HRTOS v2 中,任务状态不是静态分类,而是调度器基于 READY 与 WAIT 系统动态推导的运行结果。 本示例深入分析任务在 READY、RUNNING 与 WAIT 阻塞之间的调度转换行为。
系统创建 task_demo 单任务系统,任务周期性翻转 LED,并通过 delay 进入 WAIT 阻塞状态。 验证 HRTOS v2 的统一 WAIT 模型:任务状态简化为调度结果,所有阻塞来源统一管理。
HRTOS v2 统一阻塞模型
核心API: os_task_get_state · os_delay · os_wait · os_task_yield
READY:可调度
RUNNING:正在执行
WAIT:因 delay / event / mutex 等统一阻塞
HRTOS v2 不再区分多种 BLOCKED 子状态,而统一进入 WAIT 队列,由资源系统恢复。
任务状态之间的转换关系
任务状态转换的完整实现
task_demo 任务函数,展示 RUNNING ↔ WAIT 状态转换
#include "hrtos.h"
sbit LED_RUN = P1^0;
/* 任务:状态演示 */
void task_demo(void)
{
while(1)
{
/* 运行态:进入CPU */
LED_RUN = 1;
os_delay(3); // 进入延时 → 阻塞态
/* 从延时恢复 */
LED_RUN = 0;
os_delay(3);
}
}
/* 系统入口 */
void hrtos_main(void)
{
LED_RUN = 0;
os_task_create((unsigned int)task_demo, 1, 2, 5);
}
统一 WAIT 模型的核心价值
任务状态机制的核心价值在于:用统一 WAIT 模型替代传统多分类阻塞状态。
深入学习的相关资源