FreeRTOS 堆栈溢出钩子

FreeRTOS stack overflow hook

根据 FreeRTOS 有关堆栈溢出的文档:

The application must provide a stack overflow hook function if configCHECK_FOR_STACK_OVERFLOW is not set to 0. The hook function must be called vApplicationWhosebugHook(), and have the prototype below:

void vApplicationWhosebugHook( TaskHandle_t xTask,signed char *pcTaskName );

并且在 FreeRTOS 中,以下原型在 tasks.h 文件中定义:

 /* Callback function prototypes. --------------------------*/
 extern void vApplicationWhosebugHook( xTaskHandle pxTask, signed char *pcTaskName );

所以,我设置configCHECK_FOR_STACK_OVERFLOW为2,实现了功能 在我的应用程序代码中:

void vApplicationWhosebugHook( xTaskHandle pxTask, signed char *pcTaskName )
{
    while (1)
    {
        /* my code. Prints stuff directly to the console*/
    }
}

我的问题是这个实现是否正确?即,挂钩实现在我的应用程序代码中,tasks.h 中的声明保持不变。

我觉得很合适。您会在 FreeRTOS 下载的 FreeRTOS/Demo 目录中找到很多很多示例。使用 2 而不是 1 的理由如下:http://www.freertos.org/Stacks-and-stack-overflow-checking.html