Task Execution Core

创建任务

在 HRTOS v2 中,任务创建是调度系统的入口点。 任务在创建后立即进入就绪队列,并由调度器参与CPU分配。

本示例行为(基于实际代码)

系统创建 task_demo 单任务系统
任务周期性翻转 LED,并通过 yield 触发调度切换

核心API: os_task_create · os_task_yield · task module

任务运行模型

task_demo 在无限循环中运行,每次循环执行 LED 翻转, 然后主动调用 yield 触发调度器重新选择任务。

调度触发方式

本示例的上下文切换来源于:
• os_task_yield(主动让出CPU)
• 系统调度点检测

任务执行流程

1. 系统初始化

hrtos_main 启动任务创建流程

2. TCB生成

创建 task_demo 对应任务控制块

3. 加入就绪队列

任务进入 Ready 状态等待调度

4. CPU分配

调度器选择 task_demo 进入 Running

5. 主循环执行

LED翻转 + 延时 + yield循环

相关API: os_task_get_state · os_task_yield · os_tick_get

演示代码


#include "hrtos.h"

#define TASK_ID  1

sbit LED = P1^0;

/* 任务函数 */
void task_demo(void)
{
    u16 i;
	while(1)
    {
        LED = ~LED;   // 任务运行心跳灯
        
        os_task_yield();
		
		i=20000;
		
		while(i--);
    }
}

/* 系统初始化 */
void hrtos_main(void)
{

    /* 创建任务 */
    os_task_create((unsigned int)task_demo, TASK_ID, 3, 5);

    
}
      

系统本质

该示例验证 HRTOS v2 的基本调度能力: 单任务创建后进入调度系统,并通过 yield 触发上下文切换点。

核心机制:
• task_demo 独立任务栈
• Ready → Running 状态转换
• yield 触发调度重新选择