对于RTT功能,我们一般都是将其作为打印log信息使用。当然,用于接收消息也是完全没问题,这里分享下用RTT接收消息注意事项
V7-RTT交互.7z
(1.33 MB, 下载次数: 21)
1、宏定义BUFFER_SIZE_DOWN不能开小了,我这里是直接开的1KB
[C] 纯文本查看 复制代码 #ifndef BUFFER_SIZE_DOWN
#define BUFFER_SIZE_DOWN (1024) // Size of the buffer for terminal input to target from host (Usually keyboard input) (Default: 16)
#endif
2、消息接收的处理,详情可以看分享的例子,我这里使用的下面两个函数实现:
[C] 纯文本查看 复制代码 /* 做一个简单的回环功能 */
if (SEGGER_RTT_HasKey())
{
//GetKey = SEGGER_RTT_GetKey();
memset(&acIn[0], 0, BufferSize);
NumBytes = SEGGER_RTT_Read(0, &acIn[0], BufferSize);
if (NumBytes)
{
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0, "SEGGER_RTT_GetString = %s\r\n", &acIn[0]);
}
}
程序是做了一个回环测,效果如下:
转义字符方式,从TOOL上位机发送hex给目标板做的回环
[C] 纯文本查看 复制代码 /* 做一个简单的回环功能 */
if (SEGGER_RTT_HasKey())
{
//GetKey = SEGGER_RTT_GetKey();
memset(&acIn[0], 0, BufferSize);
NumBytes = SEGGER_RTT_Read(0, &acIn[0], BufferSize);
#if 1 /* 接收hex,回环发送 */
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0, "RTT_GetString =");
for(int i = 0; i < NumBytes; i++)
{
SEGGER_RTT_printf(0, "%x", acIn[i]);
}
SEGGER_RTT_printf(0, "\r\n");
#else /* 接收字符串,回环发送 */
if (NumBytes)
{
SEGGER_RTT_SetTerminal(0);
SEGGER_RTT_printf(0, "RTT_GetString = %s\r\n", &acIn[0]);
}
#endif
}
|