OS_Csem_Signal_Now (csem)
OS_Csem_Signal_I (csem)
Увеличивает значение семафора на 1. Если увеличивать уже некуда (семафор имеет максимально допустимое значение), то он не будет увеличен, а системный флаг bEventError установится.
Для использования счетных семафоров в файле OSAcfg.h должна быть определена константа OS_ENABLE_CSEM. Разрядность счетных семафоров задается константой OS_CSEM_SIZE
Только не из прерывания
csem |
счетный семафор - переменная типа OST_CSEM |
bEventError |
Если семафор на момент вызова имел максимальное значение, то функция OS_IsEventError вернет значение true |
OST_CSME my_csem; void Task (void) { for (;;) { /*...*/ OS_Csem_Signal_Now(my_csem); if (OS_IsEventError()) { // Семафор переполнен } /*...*/ } }
-