uc/os延时函数调度问题

[复制链接]
 楼主| jinjing999 发表于 2009-9-9 15:58 | 显示全部楼层 |阅读模式
task()
{
while(1)
{

        OSSemPend(ComSem,0,&err);
               OSTimeDlyHMSM(0,0,10,0);

}
}
我的问题是:
这个任务是延时10秒,假如我这个任务正在延时,而延时时间根本没有到,如果别的任务
发送OSSemPost(ComSem)信号,能不能及时调度到这个任务?还是要等到10秒之后才调度这个任务?
 楼主| jinjing999 发表于 2009-9-9 16:07 | 显示全部楼层
我测试过了
如果信号发过来,这个任务调度,必须等到10秒后,才能调度这个任务

感觉这点做的有点太傻了
e掾木 发表于 2009-9-10 08:21 | 显示全部楼层
半部《论语》治天下可以,由于政治本身就是忽悠,半桶UCOS-II是不可以治工程的。首先你的思路有问题,其次实在要这样用请参看OSTimeDlyResume().
 楼主| jinjing999 发表于 2009-9-10 09:20 | 显示全部楼层
谢谢,高手指点,我现在想换一种方法实现了。

半部《论语》治天下可以,由于政治本身就是忽悠,半桶UCOS-II是不可以治工程的,这话有点大。

我承认,UC/OS只看了一遍,对里面的代码确实没有怎么研究,不过第二章,我不知看了多少遍。我想我是应用的,不是搞研究的,做的都是中型项目,需求就是几个任务调度,中断调度,用的最多就是,信号,邮箱,消息还有延时。
如果我要把UC/OS的每个模块都要搞透,在我的项目中用用,请问我做项目得多长时间?我还有饭碗吗?
我是自学的,学他的目的是应用,等到搞透了再去应用,估计永远都搞不透了。

我的思想,在项目中学习,发现问题,解决问题,这才是做项目。如果光去学习,而不敢去应用,我想学也是白学。
e掾木 发表于 2009-9-10 10:36 | 显示全部楼层
一点也没有洗刷你的意思,开个玩笑别介意。
    刚开始不习惯RTOS的驾驭很正常,建议你看看作者的另一本是《嵌入式构件》。初学不需要闹懂内核那么复杂的东西,要全面了解调度机理、函数作用就可以了。其实很多概念都是对称的,既然有延时函数,就有一个随时打断延时恢复的函数,任务睡眠就必然有唤醒,任务有建立就有删除...
sufeng983 发表于 2009-9-10 10:59 | 显示全部楼层
??=10S/时间节拍的时间;
OSSemPend(ComSem,??,&err);
 楼主| jinjing999 发表于 2009-9-10 13:57 | 显示全部楼层
呵呵
没有什么,我只是说一下,我的思想而已,不能让新手看到这些操作系统,就认为很高级的东西,不敢动手。实际在学校学习过操作系统的人,能理解透操作系统真正含义,都是可以搞的,不是很难的东西
谢谢,我就是按照楼上的方法解决
machunshui 发表于 2009-9-10 22:38 | 显示全部楼层
既然要求及时响应别的任务的消息,

直接OSSemPend不就行了?

还搞个OSTimeDlyHMSM(0,0,10,0);干什么?
原野之狼 发表于 2009-9-11 12:08 | 显示全部楼层
不是UCOS太傻 而是楼主用的不对 在PEND的时候加入一个十秒的TIMEOUT就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

363

帖子

1

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