eric2013 发表于 2023-3-25 02:53:07

分享个H7-TOOL的RTT快捷发送面板使用案例,方便大家使用2.2.1新功能参照

对于RTT功能,我们一般都是将其作为打印log信息使用。当然,用于接收消息也是完全没问题,这里分享下用RTT接收消息注意事项



1、宏定义BUFFER_SIZE_DOWN不能开小了,我这里是直接开的1KB
#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、消息接收的处理,详情可以看分享的例子,我这里使用的下面两个函数实现:
                /* 做一个简单的回环功能 */
                if (SEGGER_RTT_HasKey())
                {
                        //GetKey = SEGGER_RTT_GetKey();
                        memset(&acIn, 0, BufferSize);
                        NumBytes = SEGGER_RTT_Read(0, &acIn, BufferSize);
                        if (NumBytes)
                        {
                              SEGGER_RTT_SetTerminal(0);
                              SEGGER_RTT_printf(0, "SEGGER_RTT_GetString = %s\r\n",&acIn);
                        }
                }


程序是做了一个回环测,效果如下:



转义字符方式,从TOOL上位机发送hex给目标板做的回环

                /* 做一个简单的回环功能 */
                if (SEGGER_RTT_HasKey())
                {
                        //GetKey = SEGGER_RTT_GetKey();
                        memset(&acIn, 0, BufferSize);
                        NumBytes = SEGGER_RTT_Read(0, &acIn, 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);
                              }
                              SEGGER_RTT_printf(0, "\r\n");
                        #else   /* 接收字符串,回环发送 */
                              if (NumBytes)
                              {
                                        SEGGER_RTT_SetTerminal(0);
                                        SEGGER_RTT_printf(0, "RTT_GetString = %s\r\n",&acIn);
                              }
                        #endif
                }





nnqtdf 发表于 2023-3-25 08:40:11

RTT能发HEX不?还是只能发字符串?

312456990 发表于 2023-3-25 09:01:01

牛阿

312456990 发表于 2023-3-25 09:04:12

老师,想请教一下,我发现用RTT 的 print , 有时候并不会打印(虽然程序中写了print , 但是有些会打印 有些就不会),这是为啥?跟RTT发送缓存有关系吗? 还望老师指点迷津 感谢!{:34:}

eric2013 发表于 2023-3-25 09:30:02

nnqtdf 发表于 2023-3-25 08:40
RTT能发HEX不?还是只能发字符串?

RTT很少收发hex用,需要上位机处理才行。

eric2013 发表于 2023-3-25 09:34:43

312456990 发表于 2023-3-25 09:04
老师,想请教一下,我发现用RTT 的 print , 有时候并不会打印(虽然程序中写了print , 但是有些会打印 有些就 ...

大家的SEGGER_RTT_PRINTF_BUFFER_SIZE设置有多大,那么函数SEGGER_RTT_printf就需要多大的局部变量,比如我们一般设置为1KB,那边RTT的printf函数有个1KB的局部变量,所以栈空间要足。

然后就是函数SEGGER_RTT_printf不支持浮点打印,使用sprintf+writestring实现即可

eric2013 发表于 2023-3-25 11:39:46

nnqtdf 发表于 2023-3-25 08:40
RTT能发HEX不?还是只能发字符串?
支持了下转移字符方式的hex,从上位机发hex给目标板




nnqtdf 发表于 2023-3-25 15:09:04

eric2013 发表于 2023-3-25 11:39
支持了下转移字符方式的hex,从上位机发hex给目标板

这样在上位机处理一下,就支持HEX发送

eric2013 发表于 2023-3-25 15:23:01

nnqtdf 发表于 2023-3-25 15:09
这样在上位机处理一下,就支持HEX发送

从目标板到上位机,大家自己printf发送hex格式实现吧,还省事点。

因为RTT本身有个颜色格式支持,别升级整出新问题了。

nnqtdf 发表于 2023-3-25 15:51:50

eric2013 发表于 2023-3-25 15:23
从目标板到上位机,大家自己printf发送hex格式实现吧,还省事点。

因为RTT本身有个颜色格式支持,别升 ...

上位机方面,要不要做个HEX发送选项呢,不用自己输\x

nnqtdf 发表于 2023-3-25 15:55:58

eric2013 发表于 2023-3-25 15:23
从目标板到上位机,大家自己printf发送hex格式实现吧,还省事点。

因为RTT本身有个颜色格式支持,别升 ...

目标板到上位机一般都是字符串的多,但是上位机到目标板可能很多都是HEX,这样解析命令方便。就像这样


eric2013 发表于 2023-3-25 16:31:16

nnqtdf 发表于 2023-3-25 15:55
目标板到上位机一般都是字符串的多,但是上位机到目标板可能很多都是HEX,这样解析命令方便。就像这样

...

好的,不过转移字符也行。后面再考虑加入这种方式
页: [1]
查看完整版本: 分享个H7-TOOL的RTT快捷发送面板使用案例,方便大家使用2.2.1新功能参照