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 (); /*...*/ } }