STM32
登录
直播中
神之小风
12年用户
842经验值
私信
关注
[问答]
为什么用IAR开发STM32发现printf库不支持浮点数的的输出呢
开启该帖子的消息推送
STM32
Printf
IAR
为什么用IAR开发
STM32
发现printf库不支持浮点数的的输出呢?怎样去解决这个问题呢?
回帖
(1)
江松洁
2021-12-2 13:46:04
一、问题
使用 IAR 开发 STM32,发现无法通过 printf 重定向到串口打印出浮点数。代码如下:
输出结果如下:
可见,浮点数部分无法正常显示。
二、解决方法
这是由于 IAR 默认选择的 printf 库不支持浮点数的的输出。可在设置选项中修改。如下:默认使用 small,改为 auto 即可。
三、备注
在不修改设置的情况下,尝试过如下两种代码解决。一种是通过 sprintf 将浮点数转换成字符串输出,另一种是分解整数和小数部分,分别输出。第一种方法也是不可行的,只有分解可以。
代码如下:
/*
* cyang 2018/2/27
* mcu printf float value
*/
#include
void printf_float(float a)
{
char tmp[8]={0};
int i;
sprintf(tmp, "%f", a);
for(i=0; i<8; i++)
printf("%c", tmp
);
printf("n");
}
void PrintFloat(float value)
{
int tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;
tmp = (int)value;
tmp1=(int)((value-tmp)*10)%10;
tmp2=(int)((value-tmp)*100)%10;
tmp3=(int)((value-tmp)*1000)%10;
tmp4=(int)((value-tmp)*10000)%10;
tmp5=(int)((value-tmp)*100000)%10;
tmp6=(int)((value-tmp)*1000000)%10;
printf("f-value=%d.%d%d%d%d%d%drn",tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6);
}
int main(int argc, char const *argv[])
{
/* code */
float a = 2.354954;
printf("a = %fn", a);
printf_float(a);
PrintFloat(a);
return 0;
}
一、问题
使用 IAR 开发 STM32,发现无法通过 printf 重定向到串口打印出浮点数。代码如下:
输出结果如下:
可见,浮点数部分无法正常显示。
二、解决方法
这是由于 IAR 默认选择的 printf 库不支持浮点数的的输出。可在设置选项中修改。如下:默认使用 small,改为 auto 即可。
三、备注
在不修改设置的情况下,尝试过如下两种代码解决。一种是通过 sprintf 将浮点数转换成字符串输出,另一种是分解整数和小数部分,分别输出。第一种方法也是不可行的,只有分解可以。
代码如下:
/*
* cyang 2018/2/27
* mcu printf float value
*/
#include
void printf_float(float a)
{
char tmp[8]={0};
int i;
sprintf(tmp, "%f", a);
for(i=0; i<8; i++)
printf("%c", tmp
);
printf("n");
}
void PrintFloat(float value)
{
int tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6;
tmp = (int)value;
tmp1=(int)((value-tmp)*10)%10;
tmp2=(int)((value-tmp)*100)%10;
tmp3=(int)((value-tmp)*1000)%10;
tmp4=(int)((value-tmp)*10000)%10;
tmp5=(int)((value-tmp)*100000)%10;
tmp6=(int)((value-tmp)*1000000)%10;
printf("f-value=%d.%d%d%d%d%d%drn",tmp,tmp1,tmp2,tmp3,tmp4,tmp5,tmp6);
}
int main(int argc, char const *argv[])
{
/* code */
float a = 2.354954;
printf("a = %fn", a);
printf_float(a);
PrintFloat(a);
return 0;
}
举报
更多回帖
rotate(-90deg);
回复
相关问答
STM32
Printf
IAR
为什么使用
IAR
开发
STM32
发现
无法通过
printf
重定向到串口打印出
浮点数
呢
2021-12-02
1710
rt-thread-studio
不支持
printf
打印
浮点数
要怎么添加编译选项?
2023-09-07
1994
为什么韦老师2440裸机lcd测试程序中
printf
不能
输出
浮点数
?
2019-07-16
1486
怎样去解决UCOS下
STM32
的
printf
无法发送
浮点数
的问题
2021-12-02
739
在选择硬件为e203的情况下,NuleciStudio IDE识别不了
浮点数
是为什么?
2023-08-11
541
如何解决SMT32CuBeIDE
printf
无法
输出
浮点数
的问题?
2021-12-01
1280
IAR
下STM8
用
printf
默认是不是
不支持
32位
输出
?
2023-10-16
390
STM8
支持
浮点数
除法运算吗?
2018-10-18
2073
怎么样更方便快速地将
浮点数
输出
到显示器件上
呢
2021-12-02
713
STM8
支持
浮点数
除法运算吗?
2018-10-12
6531
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分