打印
[资料分享与下载]

Kinetis IAR工程下无法打印浮点的问题解决

[复制链接]
587|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mancherstun|  楼主 | 2015-9-27 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一,问题描述
大家在使用kinetis IAR工程,并且想使用printf打印出浮点变量的时候,会发现打出来的浮点结果只有f,而使用Keil工程就能够正确打印。网上有很多的说法,其中说的最多的就是设置IARLibrary options printf formatterfull功能,如下图:

1

但是,实际上就算选择了full功能,打印出来的浮点结果任然是f,比如定义如下:
float   temp=36.5;
printf("\ntemp=%f\n",temp);
实际打印出的结果是:
temp=f
发现在我们的KE系列,KL系列,部分K系列甚至KV系列,都会有这样的浮点打印问题。那么这个问题该如何解决呢?





二,解决方案
       其实根本原因是工程中common文件夹下的printf.c不支持浮点打印的原因。这里我会给大家两个文件,分别为read.cwrite.c来代替printf.c文件。
这里以KL25官方代码KL25_SC中的LQRUG_bme_ex1工程为例,讲解如何解决浮点问题,具体操作步骤如下:
1,将含有write.cread.c的文件夹semihosting拷贝到路径kl25_sc_rev10\klxx-sc-baremetal\src下,然后打开LQRUG_bme_ex1IAR工程。
2,选择工程的options->add->add group, 在工程中添加一个名为semihosting的文件夹。

2

3,选择工程的options->add->add files,选中第1步中添加的semihosting文件夹下的两个文件write.cread.c,并将它们添加到工程的semihosting文件夹中,添加完成后如下图:

3

相关帖子

沙发
西门扫雪| | 2015-9-27 21:21 | 只看该作者
这个解决方法挺棒的啊

使用特权

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

本版积分规则

35

主题

294

帖子

2

粉丝