os_set_scheduler

所属模块:调度系统 | 类型:调度器切换函数

API Metadata

函数ID:os_set_scheduler
模块:scheduler
类型:scheduler switch
嵌套深度:1

函数简介

:contentReference[oaicite:0]{index=0} 用于切换系统当前使用的调度器类型, 支持在 HRTOS 调度与 MYOS 兼容模式之间切换。

该接口主要用于系统级调度框架切换,使系统能够在不同调度实现之间动态切换运行模式。

函数原型

char os_set_scheduler(unsigned char id);

参数说明

参数 说明
id 调度器选择:0 = MYOS,1 = HRTOS

返回值

1 表示切换成功,-1 表示切换失败或状态不满足条件。

源码实现

char os_set_scheduler(unsigned char id) { if((id == 0) && (OS_INTERRUPT_T0 == 0)) { OS_INTERRUPT_T0 = 1; OS_TIME_ONCE_BACKUP = OS_TIME_ONCE; return 1; } else if((id == 1) && (OS_INTERRUPT_T0 == 1)) { OS_INTERRUPT_T0 = 0; OS_TIME_XY = OS_TIME_XY + OS_TIME_ONCE_BACKUP - OS_TIME_ONCE; OS_TIME_ONCE = OS_TIME_ONCE_BACKUP; return 1; } return -1; }

使用示例

void scheduler_demo(void) { // 切换到 MYOS os_set_scheduler(0); // 切换到 HRTOS os_set_scheduler(1); }

注意事项

调度器切换会影响系统中断与时间基准状态,应避免在任务运行关键阶段频繁切换,以免造成时间统计偏差或调度异常。

相关推荐