ba_wang_mao 发表于 2010-12-22 17:06:18

uC/OS-ii中所有任务如何合理的分配延时节拍时间,使得任务能够正常运转?

uC/OS-ii中:周期性执行任务的代码如下:

    voidMyTask (void *pdata)          //周期性执行的任务函数
          {
               进行准备工作的代码;
               for (;;)      //无限循环,也可用 while (1)
               {
                  任务实体代码;
                  OSTimeDly( )
               }
         }

   有四个周期性执行的任务,任务A(优先级=0)、任务B(优先级=1)、任务C(优先级=2)、任务D(优先级=3)

   如果每个任务的延时节拍时间OSTimeDly( )设置的不合理,可能会导致永远也执行不到“任务D”

   有没有设置“延时节拍时间OSTimeDly( )”的一般方法呢?

yondyanyu 发表于 2010-12-22 17:41:38

提问的不错,等大虾!

afei8856 发表于 2010-12-22 21:34:14

那就看你的优先级设置了

ba_wang_mao 发表于 2010-12-23 08:38:17

我请教的是有没有一种“经验”或者大概的算法?

John_Lee 发表于 2010-12-23 09:05:08

http://www.docin.com/p-1331635.html

ba_wang_mao 发表于 2010-12-23 09:08:08

回复【4楼】John_Lee
http://www.docin.com/p-1331635.html
-----------------------------------------------------------------------

能否帮忙下载,给个链接呢?我没有积分,下不下来呀!

chinaye1 发表于 2010-12-23 09:47:36

一般OSTimeDly(1) 如果相关可以OSQPend 不用OSTimeDly

ba_wang_mao 发表于 2010-12-23 10:16:04

回复【6楼】chinaye1
一般ostimedly(1) 如果相关可以osqpend 不用ostimedly
-----------------------------------------------------------------------

6楼,我说的是周期性执行任务,而不是事件任务(事件任务有:等待信号、等待消息、等待邮箱)。

   而周期性任务的结构如下:

voidMyTask (void *pdata)          //周期性执行的任务函数   
          {   
               进行准备工作的代码;   
               for (;;)      //无限循环,也可用 while (1)   
               {   
                  任务实体代码;   
                  OSTimeDly( )
               }   
         }
   通过执行“OSTimeDly( ) ”进行任务切换;或者进入中断服务程序进行任务切换。

ba_wang_mao 发表于 2010-12-27 08:38:43

我顶!

ba_wang_mao 发表于 2010-12-28 09:23:27

UCOSII 中如何分配任务之间的延时节拍时间,确保任务之间合理的调度。
   防止出现如下现象: 三个任务:任务A(优先级=0)、任务B(优先级=1)、任务C(优先级=2)
      (1). 任务A执行完毕,执行任务B,
   (2).任务B执行完毕,执行任务A
      (3). 任务A执行完毕,再次执行任务B,

    最终导致任务C始终无法得到CPU的控制权。
--------------------------------------------------------------------------------------

只要确保在A进行延时的时间内,B能够执行所要执行的任务代码,并进入延时,这就能够保证C任务可以分配到时间。
一般情况下,在保证应用可靠的情况下,任务都尽可能少的占用处理器,能延时就尽量迟时,能延时多久,就延时多久,这样可以保证系统低优先级任务的运行顺畅。

pijianguo 发表于 2011-1-8 14:50:57

学习

dogbush 发表于 2011-1-8 16:38:58

这个也是我最近研究的东西,

cecwxf 发表于 2011-9-21 10:56:45

9楼说的不错

roguebear1 发表于 2011-10-23 02:19:21

mark

zzgezi 发表于 2011-11-11 08:16:24

学习了。谢谢

l09046162 发表于 2011-11-11 08:33:05

学习了!!!!谢谢!!!

xinyuhjj 发表于 2011-11-11 10:06:47

以前碰到过这个问题,也不知道怎么解决。现在好好学习下

zgkfw520 发表于 2011-11-25 22:05:08

还是不太了解啊!
页: [1]
查看完整版本: uC/OS-ii中所有任务如何合理的分配延时节拍时间,使得任务能够正常运转?