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
欢迎扫码一起分享经验
|