打印

打印浮点类型

[复制链接]
616|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ousj|  楼主 | 2020-9-2 22:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
PIC16F系列MCU用printf函数调试程序时能否打印浮点类型,如果能需要怎样配置?

使用特权

评论回复
沙发
dingy| | 2020-9-2 22:12 | 只看该作者

什么意思?不是很明白你说的什么,能再解释一下这个现象吗

使用特权

评论回复
板凳
ousj|  楼主 | 2020-9-2 22:16 | 只看该作者
例如  printf("a = %f\r\n",a); a是浮点型,当是%f编译就会出错,改为%d就能正常编译

使用特权

评论回复
地板
guoyt| | 2020-9-2 22:22 | 只看该作者
报错信息?

使用特权

评论回复
5
ousj|  楼主 | 2020-9-2 22:25 | 只看该作者
0:: error: (1347) can't find 0x22F words (0x22f withtotal) for psect "text20" in class "CODE" (largest unused contiguous range 0x208)

使用特权

评论回复
6
ousj|  楼主 | 2020-9-2 22:29 | 只看该作者
Non line specific message::: advisory: (1493) updated 32-bit floating-point routines might trigger "can't find space" messages appearing after updating to this release; consider using the smaller 24-bit floating-point types

使用特权

评论回复
7
wangzsa| | 2020-9-2 22:32 | 只看该作者
包含头文件#include <stdio.h> 试试看?

使用特权

评论回复
8
wangpe| | 2020-9-2 22:35 | 只看该作者

#include <math.h>
#include <stdio.h>
/* Print acos() values for -1 to 1 in degrees. */
void
main (void)
{
    float i, a;
    for(i = -1.0; i < 1.0 ; i += 0.1)
   {
       a = acos(i)*180.0/3.141592;
       printf(“acos(%f) = %f degrees\n”, i, a);
    }
}
参考这个例子看看?

使用特权

评论回复
9
guoyt| | 2020-9-2 22:38 | 只看该作者
#include <math.h>
#include <stdio.h>
/* Print acos() values for -1 to 1 in degrees. */
void
main (void)
{
    float i, a;
    for(i = -1.0; i < 1.0 ; i += 0.1)
   {
       a = acos(i)*180.0/3.141592;
       printf(“acos(%f) = %f degrees\n”, i, a);
    }
}
参考这个例子看看?

使用特权

评论回复
10
ousj|  楼主 | 2020-9-2 22:45 | 只看该作者
这个肯定是包含过的

使用特权

评论回复
11
huanghuac| | 2020-9-2 22:47 | 只看该作者
用%d的时候编译没错?

使用特权

评论回复
12
chenho| | 2020-9-2 22:51 | 只看该作者
怀疑是不是不支持浮点

使用特权

评论回复
13
dingy| | 2020-9-2 22:54 | 只看该作者
输出信息已经写了,使用24位浮点类型

使用特权

评论回复
14
zhanglli| | 2020-9-2 22:59 | 只看该作者

果然:
consider using the smaller 24-bit floating-point types

使用特权

评论回复
15
lium| | 2020-9-2 23:02 | 只看该作者
设置使用24位浮点类型:
把下面连接选项加到 XC8 Linker中
-fshort-float
Project properties -> XC8 Linker -> Additional options:  -fshort-float
选择C90库
Link in C Library -> C90

测试代码:
float x = 2.2;
printf("%f",x);
加入main.c中

使用特权

评论回复
16
pangb| | 2020-9-2 23:08 | 只看该作者
高效!!

使用特权

评论回复
17
ousj|  楼主 | 2020-9-2 23:12 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

评论回复
18
看别人照片| | 2020-9-3 09:30 | 只看该作者
printf("a = %f\r\n",a); a是浮点型,当是%f编译就会出错,改为%d就能正常编译。

使用特权

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

本版积分规则

712

主题

7557

帖子

1

粉丝