OSA : OS_LeaveCriticalSection

OS_LeaveCriticalSection ()

Разрешен вызов только в контексте задачи

Выход из критической секции. При этом восстанавливаются прерывания (из внутренней системной переменной) и разблокируются все задачи.

Разрешен вызов:

Только из задачи

Параметры функции:

Нет

Возвращаемое значение:

Нет

Пример вызова:

const char * TestString = "We are in Critical Section now.\n";
 
void Task (void)
{
    static const char * str;
    for (;;) {
        /*...*/
        OS_EnterCriticalSection ();
        // Теперь мы можем отправлять данные через USART, не опасаясь,
        // что какая-нибудь задача попытается захватить этот ресурс
        str = TestString;
        while (*str)
        {
            OS_Cond_Wait(TRMT);         // Ждем освобождения передатчика USART
            TXREG = *str++;
        }
        OS_LeaveCriticalSection ();
        /*...*/
    }
}

См. также