查看: 4613|回复: 6

[CodeWarrior] 请教高手:CW6.3的printf()函数疑似有问题!

[复制链接]

该用户从未签到

4

主题

29

帖子

0

注册会员

Rank: 2

积分
72
最后登录
1970-1-1
发表于 2010-6-4 11:40:21 | 显示全部楼层 |阅读模式
我用printf向串口发格式化的数据,测试程序如下:
unsigned long x;

for (x=0; x
我知道答案 目前已有5人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-6-4 14:04:16 | 显示全部楼层

    RE:请教高手:CW6.3的printf()函数疑似有问题!

    unsigned long x;换成int型可能是输出的时候高低字节输出的。
    该会员没有填写今日想说内容.

    该用户从未签到

    4

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    1970-1-1
     楼主| 发表于 2010-6-7 09:52:52 | 显示全部楼层

    RE:请教高手:CW6.3的printf()函数疑似有问题!

    已经证实,确实是CW 6.3和CW 6.2的库中的printf函数都不支持32位的长整型unsigned long的格式化输出!我倒!看来我想从STM32上把程序移植到MZ60上是熊多鸡少啊。。。。。卖糕的,哪位Freescale的粉丝大虾能给小弟重写一个更好的printf函数呢?

    该用户从未签到

    4

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    1970-1-1
     楼主| 发表于 2010-6-7 09:56:49 | 显示全部楼层

    回复:请教高手:CW6.3的printf()函数疑似有问题!

    回复第 2 楼 安 于2010-06-04 06:04:16发表:
    unsigned long x; 换成int型可能是输出的时候高低字节输出的。 

    乖乖,不是可能,而是真的!CW为什么要这样?6.2,6.3我都试过了,全是这样!这样有什么好处啊,我真想不明白。。。。。
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-6-8 08:38:42 | 显示全部楼层

    RE:请教高手:CW6.3的printf()函数疑似有问题!

    你要明白,所有的串口都是8位的,1个字节;
    我建议你修改一下程序,使用串口输出函数。不要使用printf,另外,输出大于8位的就要进行代码优化。我们在程序中会应用到更多类似的程序。希望你能够采纳我的意见。
    该会员没有填写今日想说内容.

    该用户从未签到

    4

    主题

    29

    帖子

    0

    注册会员

    Rank: 2

    积分
    72
    最后登录
    1970-1-1
     楼主| 发表于 2010-6-9 14:41:37 | 显示全部楼层

    回复:请教高手:CW6.3的printf()函数疑似有问题!

    ok.我无奈只能采纳斑竹的意见了,正在写1-8位十进制数转为右对齐的ASCII字符串并消前导0的程序。另外再借问一下,想把原来ARM上的程序移植到这8位机上,除了printf外,还有什么已知的但我们菜鸟容易忽视的地方?因为这个printf害我耽误了好几天时间,本来挺简单的,就是从超级终端接收8个传感器采集的电流电压数值,还有两路脉冲转速,原来的ARM程序就是那么简单的把值算出来,把printf定向到串口送出去就行了,我还以为是奇数路采集的不对恒为0了,结果从硬件查到软件,原来....汗。
     
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-6-10 08:33:03 | 显示全部楼层

    RE:请教高手:CW6.3的printf()函数疑似有问题!

    8位和32位使用的标准库是一样的,但是输出的时候就有些不同了。他是直接访问地址,如果你把u换成d,应该就不会出现类似的错误了。在输出是,可以使用printf("%4d,%4d\r\n",x,x>>8);
    这样就可以使用了。
    该会员没有填写今日想说内容.
    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 20:31 , Processed in 0.102283 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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