uCOS学习----UCOSIII任务管理

一、启动和初始化ucosiii

1、调用OSInit()初始化ucos
2、创建任务,一般只在main()中创建一个start_task()任务,其他任务都在start_task()中创建。
调用OSTaskCreate()创建任务时一定要调用OS_CRITICAL_ENABLE()进入临界区,任务创建完成后调用OS_CRITICAL_EXIT()推出临界区。
3、OSStart()开启ucosiii。
初始化代码
注:ucosii的OSTaskCreate()一般有四个或九个参数。
ucosii的task创建函数

二、任务管理

1、任务状态

这里写图片描述
任务状态切换

2、任务控制块

在使用OSTaskCreate()函数来创建人物的时候就会给任务分配一个任务控制块OS_TCB。

3、任务堆栈

任务堆栈用来切换任务和调用其它函数的时候保存现场,每个任务应该具有自己的堆栈。
堆栈定义如下,CPU变量为4个字节,所以定义的任务堆栈TASK_STK,堆栈大小为64*4=256。
堆栈定义

4、任务就绪表

优先级位映射表OSPrioTB1[]和就绪任务列表OSRdyList[]。

5、任务调度和切换
5.1 可剥夺型调度
5.1.1任务级调度器OSSched()
        在os_core.c文件。在中断服务函数中不能使用。
5.1.2中断级调度器OSInitExit()
        在调用OSInitExit(),中断应该关闭。
5.2 时间片轮转调度

ucos中允许一个任务运行一段时间(时间片)后出CPU的使用权,让拥有同优先级的下一任务运行。
时间片轮转

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值