UCOS-III学习(一)——创建任务

本文详细介绍了在UCOS操作系统中创建任务的过程,包括定义任务栈、任务控制块及任务主体函数,并通过伪代码展示了如何使用OSTaskCreate和OSStart函数来创建并启动任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建任务

1、定义任务栈
在UCOS中,每个任务都是独立的,它们的运行环境都单独的保存在各个栈空间,任务使用的栈和任务控制块都使用的是静态变量,也就是全局变量。

#define APP_STK_SIZE   128
static CPU_STK APPTaskStartStk[APP_STK_SIZE];

2、定义任务控制块
任务控制块就是一个结构体,其中的成员共同描述了任务的全部信息。

static OS_TCB APPTaskTCB;

3、定义任务主体函数
任务实际上就是一个无限循环且不带返回值的C函数。
任务里面的延时函数必须使用UCOS提供的阻塞延时函数,当调用OSTimeDly函数的时候,当前任务会被挂起,调度器会切换到其他就绪的任务中,从而实现多任务运行。

4、创建任务
一个任务的三要素:任务主体,任务栈,任务控制块。
由OSTaskCreate()函数将三者联系在一起,任务创建后可随时被系统启动与调度。

5、启动任务
当任务创建好是处于就绪态。启动任务调度器OSStart()函数即可。

伪代码

#define APP_TASK_STK_SIZE   128
static CPU_STK APPTaskStk[APP_TASK_STK_SIZE];
static OS_TCB APPTaskTCB;

int main(void)
{
   OS_ERR err;
   OSInit(&err);
   OSTaskCreate((OS_TCB*) &APPTaskTCB,
                 (CPU_CHAR*) "APP Task Start",
                 (OS_TASK_PTR) APPTaskStart,
                 (void *) 0,
                 (OS_PRIO) APP_Task_PRIO,
                 (CPU_STK*) &APPTaskStk[0],
                 (CPU_STK_SIZE) APP_TASK_STK_SIZE/10,
                 (CPU_STK_SIZE) APP_TASK_STK_SIZE,
                 (OS_MSG_QTY) 5u,
                 (OS_TICK) 0u,
                 (void *) 0,
                 (OS_OPT) "太长了,不想写了",
                 (OS_ERR*) &err);
   OSStart(&err);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值