FreeRTOS 提供了多种特性来辅助跟踪调试栈相关的问题。
uxTaskGetStackHighWaterMark()函数
每个任务都独立维护自己的栈空间,栈空间总量在任务创建时进行设定。
uxTaskGetStackHighWaterMark() 主要用来查询指定任务的运行历史中,其栈空间还差
多少就要溢出。这个值被称为栈空间的”高水线(High Water Mark)”。
uxTaskGetStackHighWaterMark() API 函数原型如下:
unsigned portBASE_TYPE uxTaskGetStackHighWaterMark( xTaskHandle xTask);
参数名 | 描述 |
---|---|
xTask | 被查询任务的句柄——欲知如何获得任务句柄,详情请参见 API 函数xTaskCreate()的参数 pxCreatedTask。如果传入 NULL 句柄,则任务查询的是自身栈空间的高水线 |
返回值 | 任务栈空间的实际使用量会随着任务执行和中断处理过程上下浮动。uxTaskGetStackHighWaterMark()返回从任务启动执行开始的运行历史中,栈空间具有的最小剩余量。这 |