打印

【求助贴】keilc51开发CH559单片机的奇怪BUG,求大佬帮看一眼

[复制链接]
3033|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tyfk|  楼主 | 2022-1-3 22:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试程序:   

    UINT8 test0=0X5F;
    UINT16 test1=0X5F;

    printf("DEBUG:%02X %02X %02X %02X %02X", test0, test1, 0X5F&0X07, test0&0x07, test1&0x07);
串口打印结果:
    [22:36:39.658]收←◆DEBUG:5F00 5F07 700 7C9 2048


两个变量都改成UINT8的结果:
    [22:41:16.502]收←◆DEBUG:5F5F 707 708 9A51 C920
两个变量都改成UINT16的结果:
    [22:40:20.898]收←◆DEBUG:5F 5F 700 700 783


单片机是51内核的,其它地方也经常遇到赋值错误的奇怪BUG,不知道是不是开发平台有问题,有一些设置为UINT16就没BUG,改成UINT8就有

使用特权

评论回复
沙发
tyfk|  楼主 | 2022-1-3 22:48 | 只看该作者

【求助贴】keilc51开发CH559单片机的奇怪BUG,求大佬帮看一眼

补充一下相关宏定义:

#ifndef UINT8
typedef unsigned char                   UINT8;
#endif
#ifndef UINT16
typedef unsigned short                  UINT16;
#endif

使用特权

评论回复
板凳
QuakeGod| | 2022-1-4 07:41 | 只看该作者
这跟用什么单片机没有关系。
你完全是掉到了printf的坑里。
printf要求格式字串和后面的参数要匹配,你这个就是典型的不匹配。

使用特权

评论回复
地板
ayb_ice| | 2022-1-4 09:00 | 只看该作者
打印数据,后面的数据类型必须严格匹配

使用特权

评论回复
5
WoodData| | 2022-1-4 09:15 | 只看该作者
printf的锅

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

7

帖子

0

粉丝