uCOS-III基础入门函数

本文介绍了uCOS-III实时操作系统的基础知识,包括调度器的三种类型:合作式、抢占式和时间片调度器,以及任务的创建、删除、挂起和恢复。详细讲解了时间管理函数和互斥信号量、事件标志组的使用,如OSTaskCreate、OSTaskDel、OSMutexCreate、OSMutexPend等关键函数的应用。
摘要由CSDN通过智能技术生成

uCOS-III是一个主要是运行在单片机上操作系统,可以实现并发,主要的功能就是任务、mutex、event的创建和使用。

调度器

调度器就是使用相关算法来决定当前需要执行的任务,调度器的核心有两个,一是调度算法,二是任务切换

不同系统之间的任务切换都是差不多的,而调度算法却不一样,FreeRTOS和uCOS的调度算法就不一样。

合作式调度器

FreeRTOS支持合作式调度

抢占式调度器

如果使用抢占式调度,最高优先级的任务一旦准备就绪,总能得到CPU的控制权,当一个运行着的任务使一个优先级比他高的任务进入了就绪态,当前任务的CPU使用权就被剥夺了,高优先级的任务立即得到CPU控制权。学习抢占式调度最重要的一点就是 : 优先级

时间片调度器

最常用的时间片调度算法是round-robin调度算法,实现round-robin算法需要给同优先级的任务之间分配一个专门的列表,用于记录当前就绪的任务,还需要给每个任务一个时间片。目前FreeRTOS和uCOS-III都支持round-robin算法。

任务创建和删除任务

OSTaskCreate()函数
void  OSTaskCreate (OS_TCB        *p_tcb,
						//p_tcb: 指向任务控制块 OS_TCB
						//TCB: Task Controller Block
						//在ucos中用结构体OS_TCB来保存一个任务的所有信息
                    CPU_CHAR      *p_name,
						//"字符串",指定任务的个性化的名字,如,“sb250”


                    OS_TASK_PTR    p_task,
						//p_task 函数指针,指向任务的“任务函数”

                    void          *p_arg,
						//指针,指向的对象,将作为“任务函数”的参数传入

                    OS_PRIO        prio,
						//priority 任务级
						//指定任务的优先级 "unsigned char"
						//数字越小,优先级就越高
						// [2, OS_CFG_PRIO_MAX - 2]


					//STK: stack
					//如下三个参数用来描述“任务栈”: stack
					//"栈内存":用来保存任务执行过程中的一些参数,局部变量等等
					//每个任务都需要有一个独立的栈空间!!!
					//一般来说,定义一个全局的数组,用来当作任务的栈空间

                    CPU_STK       *p_stk_base,
						//p_stk_base指向任务栈的基址,任务栈数组的首地址
						//任务栈数组的元素类型必须为  CPU_STK(CPU_INT32U)
                    CPU_STK_SIZE   stk_limit,
						//设置一个 任务栈的 下限值
						//栈中剩余多少元素时“报警”
   
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Little BigUs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值