uC/OS-II OS_TASK.C中有关任务管理的函数

函数大致用途

OS_TASK.C是uC/OS-II有关任务管理的文件,它定义了一些函数:建立任务、删除任务、改变任务的优先级、挂起和恢复任务,以及获取有关任务的信息。

函数用途
OSTaskCreate()建立任务
OSTaskCreateExt()扩展建立任务
OSTaskStkChk()堆栈检验
OSTaskDel()删除任务
OSTaskDelReq()请求删除任务
OSTaskChangePrio()改变任务的优先级
OSTaskSuspend()挂起任务
OSTaskResume()恢复任务
OSTaskQuery()获取有关任务的信息

状态切换图

在这里插入图片描述

OSTaskCreate() and OSTaskCreateExt()

建立任务函数,一旦任务建立就进入就绪态准备运行。
任务可以在多任务开始之前建立,也可以是动态地被一个运行着的任务建立。
如果一个任务是被另一个任务建立的,而这个任务的优先级高于建立它的那个任务,这时,这个刚刚建立的任务将立即得到CPU控制权。

OSTaskDel()

将任务转入睡眠态。
它可以由本任务执行,也可以由另一个任务调用该函数使本任务进入睡眠态

OSTaskSuspend() and OSTaskResume()

挂起任务和恢复任务:将任务转入挂起态、将任务从挂起态转入就绪态。
一些延迟函数和事件函数也可以完成任务到挂起状态的转换。

OSTaskChangePrio()

改变任务的优先级。
它本身不改变任务状态,但是可能会影响任务的状态。
例:执行任务将就绪任务的优先级改的比自己高,这样cpu的控制权就会立刻被转到那个任务手中

OSTaskStkChk()

为了避免为任务分配过多的堆栈空间,从而减少自己的应用程序的代码所需内存数量。这时就需要获取任务实际所需的堆栈空间大小。
本函数的操作:顺着堆栈的栈底开始计算空闲的堆栈空间大小,具体实现方法是统计存储值为0的连续堆栈入口的数目,直到发现存储值不为0的堆栈入口

OSTaskQuery()

该函数通过检查对应任务的任务控制块中的内容来得到任务的信息。
可以获取自身或其他应用任务的信息。

OSTaskIdle()

当所有任务都不在就绪态中,操作系统将执行空闲任务的函数OSTaskIdle()。
这个函数由系统定义,不能删除、挂起或者改变优先级。

有关中断

如果中断没有被禁止,正在运行的任务是可以被中断的。任务被中断后,进入中断服务态(ISR).响应中断时,正在执行的任务处于挂起态,中断服务子程序控制了系统的控制权。
中断服务程序完成后,不一定返回到被中断的任务。
因为uC/OS-II总是执行就绪态任务中优先级最高的任务。由于中断服务程序的执行,可能使被中断的程序不是就绪态任务中优先级最高的。
例如下面几个情况:

1、中断服务程序利用了时间的发生,而使得一个或读个更高优先级任务进入就绪态
2、中断服务程序建立或者恢复了一个新的高优先级任务
3、中断程序挂起了被中断的任务。
一般来说中断服务程序不会干涉任务的调度,所以后两种情况不会经常发生。第一种情况比较常见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

拾牙慧者

欢迎请作者喝奶茶

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

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

打赏作者

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

抵扣说明:

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

余额充值