I am starting to learn FreeRTOS. Just now I am trying to make a print task function with this code:
static void vTaskPrint(void *pvParameters) {
taskENTER_CRITICAL();
printf("%s", (char *)pvParameters);
printf("xPortGetFreeHeapSize: %d\r\n", xPortGetFreeHeapSize());
taskEXIT_CRITICAL();
vTaskDelete(NULL);
}
But after 14 calls to:
xTaskCreate(vTaskPrint, (char *)"vTaskPrint", configMINIMAL_STACK_SIZE, (void *)buffer, 3, (xTaskHandle *)NULL);
The cortex M3 run out of memory:
************** TEST GPIO & LEDS FREERTOS OPEN103Z EVB **************
vTaskLeds
xPortGetFreeHeapSize: 7832
vTaskReadKeys
xPortGetFreeHeapSize: 7232
[INFO] vTaskPrint created successful
Key pressed RIGHT
xPortGetFreeHeapSize: 6632
[INFO] vTaskPrint created successful
Key pressed CENTER KEY
xPortGetFreeHeapSize: 6032
[INFO] vTaskPrint created successful
Key pressed RIGHT
xPortGetFreeHeapSize: 5432
[INFO] vTaskPrint created successful
Key pressed LEFT
xPortGetFreeHeapSize: 4832
[INFO] vTaskPrint created successful
Key pressed RIGHT
xPortGetFreeHeapSize: 4232
[INFO] vTaskPrint created successful
Key pressed LEFT
xPortGetFreeHeapSize: 3632
[INFO] vTaskPrint created successful
Key pressed RIGHT
xPortGetFreeHeapSize: 3032
[INFO] vTaskPrint created successful
Key pressed LEFT
xPortGetFreeHeapSize: 2432
[INFO] vTaskPrint created successful
Key pressed RIGHT
xPortGetFreeHeapSize: 1832
[INFO] vTaskPrint created successful
Key pressed LEFT
xPortGetFreeHeapSize: 1232
[INFO] vTaskPrint created successful
Key pressed RIGHT
xPortGetFreeHeapSize: 632
[INFO] vTaskPrint created successful
Key pressed LEFT
xPortGetFreeHeapSize: 32
[INFO] vTaskPrint created successful
[ERROR] vTaskPrint not created successful
How can I free memory?