一般来说,MCUXpresso IDE直接生成的项目都是无法输出浮点数的,无论是包含哪个头文件、使用sprintf事先转化或者使用printf直接输出,都是为空。
原因是MCUXpresso IDE默认创建的工程基于Redlib,这是一个精简的库,不包含这部分功能,具体可以看下面这片帖子:
如何使用MCUXpresso IDE和LPCOpen库创建一个新项目
解决这个问题有以下两个途径。
(一)使用newlibnano库
newlibnano是一个更加完备的库,拥有浮点输出的配置:
设置为newlibnano后,输出float的选项就变成可选。
(二)自定义一个ftoa函数
使用Redlib目的就是使代码精简,自定义一个ftoa把float转化为char字符串输出,可以避免使用庞大的newlib库
- void float_to_str(char *str,double num)
- {
- int high;//float_整数部分
- double low;//float_小数部分
- char *start=str;
- int n=0;
- char ch[20];
- int i;
- high=(int)num;
- low=num-high;
- while(high>0){
- ch[n++]='0'+high%10;
- high=high/10;
- }
- for(i=n-1;i>=0;i--){
- *str++=ch[i];
- }
- num -= (int)num;
- double tp = 0.1;
- *str++='.';
- while(num > eps){//精度限制
- num -= tp * (int)(low * 10);
- tp /= 10;
- *str++='0'+(int)(low*10);
- low=low*10.0-(int)(low*10);
- }
- *str='\0';
- str=start;
- }
复制代码
但是该函数有缺点,输出的末尾不精准。
|