Распечатать OSTime в UC/OS-II

Прибор: 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 ответ

Кажется, что ваша функция 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() и переключения задач

Другие вопросы по тегам