找回密码
 立即注册
查看: 891|回复: 3

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

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-05 16:19:25

3

主题

10

回帖

119

积分

注册会员

积分
119
发表于 2023-10-16 17:27:27 | 显示全部楼层 |阅读模式
使用的是官方提供的USB-CDC库和demo,
截图202310161726244305.jpg


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

  1. unsigned char temp=0x54;
  2. printf("found slave,address:0x%x \n",temp);   
复制代码


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

又做了以下实验:
捕获.PNG
结果:
截图202310161721488205.jpg


使用标准C语言库的printf是这样的
截图202310161723074349.jpg
截图202310161723222711.jpg


个人博客www.lihooo.top
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:418
  • 最近打卡:2025-05-09 08:54:03
已绑定手机

39

主题

2015

回帖

6877

积分

论坛元老

积分
6877
发表于 2023-10-16 18:28:13 | 显示全部楼层
keil c51编译器使用 printf打印时根据数据格式需要加前缀,例如:
打印8位数据:%bx
打印16位数据:%hx 或者 %x
打印32位数据:%lx
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:4
  • 最近打卡:2025-03-05 16:19:25

3

主题

10

回帖

119

积分

注册会员

积分
119
发表于 2023-10-17 11:38:00 | 显示全部楼层
乘风*** 发表于 2023-10-16 18:28
keil c51编译器使用 printf打印时根据数据格式需要加前缀,例如:
打印8位数据:%bx
打印16位数据:%hx 或 ...

破案了,非常感谢!
个人博客www.lihooo.top
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:397
  • 最近打卡:2025-05-11 06:19:17

45

主题

381

回帖

1599

积分

金牌会员

静坐常思己过,闲谈莫论人非

积分
1599
发表于 2023-12-2 09:37:25 | 显示全部楼层

KEIL官网关于printf的使用说明中有个注意事项,如红框所示,也就是说你需要再次指定一下输出数据的长度以保证能正确的传输数据
printf使用.png
处事要代人所想,读书需切己用功
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-11 16:54 , Processed in 0.129792 second(s), 73 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表