LiHooo 发表于 2023-10-16 17:27:27

USB-CDC库中的printf函数在打印hex时有问题

使用的是官方提供的USB-CDC库和demo,



代码是以十六进制打印一个unsigned char 的变量,

unsigned char temp=0x54;
printf("found slave,address:0x%x \n",temp);   

理论上应该打印“0x54 ”, 但是丛串口收到的是“0x5443 ”

又做了以下实验:

结果:



使用标准C语言库的printf是这样的




乘风飞扬 发表于 2023-10-16 18:28:13

keil c51编译器使用 printf打印时根据数据格式需要加前缀,例如:
打印8位数据:%bx
打印16位数据:%hx 或者 %x
打印32位数据:%lx

LiHooo 发表于 2023-10-17 11:38:00

乘风飞扬 发表于 2023-10-16 18:28
keil c51编译器使用 printf打印时根据数据格式需要加前缀,例如:
打印8位数据:%bx
打印16位数据:%hx 或 ...

破案了,非常感谢!

rengran 发表于 2023-12-2 09:37:25


KEIL官网关于printf的使用说明中有个注意事项,如红框所示,也就是说你需要再次指定一下输出数据的长度以保证能正确的传输数据

页: [1]
查看完整版本: USB-CDC库中的printf函数在打印hex时有问题