我目前正在使用stm32f4开发freertos。使用低于配置的cubemx创建项目后。Freertos + STM32F2 - 将堆栈分配给线程后总堆大小错误
它似乎RTOS有大约25k字节为我分配堆栈线程。但不知何故,当我创建堆栈大小为1000的线程时,它只剩下20888个字节用于RTOS的总堆。如果我分配2000,它剩下16888。它似乎总是消耗4倍的堆栈大小分配。真的很困惑发生了什么。
osThreadDef(Task_Embedded, Task_VATEmbedded, osPriorityNormal, 0, 1000);
VATEmbeddedTaskHandle = osThreadCreate(osThread(Task_Embedded), NULL);
osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument)
{
TaskHandle_t handle;
if (xTaskCreate((TaskFunction_t)thread_def->pthread,(const portCHAR *)thread_def->name,
thread_def->stacksize, argument, makeFreeRtosPriority(thread_def->tpriority),
&handle) != pdPASS) {
return NULL;
}
return handle;
}
我不认为'osThreadDef'是一个FreeRTOS API ... – LPs
它的一个基于hal库提供的freertos的api。 – Pawan
张贴代码,不要链接图片.. – LPs