Ejemplo n.º 1
0
/* Led线程2的主函数 */
static void ThreadLed2Entry(TArgument arg)
{
    TState state;
    TError error;

    while (eTrue)
    {
        /* Led线程2点亮Led2 */
        EvbLedControl(LED2, LED_ON);

        /* Led线程2延时1秒后关闭Led2 */
        state =TclDelayThread((TThread*)0, TCLM_MLS2TICKS(1000), &error);
        TCLM_ASSERT((state == eSuccess), "");
        TCLM_ASSERT((error == TCLE_THREAD_NONE), "");

        EvbLedControl(LED2, LED_OFF);

        /* Led线程2以非阻塞方式释放信号量1 */
        state =TclReleaseSemaphore(&LedSemaphore1, TCLO_IPC_DUMMY,
                                   0, &error);
        TCLM_ASSERT((state == eSuccess), "");
        TCLM_ASSERT((error == TCLE_IPC_NONE), "");

        /* Led线程2以阻塞方式获取信号量2 */
        state = TclObtainSemaphore(&LedSemaphore2, TCLO_IPC_WAIT,
                                   0, &error);
        TCLM_ASSERT((state == eSuccess), "");
        TCLM_ASSERT((error == TCLE_IPC_NONE), "");
    }
}
Ejemplo n.º 2
0
/* Led线程的主函数 */
static void ThreadLedEntry(TArgument data)
{
    TState state;
    TError error;
    TLedMail* pMail;

    while (eTrue)
    {
        /* Led线程以阻塞方式接收邮件 */
        state = TclReceiveMail(&LedMailbox, (TMail*)(&pMail),
                               TCLO_IPC_WAIT, 0, &error);
        if (state == eSuccess)
        {
            /* Led线程控制Led的点亮和熄灭 */
            EvbLedControl(pMail->Index, pMail->Value);

            /* Led线程延时1秒 */
            state = TclDelayThread((TThread*)0, TCLM_MLS2TICKS(1000), &error);
            TCLM_ASSERT((state == eSuccess), "");
            TCLM_ASSERT((error == TCLE_THREAD_NONE), "");

            /* Led线程释放信号量 */
            state = TclReleaseSemaphore(&LedSemaphore, TCLO_IPC_WAIT, 0, &error);
            TCLM_ASSERT((state == eSuccess), "");
            TCLM_ASSERT((error == TCLE_IPC_NONE), "");
        }
    }
}
Ejemplo n.º 3
0
/* 字符打印函数,通过BSP将字符串输出到评估板的串口 */
static void PrintfString(char* str)
{
    TState state;
    TError error;

    /* 当前线程以阻塞方式获取信号量,成功后通过BSP打印字符串 */
#if (THREAD_SYNC_ENABLE)
    state = TclObtainSemaphore(&UartSemaphore, TCLO_IPC_WAIT, 0, &error);
    if (state == eSuccess)
    {
        TclTrace(str);
    }
    /* 字符串完全打印后,当前线程以非阻塞方式释放信号量 */
    TclReleaseSemaphore(&UartSemaphore, 0, 0, &error);
#else
    error = error;
    state = state;
    TclTrace(str);
#endif
}