bool OS_IsInCriticalSection ()
 
Возвращает true, если одна из задач находится в критической секции.
Везде
Нет
| false | Критическая секция не активна | 
| true | Одна из задач находится в критической секции | 
void interrupt isr (void) { if (TMR2IF) { TMR2IF = 0; OS_Timer(); } } void main (void) { /*...*/ for (;;) { OS_Sched(); if (OS_IsInCriticalSection () && TMR2IF) { TMR2IF = 0; OS_Timer(); // Т.к. в критической секции прерывания запрещены, // мы таймер обрабатываем отдельно }; /*...*/ } }