LingYi 发表于 2014-2-14 15:33:55

UCOSII 任务创建,2种方法比较,哪种方法比较好?

本帖最后由 LingYi 于 2014-2-14 15:35 编辑

A第一种,Task_CreateTasks()函数 初始化硬件接口IO端口 和 变量初始化,创建系统任务,然后返回。最后启动操作系统。
这种做法是,把所有任务都建立完了,然后在启动的操作系统。
B第二种,直接创建了一个任务FistT,然后启动系统。其他如,硬件接口 IO端口 变量 等 在这个任务里面被调用,然后创建其他系统任务。
这种做法是,有高优先级任务,运行高优先级的任务。如果任务挂起,运行次优先级,类推。最后这个FistT任务把其他所有任务都建立完成了,直接挂起。
我个人使用的是第一种。个人觉得简单,明了。相对于第二种,节约了UCOS管理任务会使用到堆栈。
第二种,我查看了多个应该工程,基本上都是第2种,不知道作者什么用意。求解惑!求探讨!
谢谢!!!!!!

ijlc1314 发表于 2014-2-14 23:57:48

期待高手出来指点

LingYi 发表于 2014-2-15 09:03:32

ijlc1314 发表于 2014-2-14 23:57
期待高手出来指点

QQ群里面问过了,基本上也没有一个说法。不管正确的错误的,总要有经过自己思考后的一个答案吧!直接就抄袭,依葫芦画瓢。

fshunj 发表于 2014-2-15 14:38:51

这个问题我有一些体会可以说一下,假如你全部乱七八糟的初始化都弄在main任务,然后osstart的话,可想而知main函数用到的栈永远都不会再用了,这样就造成浪费,而如果main函数只是简单的创建一个start任务,然后就osstart,marin函数就只是用到1百个byte左右的栈,就浪费掉这点空间.而把start任务的栈放在用户自己的堆空间,start也只是做一些初始化的工作,做完一次这个任务就可以删除的了,再把start占用的栈释放回堆空间即可.这样子不就是省很多空间了吗?

cumtgao 发表于 2014-2-15 14:46:33

一般都是用第二种。

LingYi 发表于 2014-2-15 16:36:05

fshunj 发表于 2014-2-15 14:38
这个问题我有一些体会可以说一下,假如你全部乱七八糟的初始化都弄在main任务,然后osstart的话,可想而知main ...

哦!先谢谢了。只是第二个没有删除任务,而是直接挂起了。

LingYi 发表于 2014-2-15 16:37:52

cumtgao 发表于 2014-2-15 14:46
一般都是用第二种。

我查了一下,多数是用的第二种。只是我不明天有什么优越性。2楼讲了,但是我觉得说服力不够。

LingYi 发表于 2014-3-10 10:35:48

fshunj 发表于 2014-2-15 14:38
这个问题我有一些体会可以说一下,假如你全部乱七八糟的初始化都弄在main任务,然后osstart的话,可想而知main ...

UCOSIII 的手册中给出了,最标准的回答了!
页: [1]
查看完整版本: UCOSII 任务创建,2种方法比较,哪种方法比较好?