FreeRTOS堆栈大小

时间:2016-10-24 17:41:53

标签: stack-overflow freertos

我正在使用 FreeRTOS ,我想使用我制作的mac协议!

在单个任务上,我想Send_Beacon()功能(发送信标帧)。

当我在任务中调用该函数时,存在堆栈溢出。

void vApplicationStackOverflowHook(TaskHandle_t pxTask, char *pcTaskName)

调用vApplicationStackOverflowHook。

if (xTaskCreate(MAC_Init, (signed portCHAR *)"MAC_Inits", 128, NULL, 3,
        NULL) == pdTRUE) {
    //GPIOPinWrite(GPIO_C_BASE,GPIO_PIN_3,GPIO_PIN_3);
}

我曾尝试将堆叠深度参数从128更改为1600。

失败了。

有什么问题?

堆栈深度参数的值不是问题吗?

1 个答案:

答案 0 :(得分:0)

请记住,堆栈大小是以单词而非字节指定的。请参阅xTaskCreate()xTaskCreateStatic()函数的文档。

如果您正在使用xTaskCreate(),并且在增加其堆栈大小后无法创建任务,那么您的FreeRTOS heap用完了(该链接告诉您如何处理它)。