开启辅助访问 切换到窄版

打印 上一主题 下一主题

带扩展功能的任务创建

[复制链接]
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式




0x01

摘要
ucos的任务创建有两种方式,一种是常规的任务创建,一种是带有扩展功能的任务创建。两者的区别就是带有扩展功能的任务创建可以包含更多的信息,具体差别见下文中介绍。


0x02

引言

任务创建是ucos实现多任务的一个重要功能,在创建任务时大家多使用常规的方法,ucos提供了另外一种带有扩展功能的任务创建函数,了解两者的差别,有利于在使用中选择需要的创建方式。


0x03

原理

首先看看常规的任务创建函数:INT8U OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio)
在看看带扩展功能的任务创建函数:INT8U OSTaskCreateExt (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, void *pext, INT16U opt),比常规任务创建函数多出了INT16U id, OS_STK *pbos, INT32U stk_size, void *pext, INT16U opt这些参数,这些参数分别是任务的ID,任务的扩展堆栈及其大小,任务的扩展TCB指针,扩展选项(比如堆栈检查、堆栈清除等)。从函数上看比常规创建方式多了很多的扩展选项。在代码上二者基本一样,唯一的区别在OS_TCBInit(prio, psp, pbos, id, stk_size, pext, opt)TCB的初始化的位置,前面我们讲过了,常规任务创建包含很对空参数,在扩展功能里这些都是创建函数传递进来的参数。


0x04

结论

总体来说这两种任务创建的方式差别在扩展功能的任务创建,允许用户增加一些扩展空间,比如扩展一些堆栈,扩展一些TCB功能,具体这些功能怎么用,在后面的代码分析中我们继续讲解。
Change

你的努力
我的付出

如有任何疑问请后台回复

或添加作者Waiting_B_H





欢迎扫码一起分享经验


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

回复

使用道具 举报

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

本版积分规则

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