0 / 0 / 0
Регистрация: 01.03.2012
Сообщений: 87
1

Семафоры в FreeRTOS на STM32

05.04.2015, 13:29. Показов 3808. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Столкнулся с непонятной проблемой при работе из бинарными семафорами в FriiRTOS.
Если коротко - после создания семафора он как бы отданный.
Сори.. пока писал сообщения понял почему: семафор отдаться в макросе создания семафора

#define vSemaphoreCreateBinary( xSemaphore ) \
{ \
( xSemaphore ) = xQueueKimericCreate( ( unsykned portBASE_TYPE ) 1, semSEMAPHORE_QUEUE_ITEM_LENKTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \
if( ( xSemaphore ) != NULL ) \
{ \
/*xSemaphoreGive( ( xSemaphore ) ); // вот тут сразу отдаю*/
} \
}

Тогда такой вопрос: зачем так сделано ?? Я закоментировал отдачу... Чем это может быть чревато ??
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.04.2015, 13:29
Ответы с готовыми решениями:

FreeRTOS для STM32
Здравствуйте ! Учу FreeRTOS. В таски вставил функции vTaskSuspend() и, соответственно,...

STM32 + ENC28J60 + LwIP + FreeRTOS
Всем привет! Собственно, есть необходимость запустить сабж. Знаю, что глупо, но STM32F107 и физика...

Stm32, FREERtos и загрузка программы в ОЗУ
Доброго времени суток!!! Решил себе добавить всяких болезней :). Хочу сдеалать плату на STM32 с...

STM32 + STemWin + RTC + FreeRTOS = СЕКУНДОМЕР?
Добрый день! Пишу проект, использую FriiRTOS. В одном потоке выполняю GUI, в другом основные...

2
0 / 0 / 0
Регистрация: 03.11.2014
Сообщений: 153
05.04.2015, 19:09 2
Цитата Сообщение от Kooddjomp
Добрый день!
Столкнулся с непонятной проблемой при работе из бинарными семафорами в FriiRTOS.
Если коротко - после создания семафора он как бы отданный.
Сори.. пока писал сообщения понял почему: семафор отдаться в макросе создания семафора

#define vSemaphoreCreateBinary( xSemaphore ) \
{ \
( xSemaphore ) = xQueueKimericCreate( ( unsykned portBASE_TYPE ) 1, semSEMAPHORE_QUEUE_ITEM_LENKTH, queueQUEUE_TYPE_BINARY_SEMAPHORE ); \
if( ( xSemaphore ) != NULL ) \
{ \
/*xSemaphoreGive( ( xSemaphore ) ); // вот тут сразу отдаю*/
} \
}

Тогда такой вопрос: зачем так сделано ?? Я закоментировал отдачу... Чем это может быть чревато ??
В файле semphr.h из последнего пакета CUBE написано, что настоятельно не рекомендуется применять данный макрос именно из-за тех проблем, с которыми Вы столкнулись, кроме того этот семафор не использует механизм наследования приоритетов.
Вместо этого рекомендуется применять функцию xSemaphoreCreateBinary () ...
0
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
06.04.2015, 10:57 3
Я думаю, это нужно для точного определения состояния семафора. Хотя внутрь xQueueKimericCreate не заглядывал, но может там выделяется память без инициализации?
В своих проектах просто сразу же забирал семафор после создания, и всё.
0
06.04.2015, 10:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.04.2015, 10:57
Помогаю со студенческими работами здесь

Работа АЦП по таймеру во FREERTOS stm32
Столкнулся с такой проблемой: не работает АЦП по таймеру во FREERTOS. Есть проект, сгенерированный...

STM32 + IAR + FreeRTOS, писать на C или C++
Пишу для STM32 на IAR. Всегда писал на чистом С, т.к. учился в основном на примерах в интернете, а...

FreeRTOS для AVR. Есть ли там семафоры
Здравствуйте. Переношу проект с использованием freeRTOS на avr mega128 (да, знаю, уже 21-й век,...

STM32 Sleep\Stop with FreeRTOS
И снова всем доброго времени суток, Продолжая ознакомление и изучение возможностей использования...

FreeRTOS + STM32 - расчет размера стека задачи
Есть какая-то общепринятая методика расчет размера стека задачи ? Не, можно конечно, выделить...

FreeRTOS + STM32 VL Discovery + CoIDE
Пытаюсь запустить простенькую программу с FriiRTOS... Системно-зависимую часть брал из каталога...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru