在UC / OS-II中打印OSTime

时间:2018-10-24 14:49:42

标签: c rtos ucos

设备:F28335 contorolCRAD和实验者套件-Delfino F28335。

移植的ucos-II。

我使用OSTimeGet()函数获取OSTime。

但是task1每次都返回“ 0”,而task2不起作用。

出什么问题了? 该如何解决?

App_Task1's priority = 6u
App_Task2's priority = 7u


static  void  App_Task1 (void *p_arg)
{
   (void)&p_arg;
   INT32U t;

    while (DEF_TRUE) {

        t = OSTimeGet();

        printf("Task1 \n");
        printf("OSTime=%lu\n",t);
        OSTimeDly(5);
    }
}

static  void  App_Task2 (void *p_arg)
{
   (void)&p_arg;
   INT32U t;

    while (DEF_TRUE) {

        t = OSTimeGet();

        printf("Task2 \n");
        printf("OSTime=%lu\n",t);
        OSTimeDly(10);
    }
}


output
Task1 OSTime=0

1 个答案:

答案 0 :(得分:0)

您的Systick函数似乎未正确运行。由于我没有使用芯片的经验,因此无法给您完整的答案。 但是您的systick函数应该包含类似这样的内容。 这是来自LPC17xx的代码,但是应该为您带来一些类似的事情

void  OS_CPU_SysTickHandler (void)
{
    CPU_SR_ALLOC();


    CPU_CRITICAL_ENTER();
    OSIntNestingCtr++;                                      /* Tell uC/OS-II that we are starting an ISR             */
    CPU_CRITICAL_EXIT();

    OSTimeTick();                                           /* Call uC/OS-II's OSTimeTick()                          */

    OSIntExit();                                            /* Tell uC/OS-II that we are leaving the ISR             */
}

OSTimeTick()用于OSTimeDly(),OSTimeGet()和任务切换