Добрый день!
Хотел поинтересоваться, есть ли разница в использовании функций:
- HAL_Delay()
- osDelay()
Естественно при использовании FreeRTOS (иначе второй функции просто нет). Я попробовал и ту и ту, и результат вроде как выглядит одинаковым, но уверенности нет...
Добрый день!
Хотел поинтересоваться, есть ли разница в использовании функций:
- HAL_Delay()
- osDelay()
Естественно при использовании FreeRTOS (иначе второй функции просто нет). Я попробовал и ту и ту, и результат вроде как выглядит одинаковым, но уверенности нет...
Привет!
В целом, в контексте ОС функции абсолютно разные. HAL_Delay() никак не связана с FreeRTOS, соответственно ОС не знает о том, что задача висит на задержке, не делая ничего полезного. То есть с точки зрения FreeRTOS при вызове HAL_Delay() таск выполняет активную работу, и прерван он может быть только другой задачей с бОльшим приоритетом.
При использовании osDelay() FreeRTOS знает, что задача по сути бездействует, и поэтому может переключиться на другие задачи, в том числе с меньшим приоритетом. Таким образом, предпочтение в данном случае следует отдавать исключительно osDelay().
Аа, понял... Я наверно не увидел разницы при использовании потому что как раз в приоритетах было дело.