我正在将STM32F103R8T6与带有2个线程的RTOS一起使用
osThreadDef(ManagerTask, ManagerThread, osPriorityNormal, 0, 128);
ManagerTaskHandle = osThreadCreate(osThread(ManagerTask), NULL);
osThreadDef(RFIDTask, RFIDThread, osPriorityNormal, 0, 256);
RFIDTaskHandle = osThreadCreate(osThread(RFIDTask), NULL);
当我尝试给任何线程提供大于512的堆栈大小时,都不执行任何任务,但是当使用128和256作为上述示例时,一切都很好。
那么我如何知道我可以分配给线程的最大总堆栈大小?
在我的RTOS配置中
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)3072)
答案 0 :(得分:0)
如果您使用 FreeRTOS ,请记住,堆栈大小值以字为单位,而不是以字节为单位!但是configTOTAL_HEAP_SIZE以字节为单位!
在这种情况下:
几乎3072 :)因此,如果您不使用其他对象,它将起作用,但是如果您增加堆栈或使用其他对象,则堆将被耗尽