打印

uc/os延时函数调度问题

[复制链接]
3303|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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的每个模块都要搞透,在我的项目中用用,请问我做项目得多长时间?我还有饭碗吗?
我是自学的,学他的目的是应用,等到搞透了再去应用,估计永远都搞不透了。

我的思想,在项目中学习,发现问题,解决问题,这才是做项目。如果光去学习,而不敢去应用,我想学也是白学。

使用特权

评论回复
5
e掾木| | 2009-9-10 10:36 | 只看该作者
一点也没有洗刷你的意思,开个玩笑别介意。
    刚开始不习惯RTOS的驾驭很正常,建议你看看作者的另一本是《嵌入式构件》。初学不需要闹懂内核那么复杂的东西,要全面了解调度机理、函数作用就可以了。其实很多概念都是对称的,既然有延时函数,就有一个随时打断延时恢复的函数,任务睡眠就必然有唤醒,任务有建立就有删除...

使用特权

评论回复
6
sufeng983| | 2009-9-10 10:59 | 只看该作者
??=10S/时间节拍的时间;
OSSemPend(ComSem,??,&err);

使用特权

评论回复
7
jinjing999|  楼主 | 2009-9-10 13:57 | 只看该作者
呵呵
没有什么,我只是说一下,我的思想而已,不能让新手看到这些操作系统,就认为很高级的东西,不敢动手。实际在学校学习过操作系统的人,能理解透操作系统真正含义,都是可以搞的,不是很难的东西
谢谢,我就是按照楼上的方法解决

使用特权

评论回复
8
machunshui| | 2009-9-10 22:38 | 只看该作者
既然要求及时响应别的任务的消息,

直接OSSemPend不就行了?

还搞个OSTimeDlyHMSM(0,0,10,0);干什么?

使用特权

评论回复
9
原野之狼| | 2009-9-11 12:08 | 只看该作者
不是UCOS太傻 而是楼主用的不对 在PEND的时候加入一个十秒的TIMEOUT就行了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

73

主题

363

帖子

1

粉丝