设备: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
答案 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()和任务切换