Хотя portMAX_DELAY указан как значение для ожидания бесконечно, он будет фактически ждать бесконечно только если INCLUDE_vTaskSuspend включён в конфигурации FreeRTOS.
portMAX_DELAY обычно определяется как 0xFFFFFFFF, т.е. 2^32-1:
portmax_delay.cpp
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL(однако если включены 16-битные тики с помощью configUSE_16_BIT_TICKS, он будет определён как 0xFFFF (2^16-1).
В случае если INCLUDE_vTaskSuspend включён, это рассматривается как специальное значение и будет фактически ждать бесконечно. Если INCLUDE_vTaskSuspend не определён, он будет ждать только 0xFFFFFFFF тиков (при условии 32-битных системных тиков).
Другими словами, это будет ждать только около 7 недель, если FreeRTOS настроен тикать каждую миллисекунду.
Check out similar posts by category:
Встраиваемые системы FreeRTOS
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow