大家好、
客户提出的问题需要您的帮助:
我正在使用 SCI、因为数据是十六进制的、串行端口打印无法使用串行端口助手进行直观查看、因此需要使用 printf 来实现数据转换。 例如、当实现 printf 时、代码:
uint8 a=0XC8;
printf ("\n\r 0x9F=%x\n\r"、a);
Serial Port Assistant 视图:0xF9 = C8
如果使用常规串行端口、则方案为:
SCIA_TX ('\n');
SCIA_TX ('\r\n');
SCIA_TX (0XC8);
在 Serial Port Assistant normal (串行端口助手)视图中,只需继续换行,而无需任何其他信息,
当使用十六进制视图时、它会打印: 0A 0D 63 38、这是分别为'\n''\r\n''C'8'的 ASCII 十六进制值。
我重新编写 了 int fputc (int _c、寄存器文件*_FP)、尝试达到上面所示的第一效果。
但是、当我使用 printf ("\n\n\r 0x9F=%x\n\r"、a)时、它只显示0x9F=、后面没有 C8。
为什么会发生这种情况? 如何解决此问题?
代码:
/*
printf()重定义相关关于 redefine.
*
/*
int fputc (int _c、寄存器文件*_fp)
{
uint8 TX=_c;
while (SciaRegs.SCICTL2.bit.TXEMPTY=0)等待输出完成}//等待输出完成
SciaRegs.SCITXBUF=(uint16) TX;//必须右对齐必须右对齐
等待输出完成(SciaRegs.SCICTL2.bit.TXEMPTY=0){}//μ s
返回1;
}
*
您可以帮助检查此案例吗?
谢谢、此致、
本