Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зачем при создании семафора vSemaphoreCreateBinary он взводится?
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Beginning
У меня получается что я cоздаю семафор и сразу же мне его надо сбрасывать. Какой сокраментальный смысл в взведении семафора при создании?
kan35
Понимать это можно так: семафор создается в свободном для захвата (...take) состоянии.
Основная цель семафоров это управление доступа к ресурсам. На примере SPI порта: функция передачи захватывает семафор, по выходу - освобождает. Соответственно создаваться семафор должен свободным.
aaarrr
Цитата(Beginning @ Jun 11 2012, 17:54) *
У меня получается что я cоздаю семафор и сразу же мне его надо сбрасывать.

Бывают нужны и те и другие. Сделайте свой макрос, который создает не взведенный семафор.
Volldemar
Цитата(aaarrr @ Jun 12 2012, 15:45) *
Бывают нужны и те и другие. Сделайте свой макрос, который создает не взведенный семафор.

Вот:
Код
#define vSemaphoreCreateBinaryDisabled( xSemaphore )                        \
        ( xSemaphore ) = xQueueGenericCreate( ( unsigned portBASE_TYPE ) 1,    \
        semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.