任务栈大小确定
如果栈的大小没有确定,在进行上下文切换的时候,堆栈溢出,会导致程序出错。
任务堆栈大小确定
需要用到堆栈空间的任务:
任务栈大小确定方案
三个方案:
MDK-htm文件分析的不足:
1,如果调用的是函数指针不去计算
2,如果是中断和中断嵌套也不去计算
栈溢出检测——FreeRTOS提供的检测
第一种方式的不足,只能在任务切换的时候进行检测,但是在运行过程中容易出现栈溢出。
2,将
MDK-htm文件分析
并不可行,只供参考
堆栈检测API
栈溢出检测
栈溢出回调函数????
任务状态信息打印
功能概述字符串
任务栈检测应用
栈溢出检测方案一实例操作:
功能需求
1、打开栈溢出检测方案1
2、修改Usart_Task任务
3、在任务内模拟栈溢出,分析实验结果。
操作:
首先打开STM32CubeMX,对FreeRTOS进行配置
void vStackOverFlowTest(void)
{
uint8_t u8TestBuff[128];
(void)u8TestBuff;
int16_t i;
for(i =360;i>=0;i--)//栈的增长方式是满减栈,在进行栈操作时从最高地址开始操作,从起始地址开始操作时看不到现象的,为了能够看到现象,从高地址开始操作
{
u8TestBuff[i] = 0x88;
}
}
编写回调函数,检查是否栈溢出
__weak void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTa