查看: 3974|回复: 7

[分享] 【经验分享】Kinetis IAR工程下无法打印浮点的问题解决

[复制链接]

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-7-11 14:48:54 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-12-29 10:42 编辑


【经验分享】Kinetis IAR工程下无法打印浮点的问题解决
一,问题描述
大家在使用[url=https://www.freescale.co
m/zh-Hans/webapp/sps/site/homepage.jsp?code=KINETIS]kinetis [/url]
IAR工程,并且想使用printf打印出浮点变量的时候,会发现打出来的浮点结果只有f,而使用Keil工程就能够正确打印。网上有很多的说法,其中说的最多的就是设置IARLibrary options printf formatterfull功能,如下图:
1.jpg
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.jpg
2

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

回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 14:50:02 | 显示全部楼层

回复:【经验分享】Kinetis IAR工程下无法打印浮点的问题解决

 
4,去掉工程中common文件夹下的printf.c文件,如下:
4.jpg
4

 
5,在common.h的头文件中添加stdio.h,如下:
#include "stdio.h"
 
6,检查write.cread.c中的串口发送函数和工程驱动包中uart.c的定义是否一致,如果不一致需要修改成uart.c定义的形式。
经过上面的配置,加入浮点代码,就可以打印浮点数了。
同样如问题描述中的定义,打印出的结果如下:
temp=36.500000
 
可以看到以及能够成功打印。
其余的KEKKV的修改方法都是一样的,大家可以自行测试。
 
三,附件分享
为了防止大家在修改过程中出现问题,这里给大家一些参考工程,分别给出KL,KE,以及KV系列的,K系列的大家可以参考50M的代码:KINETIS_50MHZ_SC
 

KV_IAR_float.rar

607.38 KB, 下载次数: 49, 下载积分: 威望 1

semihosting.rar

2.04 KB, 下载次数: 42, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 14:50:47 | 显示全部楼层

回复:【经验分享】Kinetis IAR工程下无法打印浮点的问题解决

附件续:
 

【经验分享】Kinetis IAR工程下无法打印浮点的问题解决.pdf

291.49 KB, 下载次数: 38, 下载积分: 威望 1

KE_IAR_float.rar

244.69 KB, 下载次数: 31, 下载积分: 威望 1

KL25_IAR_float.rar

370.52 KB, 下载次数: 26, 下载积分: 威望 1

回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
 楼主| 发表于 2014-7-11 14:52:28 | 显示全部楼层

RE:【经验分享】Kinetis IAR工程下无法打印浮点的问题解决

如果大家有更好的方法,或者补充的,欢迎发帖讨论。
回复 支持 反对

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2014-7-14 09:23:35 | 显示全部楼层

RE:【经验分享】Kinetis IAR工程下无法打印浮点的问题解决

很好的经验分享,必须支持一下!
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

273

帖子

0

高级会员

Rank: 4

积分
718
最后登录
1970-1-1
发表于 2014-7-15 16:16:18 | 显示全部楼层

RE:【经验分享】Kinetis IAR工程下无法打印浮点的问题解决

谢谢斑竹分享,辛苦啊!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

1

帖子

0

新手上路

Rank: 1

积分
4
最后登录
2015-9-25
发表于 2015-9-25 11:35:31 | 显示全部楼层
版本好给力,新人露脸。
回复 支持 反对

使用道具 举报

该用户从未签到

12

主题

59

帖子

0

注册会员

Rank: 2

积分
123
最后登录
1970-1-1
发表于 2018-10-30 14:13:43 | 显示全部楼层
刚刚也遇到这个问题,谢谢分享!
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2024-5-2 13:22 , Processed in 0.136938 second(s), 27 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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