根据有关堆栈溢出的FreeRTOS
文档:
如果configCHECK_FOR_STACK_OVERFLOW未设置为0,则应用程序必须提供堆栈溢出挂钩函数。钩子函数必须 被称为vApplicationStackOverflowHook(),并拥有原型 下面:
void vApplicationStackOverflowHook(TaskHandle_t xTask,signed char * pcTaskName);
在FreeRTOS
中,tasks.h
文件中定义了以下原型:
/* Callback function prototypes. --------------------------*/
extern void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName );
因此,我将configCHECK_FOR_STACK_OVERFLOW
设置为2并实现该功能
在我的应用程序代码中:
void vApplicationStackOverflowHook( xTaskHandle pxTask, signed char *pcTaskName )
{
while (1)
{
/* my code. Prints stuff directly to the console*/
}
}
我的问题是这个实现是否正确?例如,钩子实现在我的应用程序代码中,tasks.h
中的声明保持不变。
答案 0 :(得分:1)
看起来对我来说。您可以在FreeRTOS下载的FreeRTOS / Demo目录中找到许多很多很多例子。使用2而不是1的基本原理是:http://www.freertos.org/Stacks-and-stack-overflow-checking.html