Я пытаюсь перечислить состояние всех задач, которые в данный момент выполняются, используя vTaskList (). Всякий раз, когда я вызываю функцию, я получаю HardFault, и я понятия не имею, где он выходит из строя. Я попытался увеличить размер кучи и размер стека. Это приводит к тому, что vTaskList () работает один раз, но во второй раз снова выдает серьезную ошибку. Ниже описано, как я использую vTaskList () в osThreadList ()
osStatus osThreadList (uint8_t *buffer)
{
#if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS == 1 ) )
vTaskList((char *)buffer);
#endif
return osOK;
}
Ниже описано, как я использую osThreadList () для печати всех задач на моем последовательном терминале.
uint8_t TskBuf[1024];
bool IOParser::TSK(bool print_help)
{
if(print_help)
{
uart_printf("\nTSK: Display list of tasks.\r\n");
}
else
{
uart_printf("\r\nName State Priority Stack Num\r\n" );
uart_printf("---------------------------------------------\r\n");
/* The list of tasks and their status */
osThreadList(TskBuf);
uart_printf( (char *)TskBuf);
uart_printf("---------------------------------------------\r\n");
uart_printf("B : Blocked, R : Ready, D : Deleted, S : Suspended");
}
return true;
}
Когда Я комментирую любую из задач, которую я могу заставить работать. Я предполагаю, что это связано с памятью, но я не смог найти решение.