断言机制
断言:条件为假,执行代码(通常让程序停止执行)。
FreeRTOS 默认的断言:
#define configASSERT(x) if (!x) while(1);改进的断言:
#define configASSERT(x) if(!x) { printf("%s %s %d\r\n", __FILE__, __FUNCTION__, __LINE__); while(1); }FreeRTOS在中断中的断言:
portASSERT_IF_INTERRUPT();Trace 宏
FreeRTOS的源码中大量使用了条件编译,来判断trace宏是否被定义,如果定义了,
Tracealyzer 可视化诊断工具。
钩子函数
获取指定任务的栈剩余大小(即栈水位)。
UBaseType_t xTaskGetStackHighWaterMark(TaskHandle_t xTask);