FREERTOS检测任务栈内存情况

启用堆栈溢出钩子函数

复制代码
// 栈溢出钩子函数
void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName) {
    (void)xTask; // 避免未使用参数警告
    // 在这里通过串口或其他方式打印出问题的任务名
    // 例如:printf("STACK OVERFLOW in Task: %s\\n", pcTaskName);
    while(1); // 死循环,便于捕获错误
}

启用 uxTaskGetStackHighWaterMark直接看某个任务栈高水位线

这个函数直接输出某个任务栈内存情况方便设置任务栈大小

复制代码
// 获取当前任务的栈高水位线(剩余最小栈空间,以字为单位)
UBaseType_t uxHighWaterMark;
uxHighWaterMark = uxTaskGetStackHighWaterMark( NULL ); // 传入 NULL 表示检查当前任务

// 将结果转换为字节数(在32位系统上通常乘以4)
printf("当前任务栈高水位线(剩余最小栈): %lu 字, 约 %lu 字节\n", 
       (unsigned long)uxHighWaterMark, 
       (unsigned long)uxHighWaterMark * sizeof(portSTACK_TYPE));

当然需要开启相关的宏,版本不一样可能有些不一样我这里加的是以下两个宏

复制代码
#define INCLUDE_uxTaskGetStackHighWaterMark2 1

#define configCHECK_FOR_STACK_OVERFLOW 2
相关推荐
handler013 小时前
【Linux 网络】一文读懂 HTTP 协议
linux·c语言·网络·c++·笔记·网络协议·http
我还记得那天3 小时前
用C语言实现一个简易扫雷小游戏
c语言·开发语言
我不是懒洋洋3 小时前
【C++】类和对象( 类的定义、实例化、 this指针、 C++和C语言实现Stack对比)
c语言·开发语言·数据结构·c++·经验分享·算法·visual studio
『昊纸』℃3 小时前
《C语言程序设计(第3版)》课后答案.pdf
c语言·程序设计·vc++6.0·课后答案·实训题
山木嵌入式3 小时前
STM32串口不定长数据接收:超时解析法+DMA+空闲中断法(附完整代码)
stm32·单片机·串口·uart
yong99903 小时前
STC15W4K32S4系列单片机驱动nRF24L01 2.4G无线接收方案
单片机·嵌入式硬件
崇山峻岭之间3 小时前
单片机蜂鸣器实验
单片机·嵌入式硬件
guygg883 小时前
贝叶斯非局部均值降噪算法C语言实现
c语言·算法·均值算法
西城微科方案开发3 小时前
厨房电子秤MCU芯片解决方案
单片机·嵌入式硬件
深圳市晨芯阳科技有限公司3 小时前
HC7253晨芯阳高端电流检测降压LED恒流驱动器
stm32·单片机·嵌入式硬件·驱动ic·深圳市晨芯阳科技有限公司