Метка максимального заполнения стека
Наименьший объём свободного стека задачи за всё время работы — измеряется закраской стека и проверкой, насколько краска успела облупиться.
В RTOS у каждой задачи свой стек фиксированного размера, а слишком маленький стек даёт сбои, неотличимые от случайной порчи памяти. Приём прост: при создании стек заполняют известным шаблоном (FreeRTOS использует 0xA5), а позже считают, сколько байт от дна всё ещё его хранят. Именно это число и возвращает uxTaskGetStackHighWaterMark().
Метка отражает только те пути кода, что реально выполнялись. Худшее прерывание в момент самой глубокой цепочки вызовов в тестах могло ни разу не случиться, поэтому добавляют запас или подкрепляют статическим анализом, например GCC-флагом -fstack-usage. Защитная область MPU ловит переполнение, не давая затоптать данные соседа, — и порождает HardFault, который по крайней мере можно отладить.