UCOS2 如何实现这种情况??

[复制链接]
 楼主| zalayeta 发表于 2008-9-12 10:54 | 显示全部楼层 |阅读模式
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的后半段不再运行,

同意2楼的做法,
armecos 发表于 2008-9-15 18:31 | 显示全部楼层

只能按照2楼说的做了,

删掉再重建。

可能是你的任务划分有问题,其实如果你用ecos之类的现代OS,可以使用select等先进功能,同时阻塞在多个事件上,就不必另开个线程监视了,可惜,ucos不提供这种多事件阻塞。

更多内容,详见:
《培训系列“丛书”》
www.armecos.com
-----------------------------------
More details, see:
《"Series Books" of Training》
www.armecos.com
 楼主| zalayeta 发表于 2008-9-16 11:07 | 显示全部楼层

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

实际上就是 一旦task2运行的时间过长了,我就希望立即中止它,不让它再继续运行了,然后下次再执行的时候重头开始执行。有没有什么其他办法呢?谢谢!
soso 发表于 2008-9-16 12:44 | 显示全部楼层

我觉得你的思路有问题

   多任务的系统设计,建议对每一个任务的数据结构封闭,各自为政,只是通过对外的接口函数来影响,这样添加、删除一个任务并不影响其他的工作。你的思维还是停留在前后台方式。
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作者的另一本书:

  《嵌入式系统构件》。看懂以后,设计程序,在脱离RTOS条件下调试好这个模块后直接嵌入系统设计,最后再脱离底层、中间层做做高层的应用设计。
alex74 发表于 2008-9-18 14:51 | 显示全部楼层

...

你这种情况明显是单任务。
l0p0c 发表于 2008-9-18 15:27 | 显示全部楼层

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

27

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部