Obwohl portMAX_DELAY als Wert für unbegrenztes Warten aufgeführt ist, wartet es nur tatsächlich unbegrenzt, wenn INCLUDE_vTaskSuspend in der FreeRTOS-Konfiguration aktiviert ist.
portMAX_DELAY ist typischerweise als 0xFFFFFFFF d.h. 2^32-1 definiert:
portmax_delay.cpp
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL(wenn jedoch 16-Bit-Ticks mit configUSE_16_BIT_TICKS aktiviert sind, wird es als 0xFFFF (2^16-1) definiert).
Wenn INCLUDE_vTaskSuspend aktiviert ist, wird dies als spezieller Wert behandelt und wartet tatsächlich unbegrenzt. Wenn INCLUDE_vTaskSuspend nicht definiert ist, wartet es nur für 0xFFFFFFFF Ticks (vorausgesetzt 32-Bit-System-Ticks).
Mit anderen Worten, dies wartet nur etwa 7 Wochen, wenn FreeRTOS so konfiguriert ist, dass es jede Millisekunde tickt.
Wenn dieser Beitrag dir geholfen hat, erwäge, mir einen Kaffee zu spendieren oder per PayPal zu spenden, um die Recherche und Veröffentlichung neuer Beiträge auf TechOverflow zu unterstützen