嵌入式开发交流网论坛
标题:
带扩展功能的任务创建
[打印本页]
作者:
冰晶爆_轰
时间:
2019-3-1 02:55
标题:
带扩展功能的任务创建
[attach]27604[/attach]
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
欢迎扫码一起分享经验
[attach]27605[/attach]
欢迎光临 嵌入式开发交流网论坛 (http://www.dianzixuexi.com/bbs/)
Powered by Discuz! X3.2