查看: 2884|回复: 3

[求助] Kinetis SDK1.3 printf输出之一——使能浮点打印的方法

[复制链接]

该用户从未签到

10

主题

42

帖子

0

注册会员

Rank: 2

积分
100
最后登录
2018-4-11
发表于 2016-1-18 14:58:26 | 显示全部楼层 |阅读模式

转载请注明出处:https://www.eefocus.com/constyu/blog

在开发调试过程中,通过串口输出浮点数是个很常见的应用,但在SDK1.3默认不能打印浮点数(原因或许是考虑到生成文件的大小),那具体如何使能浮点打印呢?在community有很多人问到这个问题,回答也是五花八门,但往往都需要修改底层源文件。

回答这个问题之前,有必要先讲一下SDK中大写的PRINTF和小写printf的区别:

  • 大写的PRINTF相当于是SDK自己实现的输入输出函数debug_printf,其实现代码位于utilities文件夹下的fsl_debug_console.c和printf_scan.c中。
  • 小写的printf调用的则是IAR或者KDS中标准输入输出库函数stdio.h中printf。

由于以上差异,使用不同的大小写的printf,打印浮点的设置方式自然也不一样。

1. 对于默认的大写的PRINTF,一步步跟踪其实现源代码,PRINTF->debug_printf->_doprint即可看到其在代码中实现了浮点打印,但是需要定义宏PRINTF_FLOAT_ENABLE。

于是,在IAR中添加该宏定义PRINTF_FLOAT_ENABLE,然后重新编译代码,从打印信息上可以看到能够打印出浮点数。

2. 对于小写的printf,由于其调用的是stdio标准库中的输入输出函数,所以其设置方法如下,然后重新编译,从打印信息上可以看到能够打印出浮点数。


我知道答案 目前已有3人回答
回复

使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2016-1-18 16:50:06 | 显示全部楼层
    我一直在手动处理浮点数。。。没有细细的研究过。。。
    感谢楼主。。。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2016-10-20 09:45
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    80

    主题

    1038

    帖子

    5

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    2223
    最后登录
    2023-11-20
    发表于 2016-1-19 08:43:09 | 显示全部楼层
    看看 Make下
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    59

    帖子

    0

    注册会员

    Rank: 2

    积分
    183
    最后登录
    2016-4-26
    发表于 2016-3-10 09:52:14 | 显示全部楼层
    学习了,不错啊
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-23 05:32 , Processed in 0.090890 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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