配置好了基本SEGGER_RTT使用后可以进阶下一阶段更好的使用这个工具,这个工具可以在不同的终端显示打印内容,按照描述,理论上还可以实现,不同的通道的配置,但是目前我并没完成对通道的配置工作,在软件中也没有找到配置通道的选项,如果有,可以交流介绍一下
1.对显示颜色的配置
// 简化版彩色输出函数
void ColorPrint(unsigned channel, const char* color, const char* message) {
// 设置颜色
SEGGER_RTT_WriteString(channel, color);
// 写入消息
SEGGER_RTT_WriteString(channel, message);
// 重置颜色(避免影响后续输出)
SEGGER_RTT_WriteString(channel, RTT_CTRL_RESET);
}
2.测试代码
int main(void)
{
extern SEGGER_RTT_CB _SEGGER_RTT;
systick_config();
// 初始化RTT
SEGGER_RTT_Init();
// 配置通道1 - 关键修复:使用有效的缓冲区
static char ch1_buffer[128]; // 为通道1分配专用缓冲区
SEGGER_RTT_ConfigUpBuffer(1, "ColorTest", ch1_buffer, sizeof(ch1_buffer), SEGGER_RTT_MODE_NO_BLOCK_SKIP);
SEGGER_RTT_ConfigUpBuffer(0, "Terminal", NULL, 0, SEGGER_RTT_MODE_NO_BLOCK_SKIP);
// 测试消息
const char* welcome = "\n=== RTT Color Channel Test ===\n\n";
SEGGER_RTT_WriteString(0, welcome);
SEGGER_RTT_SetTerminal(1);
ColorPrint(0, RTT_CTRL_TEXT_YELLOW, "=== Channel 1: Counter messages ===\n\n");
while (1)
{
SEGGER_RTT_SetTerminal(0);
// 通道0 - 系统状态(绿色)
ColorPrint(0, RTT_CTRL_TEXT_GREEN, "[System] Running normally\n");
SEGGER_RTT_SetTerminal(1);
// 通道1 - 计数器(黄色)
ColorPrint(0, RTT_CTRL_TEXT_YELLOW, "[System] Running normally\n");
delay_1ms(1000); // 非 HAL 环境用其他延时函数
}
}
3.两个通道运行正常
4.注意