物联网操作系统学习笔记——任务栈

这篇博客探讨了物联网操作系统FreeRTOS中任务栈大小的确定及其重要性,包括堆栈溢出检测方法和MDK-htm文件分析的局限性。此外,还详细介绍了CPU利用率统计的应用,包括统计作用、API及其实现过程,并提供了具体的操作步骤和实例。
摘要由CSDN通过智能技术生成

任务栈大小确定

如果栈的大小没有确定,在进行上下文切换的时候,堆栈溢出,会导致程序出错。

任务堆栈大小确定

需要用到堆栈空间的任务:
在这里插入图片描述

任务栈大小确定方案

三个方案:
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值