无法在uc / os-II中响应函数OSTimeTick

时间:2013-08-02 09:22:08

标签: embedded arm

我在ARM7上运行了一些代码,首先我使用OSTaskCreateExt在main中创建启动任务,然后它将在启动任务中创建一些子任务,即AppTaskCreate的使用。但是在进入OSStatInit之后,它永远不会被回调并再次运行下一行。从调试中我发现,当进入OSStatInit一次时,启动任务从os调度的就绪任务表中删除,并且没有时间滴答响应负责改变就绪任务表的状态。所以它永远不会再次调试启动任务。在发现我在uc / os-ii内核中深入调试时间管理器之后。当在OSTmr_Task中运行代码时,它会保持中断并停在“OSSemPend(OSTmrSemSignal,0,& err)”行;“通过等待一些信号。所以我认为缺少一些信号来调用它。到最后,我想问一下造成我问题的原因是什么?

下面列出了一些代码:

int  main (void)
{
    BSP_IntDisAll();

    OSInit();  /* Initialize "uC/OS-II, The Real-Time Kernel" */

    err = OSTaskCreateExt(AppTaskStart,
                (void *)0,
                (OS_STK *)&AppTaskStartStk[APP_TASK_START_STK_SIZE - 1],
                APP_TASK_START_PRIO,
                APP_TASK_START_PRIO,
                (OS_STK *)&AppTaskStartStk[0],
                APP_TASK_START_STK_SIZE,
                (void *)0,
                OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
    if(err != OS_NO_ERR) {
        return 0;
    }


     #if (OS_TASK_NAME_SIZE > 13)
         OSTaskNameSet(APP_TASK_START_PRIO, "Start Task", &err);
     #endif


     OSStart();
     return 0;
}

static  void  AppTaskStart (void *p_arg)
{
    (void)p_arg;
    p_arg = p_arg; //avoid warning
    BSP_Init();                /* Initialize BSP functions*/

    OSStatInit();           /* Determine CPU capacity*/

    AppTaskCreate();        /* Create application tasks */

    OSTimeDlyHMSM(0,0,0,10);

    OSTaskDel(OS_PRIO_SELF);
 }

1 个答案:

答案 0 :(得分:0)

感谢@D Krueger和@Clifford。这个问题有一个答案,因为我忘了在bsp上初始化计时器tick管理器。就是这样。