Scheduler gets stuck if more than 3 tasks

petermaier wrote on Tuesday, April 26, 2016:

Hi all,
I am having trouble starting more than 3 tasks even if they’re absolute dummy tasks.

I’ve built a project with STM32CubeMX which included freeRTOS as middleware.

IDE: Atollic TrueSTUDIO with GCC
MCU: STM32151LCBU6

main.c:
xTaskCreate(DataHandlerTask,“Data Handler”, 280U, NULL, 4U, NULL);
xTaskCreate(LightMeasureTask,“Light Measurement”, 100U, NULL, 4U, NULL);
xTaskCreate(TemperatureMeasureTask,“Temp Measurement”, 100U, NULL, 4U, NULL);
xTaskCreate(HumidityMeasureTask,“Humid Measurement”, 100U, NULL, 4U, NULL);
xTaskCreate(PressureMeasureTask,“Pressure Measurement”, 100U, NULL, 4U, NULL);
vTaskStartScheduler();

tasks (there are 5 identically simple tasks):
void HumidityMeasureTask(void pvargs){
int32t humidityValue=0;
for (;:wink: {
osDelay(HUMIDITYTASKDELAYMS);
}
}

xTaskCreate returns in every case 1.
After it gets stuck in vTaskStartScheduler() and does nothing.

If I create only 3 tasks everything works fine. However, if there are more than 3 tasks the scheduler is getting stuck. Is there a define for maximum tasks or something?

Any suggestions on how to get this working would be greatly appreciated.
Peter Maier

rtel wrote on Tuesday, April 26, 2016:

Please read the heap management page on the FreeRTOS web site - could it be you just need to increase configTOTAL_HEAP_SIZE?

Do you have a malloc failed hook defined?

Do you have configASSERT() defined?

petermaier wrote on Wednesday, April 27, 2016:

To increase configTOTAL_HEAP_SIZE worked fine.

You made my day, thank you