RTT Viewer

RTT Viewer是什么?有什么功能?

RTT Viewer(Real-Time Transfer Viewer)是一种用于嵌入式系统调试的工具,由SEEGER公司开发。

RTT Viewer主要用于通过J-Link、ST-Link等调试器与嵌入式系统进行交互,实现实时的数据交换和调试信息输出。它允许开发者在不占用硬件UART资源的情况下,高效地从目标MCU(微控制器)向主机发送调试信息或接收控制命令。

RTT Viewer如何配置?

1、安装 J-Link_V64h

J-Link下载及安装步骤_jlink-优快云博客https://blog.youkuaiyun.com/akuanglin/article/details/140211145

2、找到RTT文件

目录:...\JLink_V644h\Samples\RTT\SEGGER_RTT_V644h.zip\RTT\

如下:

3、在工程中添加RTT

1、在工程中新建一个RTT文件夹

2、添加文件 SEGGER_RTT.c 和 SEGGER_RTT_printf.c

3、添加.h文件的路径 ,如下(Keil):

4、添加输出的接口

1、在需要使用的文件中添加依赖: #include "./RTT/SEGGER_RTT.h"

2、调用接口:

int SEGGER_RTT_printf(unsigned BufferIndex, const char *sFormat, ...)

举例:

SEGGER_RTT_printf(0, "LCD ID : %d\r\n",id)

与printf的用法相似,前面多一个入参unsigned BufferIndex,表述要使用的缓冲区,例如,0代表“终端”

5、添加浮点数输出(如需,按照下面步骤添加)

默认的SEGGER_RTT_printf是无法输出浮点数,需要在SEGGER_RTT_vprintfswitch case函数中添加如下代码:

                //----------输出浮点-----------------------------
            case 'f':
            case 'F':
            {
                float fv;
                fv = (float)va_arg(*pParamList, double); // 取出输入的浮点数值

                v = (int)fv; // 取整数部分

                _PrintInt(&BufferDesc, v, 10u, NumDigits, FieldWidth, FormatFlags); // 显示整数,支持负数
                _StoreChar(&BufferDesc, '.');                                       // 显示小数点

                v = abs((int)(fv * 1000000));
                v = v % 1000000;
                _PrintInt(&BufferDesc, v, 10u, 2, FieldWidth, FormatFlags); // 显示小数点后两位

                //               v = abs((int)(fv * 1000));
                //               v = v % 1000;
                //              _PrintInt(&BufferDesc, v, 10u, 2, FieldWidth, FormatFlags);          //显示小数点后三位

                //              v = abs((int)(fv * 10000));
                //              v = v % 10000;
                //             _PrintInt(&BufferDesc, v, 10u, 2, FieldWidth, FormatFlags);          //显示小数点后四位
                //
                //             v = abs((int)(fv * 100000));
                //             v = v % 100000;
                //            _PrintInt(&BufferDesc, v, 10u, 2, FieldWidth, FormatFlags);          //显示小数点后五位
                //
                //            v = abs((int)(fv * 1000000));
                //            v = v % 1000000;
                //           _PrintInt(&BufferDesc, v, 10u, 2, FieldWidth, FormatFlags);          //显示小数点后六位
            }
            break;

SEGGER_RTT_vprintf在SEGGER_RTT_printf.c的378行,case添加在SEGGER_RTT_printf.c的533行

打开RTT Viewer窗口

双击JLinkRTTViewer.exe,打开RTT Viewer窗口,如下:

选择芯片的型号,其它默认的一般不需要修改,也可以按需修改

注意Target Interface的选择需要与Keil中的配置一样

            

编写测试代码,烧录进去

/**
 * @brief       task4
 * @param       pvParameters : 传入参数(未用到)
 * @retval      无
 */
void task4(void *pvParameters)
{
    UBaseType_t priority_num = 0;

    while (1)
    {
        priority_num += 1;
        SEGGER_RTT_printf(0, "priority is : %d\r\n", priority_num);
        vTaskDelay(1000);
    }
}

效果如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值