|
玩单片机的应该都用过串口printf打印调试信息,哪怕用了jlink可以在线调试,有时候还是想打印一些信息,这样就需要多用一条tx线,同时还会占用一个IO,如果jlink不支持虚拟串口还得再用个ttl,比较费劲,某日灵光一闪,jlink能不能直接输出调试信息,度娘了一下还真有,在这分享下吧,没太多测试,不知道有什么bug,热衷串口的也不要喷,没说谁好谁坏,想用哪个用哪个。
注:主要针对jlink,stlink不知道有没有类似的,没研究,jlink驱动升级到4.9以上
库下载
http://download.segger.com/J-Link/RTT/RTT_Implementation_140925.zip
SEGGER_RTT.c
SEGGER_RTT.h
SEGGER_RTT_Conf.h
SEGGER_RTT_printf.c
把这四个文件引入项目,需要打印信息的地方引用SEGGER_RTT.h,然后用SEGGER_RTT_printf打印。
代码下载后连接好jlink,板子上电,找到jlink安装目录,打开J-Link RTT Viewer(没有的升级jlink),Specify Target Device选择自己的单片机,然后OK,信息打印
如果无效可以尝试SEGGER_RTT_Init();初始化一下,同时按照开发环境引入RTT_Syscalls_KEIL.c或者RTT_Syscalls_IAR.c
如果习惯用printf打印的,可以修改下SEGGER_RTT.c 文件,加入#include "stdio.h"引用
最下方加入
- int fputc(int ch, FILE *f)
- {
- const char c=(char) ch;
- SEGGER_RTT_Write(0,&c,1);
- return ch;
- }
复制代码 然后就可以使用printf正常打印了。
PS:测试了下SEGGER_RTT_printf和printf重映射,SEGGER_RTT_printf对于%i,%e,%f,%o都是不支持的
- SEGGER_RTT_printf(0,"SEGGER_RTT_printf c %c,d %d,i %i,e %e,f %f,o %o,x %x\r\n",'A',10,10,10,10.1,10,10);
- printf("printf c %c,d %d,i %i,e %e,f %f,o %o,x %x\r\n",'A',10,10,10.1,10.1,10,10);
复制代码 大概看了下源码,应该是支持 %c %d %u %x %s %p,也够用了
- switch (c) {
- case 'c': {
- char c0;
- v = va_arg(*pParamList, int);
- c0 = (char)v;
- _StoreChar(&BufferDesc, c0);
- break;
- }
- case 'd':
- v = va_arg(*pParamList, int);
- _PrintInt(&BufferDesc, v, 10, NumDigits, FieldWidth, FormatFlags);
- break;
- case 'u':
- v = va_arg(*pParamList, int);
- _PrintUnsigned(&BufferDesc, v, 10, NumDigits, FieldWidth, FormatFlags);
- break;
- case 'x':
- case 'X':
- v = va_arg(*pParamList, int);
- _PrintUnsigned(&BufferDesc, v, 16, NumDigits, FieldWidth, FormatFlags);
- break;
- case 's':
- {
- const char * s = va_arg(*pParamList, const char *);
- do {
- c = *s++;
- if (c == 0) {
- break;
- }
- _StoreChar(&BufferDesc, c);
- } while (BufferDesc.ReturnValue >= 0);
- }
- break;
- case 'p':
- v = va_arg(*pParamList, int);
- _PrintUnsigned(&BufferDesc, v, 16, 8, 8, 0);
- break;
- case '%':
- _StoreChar(&BufferDesc, '%');
- break;
- }
- sFormat++;
- } else {
- _StoreChar(&BufferDesc, c);
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|