реклама на сайте
подробности

 
 
> Флаги в FreeRTOS
juvf
сообщение Nov 28 2011, 05:11
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



А как флаги делать в FreeRTOS? Например один поток после определённых действий выставил флаг, второй читает. Если флаг выставлен в "1", то второй поток выполняет действие, потом опять проверяет флаг, если в 1, то ещё раз действие и т.д.

В FreeRTOS не нашел флагов. можно с помощью костыля флаг в фрииртос организовать..... завести глобальную переменную типа bool и оградить к ней доступ через мютекс. А можно как-то по проще и элегантней это сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Nov 28 2011, 08:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Используйте семафоры и очереди, если нужно ожидать события.
Go to the top of the page
 
+Quote Post
juvf
сообщение Nov 28 2011, 09:37
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(aaarrr @ Nov 28 2011, 14:26) *
Используйте семафоры и очереди, если нужно ожидать события.

там где при получении флага нужно его сбросить, так и делаю. но, чем отличается флаг от семафора? тем что один поток один раз выставляет флаг, а второй получая его может сбросить, а может не изменять.

получатель флага крутится в своем вайле, ждет флаг в блокировке. другой поток единожды выставил флаг, т.е. грубо говоря выставил "1" на порт EnabledTransmit, второй поток увидел что флаг стоит, т.е. ему разрешили работу и вышел из блокированного состояния. выполнил работу, проверил ещё раз флаг, ага, всё ещё стоит, значит ещё раз выполню работу. И так 2-ой поток выполняет одну и туже задачу до тех пор, пока первый поток не сбросит флаг в ноль.

В freertos есть подобие флагов - это двоичный семафор. Но второй поток прочитает его один раз и семафор(флаг) сбросится. Можно ли в freertos захватить семафор не уничтожая его в очереди? Бывает что один флаг ждут 2 потока. Если делать на семафорах придётся 2 семафора заводить.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- juvf   Флаги в FreeRTOS   Nov 28 2011, 05:11
- - aaarrr   Цитата(juvf @ Nov 28 2011, 09:11) завести...   Nov 28 2011, 06:03
|- - juvf   Цитата(aaarrr @ Nov 28 2011, 12:03) А как...   Nov 28 2011, 07:51
- - Grape   а если нужно ждать несколько событий (флагов)?   Nov 28 2011, 09:08
|- - aaarrr   Цитата(Grape @ Nov 28 2011, 13:08) а если...   Nov 28 2011, 09:16
- - RCray   xQueueReceive удаляет элемент из очереди, а xQueue...   Nov 29 2011, 16:25
- - //Nikson   эту старую тему нашёл поиском, т.к. тоже озадачилс...   Dec 27 2014, 15:24
- - gridinp   Чтобы ожидать несколько событий сразу, надо объеди...   Jan 22 2015, 07:30
- - ViKo   Удивляюсь, что в такой распиаренной монстрообразно...   Jan 22 2015, 08:07
|- - LightElf   QUOTE (ViKo @ Jan 22 2015, 12:07) Удивляю...   Jan 23 2015, 12:04
- - ViKo   Keil CMSIS-RTOS: Description Limitations Define...   Jan 23 2015, 12:40
|- - LightElf   QUOTE (ViKo @ Jan 23 2015, 16:40) Keil CM...   Jan 25 2015, 12:52
|- - ViKo   Цитата(LightElf @ Jan 25 2015, 15:52) Раз...   Jan 25 2015, 18:57
|- - LightElf   QUOTE (ViKo @ Jan 25 2015, 22:57) Вижу то...   Jan 27 2015, 09:23
|- - ViKo   Цитата(LightElf @ Jan 27 2015, 12:23) Для...   Jan 27 2015, 09:53
|- - LightElf   QUOTE (ViKo @ Jan 27 2015, 13:53) И я счи...   Jan 29 2015, 11:07
- - Aurochs   Цитата(ViKo @ Jan 27 2015, 11:53) Меня ус...   Jan 28 2015, 16:03


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 02:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016