这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » ucosii 关于ucosii的问题

共2条 1/1 1 跳转至

ucosii 关于ucosii的问题

院士
2006-09-17 18:14:16     打赏
ucosii 关于ucosii的问题



关键词: ucosii     关于     问题    

院士
2006-12-22 22:43:00     打赏
2楼


ucosii中有三个类似的任务,task1 ,task3,task3 分别控制lpc2132 p0.5 p0.6 p0.7
三个I/O管教输出高低电平,任务优先级分别是 7,6,5。如果用如下的程序,只有task3运行,没有任务切换
void  Task3(void *pdata)
{
    uint32  i;
    pdata = pdata;     
    while(1)    
   {
   
      IO0SET =(1<<6);         // BEEPCON = 1
      for(i=50000; i>0; i--);
      IO0CLR = (1<<6);             // BEEPCON = 0
      for(i=50000; i>0; i--);
   }
   
}
如果把for(i=50000; i>0; i--); 改成OSTimeDly(OS_TICKS_PER_SEC / 8);
三个任务就能正常运行和切换。请问这是为什么?
用的是周公的2100工程模版,移植应该不会出错阿



1: 软件延时一样是要占用CPU的啊!for(i=50000; i>0; i--);


由软件实现,任务就一直在运行,其他任务是不可能转入运行态了。

OSTimeDly(OS_TICKS_PER_SEC / 8);

这样的实现原理应该是利用类别内部的定时器之类硬件完成的。 2: 没有延时当然不正常了OSTimeDlyHMSM(H,M,S,M);

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]