JLink官网下载

值得注意的是,JLink版本尽量不要太老,旧版本库中可能缺少常用芯片(在Target Device Settings界面选择Device时可能找不到你用的芯片名)

安装过程:略

移植RTT

路径

找到

1
JLink安装路径 -> Samples -> RTT -> SEGGER_RTT_V758c.zip(压缩包名与JLink版本对应)

解压(如果该路径解压不了可复制到桌面后解压)

会有下列几个文件夹

  • Config
  • Examples
  • RTT
  • Syscalls

将除了Examples外的所有文件夹复制到工程文件夹下,并添加各文件夹路径到编译器

删减

需要用到以下文件

1
2
3
4
5
Config -> SEGGER_RTT_Conf.h

RTT -> SEGGER_RTT.c、SEGGER_RTT.h、SEGGER_RTT_printf.c、SEGGER_RTT_ASM_ARMv7M.S

Syscalls -> SEGGER_RTT_Syscalls_IAR.c (根据不同编译器选用不同文件;我用的是IAR,故选择IAR结尾的.c文件;如果用keil则要选用SEGGER_RTT_Syscalls_KEIL.c)

注:我一般习惯将RTT目录下的SEGGER_RTT_ASM_ARMv7M.S与芯片的startup_xxxxxx.s放在同一个文件夹,可根据自身习惯来,不影响。

编译

看有无错误,可能会有头文件包含路径的错误,纠正即可。

题外话

我在移植时,将所有.c.h放在了同一个文件夹下,故应将SEGGER_RTT.h中的#include "../Config/SEGGER_RTT_Conf.h"改为#include "SEGGER_RTT_Conf.h";但是改完后报错:Failed to open #include file 'SEGGER_RTT_Conf.h',没办法,还是分开放吧。。。

SEGGER_RTT_Conf.h放在Config文件夹中,#include "../Config/SEGGER_RTT_Conf.h"这样包含就不报错,不清楚为什么。。。

调用

常用函数:

需含头文件SEGGER_RTT.h

1
2
3
4
5
6
7
SEGGER_RTT_Init(); // RTT初始化

SEGGER_RTT_printf(); // 打印

SEGGER_RTT_GetKey(); // 从接收缓冲区读取一个字符

SEGGER_RTT_HasKey(); // 判断接收缓冲区是否空

注:如果一切都没错误,但是就是不打印数据,可退出调试模式试试。。。

参考文章