1

我正在尝试xil_printf()在 for 循环中并通过 uart 将其馈送到 SendBuffer 中。如何打印字符而不是整数?它打印的只是十六进制数字......

uint32_t IRAM;
for(Index=0; Index<tsize; Index++){
  int sb = Index*sizeof(uint32_t);
  IRAM = XIo_In32(RAMADD+sb);
  xil_printf("Data: %08x\n\r",IRAM);
}

这打印十六进制字符:

Data: 00004241
Data: 00004443
Data: 00004645
Data: 00004847

我试过了 :

xil_printf("Data: %08c\n\r",IRAM)

它打印单个字符:

Data: A
Data: C

如何打印以下内容(将十六进制字符 4241 转换为 AB,4443 转换为 CD 等...)?

Data: AB
Data: CD
4

1 回答 1

3

您需要打印两个字节/字符,因此您可以在格式字符串中明确指定它:

xil_printf("Data: %c%c\n\r", char1, char2);

但首先您需要计算要打印的字节数。例如:

int char1 = (IRAM >> 8) & 0xff;
int char2 = IRAM & 0xff;

(可能切换 char1 <-> char2;我不确定您要以什么顺序打印它们)

于 2013-11-13T21:03:21.463 回答