У меня есть задача, работающая на freeRTOS, и я проверяю, сколько стека приложений не используется в этом приложении.Что я вижу, так это то, что доступная память стека уменьшается через некоторое время и долго остается на этом уровне.Задача имеет цикл while (1) и должна использовать тот же объем стека, но я не понимаю, почему этот стек используется после некоторых итераций цикла.Вот как выглядит моя задача:
void Task A(void *arg)
{
Initialize_some_variables;
while(1)
{
print(uxTaskGetStackHighWaterMark( NULL ));
sem_wait(some_sem);
xQueueReceive(some_q);
process_q_data();
send_response_over_uart();
print(uxTaskGetStackHighWaterMark( NULL ));
}
}
В моем стеке должны быть те же свободные слова, что и в первой итерации цикла while.но я вижу, что через некоторое время количество свободных слов, возвращаемых GetStackHighWaterMark, уменьшается, и я не могу это объяснить.