This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28069:关于 printf()的问题

Guru**** 2229410 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1187198/tms320f28069-issue-about-printf

器件型号:TMS320F28069

大家好、

客户提出的问题需要您的帮助:

我正在使用 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;

*

您可以帮助检查此案例吗?

谢谢、此致、