STM32F103 + FreeRTOS + HAL CUBE Семафор не блокирует задачу

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

STM32F103 + FreeRTOS + HAL CUBE Семафор не блокирует задачу

Сообщение Chip115 »

Всем привет.
Не получается заблочить задачу. Семафор ни где не выдаётся, но задача всё равно выполняется.

Код: Выделить всё

/* StartRxMsgTask function */
void StartRxMsgTask(void const * argument)
{
  /* USER CODE BEGIN StartRxMsgTask */
  /* Infinite loop */
  for(;;)
  {
      osSemaphoreWait(NewMsgFromCtsBinarySemHandle, 0);
      osDelay(1);

  }
  /* USER CODE END StartRxMsgTask */
}


Семафор создаётся средствами куба.

Код: Выделить всё

osSemaphoreId NewMsgFromCtsBinarySemHandle;

osSemaphoreDef(NewMsgFromCtsBinarySem);
NewMsgFromCtsBinarySemHandle = osSemaphoreCreate(osSemaphore(NewMsgFromCtsBinarySem), 1);

Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: STM32F103 + FreeRTOS + HAL CUBE Семафор не блокирует зад

Сообщение Аlex »

Судя по всему, второй аргумент функции osSemaphoreWait - тймаут. А у Вас он равен нулю.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32F103 + FreeRTOS + HAL CUBE Семафор не блокирует зад

Сообщение Myp3ik »

Это скорей вопрос к разработчикам куба.

А почему бы не подключить FreeRTOS последней версии к проекту и использовать вместо семафоров task notification. https://www.freertos.org/RTOS-task-notifications.html

По поводу параметра таймаута пишут "Timout Value or 0 in case of no time-out". Что значит 0 - не понятно. Если он значит, что таймаут бесконечный, то в настройках ртос должен быть включен параметр vTaskSuspend.

Upd.

Если 0 - блокировка не происходит. Для вечной блокировки нужно указать osWaitForever :)))
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: STM32F103 + FreeRTOS + HAL CUBE Семафор не блокирует зад

Сообщение Chip115 »

Ппц. Спасибо за подсказку )))
Я решил раз влез в ХАЛ, то и делать все в нем. Уже проклял тот момент, когда сел за баранку этого пылесоса. )) Попробую в понедельник .
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Ответить

Вернуться в «ARM»