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
相关推荐
Navigator_Z8 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode
himobrinehacken8 小时前
取模运算的汇编奥秘揭秘
c语言·安全
巴渝小禹10 小时前
单片机死循环delay_us()计算方法
单片机·嵌入式硬件
青岚_Nox11 小时前
C语言实战:带你手写一个带"计时功能"的猜数字小游戏
c语言
科芯创展11 小时前
XZ3445 高集成升压/升降压DC-DC电源芯片技术解析
单片机·嵌入式硬件
艾芯微科技12 小时前
高充放电流锂电充放 SoC:ETA9885E10,便携储能、小移动电源 BOM 选型笔记
网络·单片机·嵌入式硬件·集成测试·51单片机
艾芯微科技12 小时前
钰泰 ETA6973PQ3Y|QFN3×3 2A 同步降压 Buck,I2C 可配置多档输出,动态调压 PMIC
网络·单片机·嵌入式硬件·fpga开发·集成测试·51单片机
Brilliantwxx13 小时前
【STM32】 通用定时器:输入捕获与输出比较详解 测脉宽、测频率
stm32·单片机·嵌入式硬件·mcu
iotxiaohu13 小时前
用 cflow 查看 C 函数调用关系
c语言·开发语言·cflow
意法半导体STM3213 小时前
【官方原创】LAT1703 STM32C5 LL Cordic例程
stm32·单片机·嵌入式硬件·stm32c5·ll cordic