OS_Wait_TO (condition, timeout)
Переводит задачу в режим ожидания до тех пор, пока не будет выполнено заданное условие или не пройдет время, укзаанное параметром timeout. Условием condition в данном случае может быть любое выражение перечислимого типа (bool, char, int и т.д.). Как только условие выполняется, задача переходит в состояние готовности и, как только задача становится самой приоритетной из всех готовых, она получает управление. Исключение - состязяние приоритетов.
Только из задачи
condition |
Любое выражение перечислимого типа. |
timeout |
Время ожидания. Задается в системных тиках - периодах вызова сервиса OS_Timer |
таймаут |
Если вышли из ожидания по таймауту, то сервис OS_IsTimeout возвратит true |
void Task (void) { char b; for (;;) { /*...*/ OS_Wait_TO (RCIF, 100); // Ждем 100 мс, когда придет байт по USART if (!OS_IsTimeout()) { b = RCREG; } /*...*/ } }
OS_WaitConditionTimeout
OS_Cond_Wait_TO