Хоча portMAX_DELAY зазначено як значення для очікування на невизначений час, він фактично чекатиме невизначено лише якщо INCLUDE_vTaskSuspend увімкнено у FreeRTOS config.
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 визначено тик кожну мілісекунду.
Дивіться схожі статті за категоріями:
Вбудовані системи FreeRTOS
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow