uc/os--OSStart

OSStart从就绪表中选择最高的优先级OSPrioHighRdy,通过查表OSTCBPrioTbl,获取最高优先级的TCB块,OSTCBCur = OSTCBPrioTbl[OSPrioHighRdy],最后调用OSStartHighRdy函数

void OSStart (void) reentrant
{
INT8U y;
INT8U x;


if (OSRunning == FALSE) {
y = OSUnMapTbl[OSRdyGrp]; /* Find highest priority's task priority number */
x = OSUnMapTbl[OSRdyTbl[y]];
OSPrioHighRdy = (INT8U)((y << 3) + x);
OSPrioCur = OSPrioHighRdy;
OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run */
OSTCBCur = OSTCBHighRdy;
OSStartHighRdy(); /* Execute target specific code to start task */
}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uC/OS-II是一个非常流行的实时操作系统(RTOS),广泛用于嵌入式系统中。它的设计旨在提供一种简单而有效的方法,使多个任务可以同时运行。 在嵌入式系统中使用uC/OS-II通常需要以下步骤: 1. 确定系统的任务和优先级。uC/OS-II允许用户定义多个任务,每个任务都有一个优先级,这可以通过调用OS_TASK_CREATE函数来实现。任务的数量和优先级应该根据系统的要求进行调整。 2. 初始化uC/OS-II。在uC/OS-II使用之前,需要调用OSInit函数来初始化操作系统。这个函数将设置系统的一些内部变量,例如时钟节拍,系统计时器,以及创建空闲任务。 3. 编写任务函数。每个任务都应该是一个无限循环,并且根据任务的要求使用相应的OS函数来完成任务。例如,如果一个任务需要等待某个事件发生,那么可以使用OSTaskSuspend函数将该任务挂起,直到事件发生。 4. 启动uC/OS-II。调用OSStart函数将启动操作系统。此时,uC/OS-II将开始执行任务,并使用系统计时器和时钟节拍来确保任务按照其优先级运行。 5. 使用其他OS函数。在任务执行期间,可以使用其他OS函数来完成各种操作,例如互斥锁、消息队列、信号量等。 需要注意的是,uC/OS-II的使用需要对嵌入式系统的硬件和软件有深入的理解。在使用uC/OS-II之前,需要确保系统的硬件能够支持它。此外,在任务编写期间,需要仔细考虑任务之间的交互和优先级,以确保系统能够稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值