Распечатать 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() и переключения задач