搜索
bottom↓
回复: 17

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

[复制链接]

出0入0汤圆

发表于 2010-12-22 17:06:18 | 显示全部楼层 |阅读模式
uC/OS-ii中:周期性执行任务的代码如下:

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

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

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

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

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-12-22 17:41:38 | 显示全部楼层
提问的不错,等大虾!

出0入0汤圆

发表于 2010-12-22 21:34:14 | 显示全部楼层
那就看你的优先级设置了

出0入0汤圆

 楼主| 发表于 2010-12-23 08:38:17 | 显示全部楼层
我请教的是有没有一种“经验”或者大概的算法?

出0入0汤圆

发表于 2010-12-23 09:05:08 | 显示全部楼层
http://www.docin.com/p-1331635.html

出0入0汤圆

 楼主| 发表于 2010-12-23 09:08:08 | 显示全部楼层
回复【4楼】John_Lee
http://www.docin.com/p-1331635.html
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2010-12-23 09:47:36 | 显示全部楼层
一般OSTimeDly(1) 如果相关可以OSQPend 不用OSTimeDly

出0入0汤圆

 楼主| 发表于 2010-12-23 10:16:04 | 显示全部楼层
回复【6楼】chinaye1
一般ostimedly(1) 如果相关可以osqpend 不用ostimedly
-----------------------------------------------------------------------

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

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

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

出0入0汤圆

 楼主| 发表于 2010-12-27 08:38:43 | 显示全部楼层
我顶!

出0入0汤圆

 楼主| 发表于 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任务可以分配到时间。
一般情况下,在保证应用可靠的情况下,任务都尽可能少的占用处理器,能延时就尽量迟时,能延时多久,就延时多久,这样可以保证系统低优先级任务的运行顺畅。

出0入0汤圆

发表于 2011-1-8 14:50:57 | 显示全部楼层
学习

出0入0汤圆

发表于 2011-1-8 16:38:58 | 显示全部楼层
这个也是我最近研究的东西,

出0入0汤圆

发表于 2011-9-21 10:56:45 | 显示全部楼层
9楼说的不错

出0入0汤圆

发表于 2011-10-23 02:19:21 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-11-11 08:16:24 | 显示全部楼层
学习了。谢谢

出0入0汤圆

发表于 2011-11-11 08:33:05 | 显示全部楼层
学习了!!!!谢谢!!!

出0入0汤圆

发表于 2011-11-11 10:06:47 | 显示全部楼层
以前碰到过这个问题,也不知道怎么解决。现在好好学习下

出0入0汤圆

发表于 2011-11-25 22:05:08 | 显示全部楼层
还是不太了解啊!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-29 18:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表