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

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

[复制链接]
  • TA的每日心情
    郁闷
    2024-3-13 21:06
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    10

    回帖

    105

    积分

    注册会员

    积分
    105
    发表于 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
    回复 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 09:00
  • 签到天数: 144 天

    [LV.7]常住居民III

    27

    主题

    1356

    回帖

    4217

    积分

    论坛元老

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

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-3-13 21:06
  • 签到天数: 2 天

    [LV.1]初来乍到

    3

    主题

    10

    回帖

    105

    积分

    注册会员

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

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

    使用道具 举报

  • TA的每日心情
    开心
    昨天 11:51
  • 签到天数: 169 天

    [LV.7]常住居民III

    43

    主题

    369

    回帖

    1107

    积分

    金牌会员

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

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-21 07:42 , Processed in 0.060308 second(s), 43 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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