没志青年
发布于 2025-06-16 / 20 阅读
0

FreeRTOS 系统调试

断言机制

断言:条件为假,执行代码(通常让程序停止执行)。

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);