任务状态
在 HRTOS v2 中,任务状态不是静态分类,而是调度器基于 READY 与 WAIT 系统动态推导的运行结果。
状态模型(v2真实定义)
RUNNING ←→ READY ←→ WAIT(统一阻塞模型)
核心API: os_task_get_state · os_delay · os_wait · os_task_yield
状态本质
READY:可调度
RUNNING:正在执行
WAIT:因 delay / event / mutex 等统一阻塞
设计核心
HRTOS v2 不再区分多种 BLOCKED 子状态,而统一进入 WAIT 队列,由资源系统恢复。
状态转换行为
RUNNING → WAIT
调用 os_delay / os_wait / mutex 等
WAIT → READY
时间到或事件满足
READY → RUNNING
调度器选择最高优先级任务
RUNNING → READY
os_task_yield 或时间片抢占
演示代码
#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统一管理所有阻塞来源
✔ READY仅表示“可运行”
✔ WAIT统一管理所有阻塞来源
✔ READY仅表示“可运行”