【问题标题】:FreeRTOS stack sizeFreeRTOS 堆栈大小
【发布时间】:2016-10-24 17:41:53
【问题描述】:

我正在使用 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。

失败了。

有什么问题?

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

【问题讨论】:

    标签: stack-overflow freertos


    【解决方案1】:

    记住堆栈大小是用字指定的,而不是字节。请参阅 xTaskCreate() 和 xTaskCreateStatic() 函数的文档。

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

    【讨论】:

    • 在增加堆栈大小后无法创建任务意味着当我使用 xTaskCreate 时无法更改或处理堆栈大小?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多