2

私はいくつかのRTOS MicroCプロジェクトに取り組んできましたが、いくつかの機能を実装すると、タスクの外では問題なく動作しますが、タスクに入れるたびに何もしません. これに対する答えが得られない可能性があることはわかっていますが、探し始めるヒントは大きな助けになるでしょう。事前に感謝します。

a_sem = OSSemCreate(1);

static void AppTask1(void *p_arg)
{
    (void) p_arg;
    INT8U perr;
    while (1)
    {
        OSSemPend(a_sem, 0, &perr);
        planeAngles();// Functon that works outside the task
        OSSemPost(a_sem);
        OSTimeDly(OS_TICKS_PER_SEC/20);
    }
}

static void AppTask2(void *p_arg)
{
    (void) p_arg;
    INT8U perr;
    while (1)
    {
        OSSemPend(a_sem, 0, &perr);
        servoTurns(); // Functon that works outside the task
        OSSemPost(a_sem);
        OSTimeDly(OS_TICKS_PER_SEC/20);
    }
}
4

2 に答える 2

2

どちらのタスクもセマフォで待機しますが、そのセマフォが最初にどこに与えられるかは明確ではありません。どちらのタスクもOSSemPend呼び出しから戻らない可能性があります。

于 2014-08-09T19:44:25.667 に答える