Top.Mail.Ru
Уведомления
Очистить все

HAL_Delay или osDelay при использовании FreeRTOS?

(@aleksandrkam)
New member

Добрый день!

Хотел поинтересоваться, есть ли разница в использовании функций:

  1. HAL_Delay()
  2. osDelay()

Естественно при использовании FreeRTOS (иначе второй функции просто нет). Я попробовал и ту и ту, и результат вроде как выглядит одинаковым, но уверенности нет...

Цитата
Создатель темы Размещено : 09.10.2024 15:00
Метки темы
Aveal
(@aveal)
Top level Admin

Запись от: @aleksandrkam

Добрый день!

Хотел поинтересоваться, есть ли разница в использовании функций:

  1. HAL_Delay()
  2. osDelay()

Естественно при использовании FreeRTOS (иначе второй функции просто нет). Я попробовал и ту и ту, и результат вроде как выглядит одинаковым, но уверенности нет...

Привет!

В целом, в контексте ОС функции абсолютно разные. HAL_Delay() никак не связана с FreeRTOS, соответственно ОС не знает о том, что задача висит на задержке, не делая ничего полезного. То есть с точки зрения FreeRTOS при вызове HAL_Delay() таск выполняет активную работу, и прерван он может быть только другой задачей с бОльшим приоритетом.

При использовании osDelay() FreeRTOS знает, что задача по сути бездействует, и поэтому может переключиться на другие задачи, в том числе с меньшим приоритетом. Таким образом, предпочтение в данном случае следует отдавать исключительно osDelay().

 

ОтветитьЦитата
Размещено : 09.10.2024 20:45
(@aleksandrkam)
New member

Аа, понял... Я наверно не увидел разницы при использовании потому что как раз в приоритетах было дело.

ОтветитьЦитата
Создатель темы Размещено : 11.10.2024 22:27
Aveal
(@aveal)
Top level Admin

@aleksandrkam вполне возможно.

ОтветитьЦитата
Размещено : 12.10.2024 09:58
Поделиться: