zalayeta 发表于 2008-9-12 10:54

UCOS2 如何实现这种情况??

task1的优先级为3,task2的优先级为4。task1被挂起,task2处于运行状态。假设现在task2运行到一半,来了一个中断,使得task1从挂起状态变为运行状态。现在我运行完task1之后不想回到task2中运行剩下的代码了,下次再进task2后也是直接从头开始运行,请问该如何设计?谢谢!

andrew.xu 发表于 2008-9-12 13:42

删掉再重建

个人觉得应该用别的方法实现你的功能

walnutcy 发表于 2008-9-15 16:53

仔细看了下,发现我看错了,

LZ要求task2的后半段不再运行,<br /><br />同意2楼的做法,<br />

armecos 发表于 2008-9-15 18:31

只能按照2楼说的做了,

删掉再重建。<br /><br />可能是你的任务划分有问题,其实如果你用ecos之类的现代OS,可以使用select等先进功能,同时阻塞在多个事件上,就不必另开个线程监视了,可惜,ucos不提供这种多事件阻塞。<br /><br /><b>更多内容,详见:</b><br /><b>《培训系列“丛书”》</b><br /><b>www.armecos.com</b><br />-----------------------------------<br /><b>More&nbsp;details,&nbsp;see:</b><br /><b>《&quot;Series&nbsp;Books&quot;&nbsp;of&nbsp;Training》</b><br /><b>www.armecos.com</b>

zalayeta 发表于 2008-9-16 11:07

有什么别的方法可以实现呢

实际上就是&nbsp;一旦task2运行的时间过长了,我就希望立即中止它,不让它再继续运行了,然后下次再执行的时候重头开始执行。有没有什么其他办法呢?谢谢!

soso 发表于 2008-9-16 12:44

我觉得你的思路有问题

&nbsp;&nbsp;&nbsp;多任务的系统设计,建议对每一个任务的数据结构封闭,各自为政,只是通过对外的接口函数来影响,这样添加、删除一个任务并不影响其他的工作。你的思维还是停留在前后台方式。

Ice_River 发表于 2008-9-17 15:20

确实是思路的问题!

用固有的思路上OS,只会带来更多的麻烦!

colorwu 发表于 2008-9-17 22:30

可以用周期性任务完成,内加信号量使能

zalayeta 发表于 2008-9-18 10:13

确实如此

确实像eeproom,Ice_River所说,我确实还不太懂得如何用好RTOS,最初用RTOS也只是觉得有些中断占用的时间太长了,所以硬把ucos往上套。有没有ucos好的应用案例让我学习一下,谢谢!

soso 发表于 2008-9-18 13:43

给你推荐一本ucosii作者的另一本书:

&nbsp;&nbsp;《嵌入式系统构件》。看懂以后,设计程序,在脱离RTOS条件下调试好这个模块后直接嵌入系统设计,最后再脱离底层、中间层做做高层的应用设计。

alex74 发表于 2008-9-18 14:51

...

你这种情况明显是单任务。

l0p0c 发表于 2008-9-18 15:27

嗯,不错!重在思路清晰!

页: [1]
查看完整版本: UCOS2 如何实现这种情况??