1.获取任务堆栈最大使用深度
UBaseType_t uxTaskGetStackHighWaterMark( TaskHandle_t xTask );
任务的堆栈空间会随着任务执行以及中断处理而增长或缩小。该函数可以返回任务启动后的最小剩余堆栈空间。换句话说,可以间接估算出一个任务最多需要多少堆栈空间。在文件FreeRTOSConfig.h中,宏INCLUDE_uxTaskGetStackHighWaterMark 必须设置成1,此函数才有效。比如一个32为架构处理器,返回值为1表示有4字节堆栈空间没有使用过。如果返回值为0,则任务很可能已经发生了堆栈溢出。
2.获取任务状态
eTaskState eTaskGetState( TaskHandle_txTask );
返回一个枚举类型的任务状态值。在文件FreeRTOSConfig.h中,宏INCLUDE_eTaskGetState必须设置为1,此函数才有效。
3.获取系统节拍次数
volatile TickType_t xTaskGetTickCount(void );
这个函数不能在ISR中调用。在ISR中用xTaskGetTickCountFromISR(),原型为volatileTickType_t xTaskGetTickCountFromISR( void )。
返回从vTaskStartScheduler函数调用后的系统时钟节拍次数。
本文介绍了FreeRTOS中几个常用的任务管理函数,包括获取任务堆栈最大使用深度、获取任务状态及系统节拍次数等。这些函数对于调试实时操作系统中的任务行为非常有用。
https://blog.youkuaiyun.com/zhzht19861011/article/details/50498173
1138





