阿正 发表于 2012-10-24 15:15:30

ucOSii的延时时间和实际的不一样,慢了许多

ucOSii的延时时间和实际的不一样,慢了许多    
  #define OS_TICKS_PER_SEC     1000即每秒中断1000次, 时间间隔1ms  。可是我测的 OSTimeDly(2)的延时近300ms 本应该是2ms才对的 。大家有遇到类似情况吗 请大侠帮我分析下原因 
 

ray-395274 发表于 2012-10-24 18:09:37

回复:ucOSii的延时时间和实际的不一样,慢了许多

OSTimeDly函数的参数并不是毫秒数哦,是ticks!!! 下面是它的定义:
 
 
void  OSTimeDly (INT16U ticks)
{
    INT8U      y;
#if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register           */
    OS_CPU_SR  cpu_sr = 0;
#endif
 
    if (OSIntNesting > 0) {                      /* See if trying to call from an ISR                  */
        return;
    }
    if (ticks > 0) {                             /* 0 means no delay!                                  */
        OS_ENTER_CRITICAL();
        y            =  OSTCBCur->OSTCBY;        /* Delay current task                                 */
        OSRdyTbl &= ~OSTCBCur->OSTCBBitX;
        if (OSRdyTbl == 0) {
            OSRdyGrp &= ~OSTCBCur->OSTCBBitY;
        }
        OSTCBCur->OSTCBDly = ticks;              /* Load ticks in TCB                                  */
        OS_EXIT_CRITICAL();
        OS_Sched();                              /* Find next task to run!                             */
    }
}

zykzyk-93033 发表于 2012-10-24 21:00:20

RE:ucOSii的延时时间和实际的不一样,慢了许多

是啊 这个不是延时的例子。:D

发表于 2012-10-25 09:50:00

RE:ucOSii的延时时间和实际的不一样,慢了许多

用OSTimeDlyHMSM这个。
页: [1]
查看完整版本: ucOSii的延时时间和实际的不一样,慢了许多