Wie lange wartet portMAX_DELAY tatsächlich in FreeRTOS?
English
Deutsch
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.
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow