找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6191|回复: 0
打印 上一主题 下一主题
收起左侧

uC/OS-II学习笔记—任务控制块初始化

[复制链接]
跳转到指定楼层
#
本帖最后由 xueren 于 2013-7-16 02:13 编辑

任务控制块的初始化是在创建任务的时候必须要执行的操作,对任务控制块和一些相关的数据结构进行了处理。
内核在进行任务调度的时候,必须知道哪个任务在运行、哪个任务是就绪的最高优先级的任务。任务控制块初始化函数OS_TCBInit声明如下:



这个函数是uC/OS-II的内部函数,当任务被创建的时候用来初始化任务控制块。
参数解析如下:
* pri: 被创建的任务的优先级
* ptos: 任务堆栈栈顶的地址
* pbos: 任务堆栈栈底的地址,如果是使用OSTaskCreate()创建的任务,那么是没有扩展功能的,不能进行堆栈检查,就不合适用pbos这个参数,这个参数可以传递为NULL。
* id: 任务的ID,16位,取值范围是0~65535。
* stk_size: 堆栈的大小。
* pext: 任务控制块的扩展块的地址。
* opt: 其他的选项。
返回值如下:
* OS_ERR_NONE: 成功调用。
* OS_EER_TASK_NO_MORE_TCB: 如果没有空闲的任务控制块。
注意:该函数属于操作系统内部函数,不应该在外部调用。
在操作系统要创建一个任务时,如果空闲任务控制块链表中有任务控制块,说明可以创建任务,这时将取下一个任务块,并给任务控制块的各个域进行赋值,随后调用两个钩子函数,这两个钩子函数允许用户自己填写代码,默认为空。随后对任务优先级指针表和就绪组及就绪表进行相关操作,如下图所示:



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表