iar中k60的sprintf函数的浮点型
sprintf(str,"%6.3f",4.123);LCD_P6x8Str(90,5,str);
最后就一直显示个 f 不知道为什么明显浮点就不认呀 貌似IAR的编译器 对sprintf支持的不够好 应该是IAR编译器的问题,查了相关资料,是说在option中设置一下:
General option中的library configuration ,libray 选为full
library option 中的printf formatter 选择为full。
原因如下:
根本原因在于库中的printf, sprintf等函数的版本问题,由于支持全格式的时候占用的代码量和堆栈空间比较大,一般编译器默认都是实现标准甚至是最小的版本。
在不同的平台上,几种不同的版本支持的格式不一样,举个例子:
1)最小版本的printf仅支持整形格式化转义符%d以及字符串。
2)标准版本的printf支持除浮点外的其他格式,比如hex等等
3)全版本的printf支持所有格式包括%f浮点
可以参考一下这个链接:
IAREWARM 6.30 sprintf函数转换浮点数时出错 :http://www.amobbs.com/thread-5182148-1-1.html 有这种问题,还真没注意,一直直接用sprintf() ,不过好像没用浮点数 。 受教啦 最好不用浮点数,占用堆栈空间比较大。 iar是自己实现的printf,不是标准库的. 正好遇到问题,printf不了浮点,在watch看的变量又奇怪 子鱼 发表于 2014-11-28 20:42
应该是IAR编译器的问题,查了相关资料,是说在option中设置一下:
General option中的library configuratio ...
给力解决了{:lol:} 还有就是除了设置上边那位所说的,设置完成后,如果用了野火的k60库要把他本身自带的sprintf函数屏蔽掉 把浮点转换成整数与小数分别显示 为啥我照3楼的做也不行 受教了,一般很少用到sprintf,都是自己做函数 谢谢分享,用到的时候注意了 编译器的问题啊。多谢3楼给出了好答案
页:
[1]