嵌入式开发交流网论坛

标题: 带扩展功能的任务创建 [打印本页]

作者: 冰晶爆_轰    时间: 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