[STM32F1] float型如何转化为字符型

[复制链接]
9121|70
linqing171 发表于 2017-9-26 21:16 | 显示全部楼层
你的watch里面为什么不把 Water_Flow_Now 也加进来让我们也开开眼界,看看是内存溢出还是数据类型错误。
zhazhahua 发表于 2017-9-26 21:31 | 显示全部楼层
IICeeprom 发表于 2017-9-26 13:12
他既然是把float转换为char类型的,不用强制转换,难道还有什么好的办法? ...

字符就是char型的,所以这样比较直接啊
 楼主| Cjy_JDxy 发表于 2017-9-27 08:35 | 显示全部楼层
linqing171 发表于 2017-9-26 21:16
你的watch里面为什么不把 Water_Flow_Now 也加进来让我们也开开眼界,看看是内存溢出还是数据类型错误。 ...

1.png



IICeeprom 发表于 2017-9-27 08:41 | 显示全部楼层
Cjy_JDxy 发表于 2017-9-26 17:22
不是四舍五入啊,直接就是0啊。我用的keil5.21。你用的是KEIL4还是5啊?难道是人品问题吗?

...

就是做四舍五入的
 楼主| Cjy_JDxy 发表于 2017-9-27 10:02 | 显示全部楼层
IICeeprom 发表于 2017-9-27 08:41
就是做四舍五入的

我是说我的不是啊
linqing171 发表于 2017-9-27 11:29 | 显示全部楼层

把map文件中的sprintf相关的复制,贴上来。看看函数库是不是调用错了。
 楼主| Cjy_JDxy 发表于 2017-9-27 11:59 | 显示全部楼层
linqing171 发表于 2017-9-27 11:29
把map文件中的sprintf相关的复制,贴上来。看看函数库是不是调用错了。

哪儿有MAP文件啊
ticomi 发表于 2017-9-27 16:18 | 显示全部楼层
Prry 发表于 2017-9-25 18:20
如果标准库函数都不好用,相信没多人能写出比标准库还高效率的函数了

我写的一个比标准库的效率高多了,但是不代表什么。标准库兼容考虑的事情太多了,而我的只需要把我需要的范围内的数据转换出来就可以了。适合的就是最好的,不一定一味追求标准库等等。
caijinbao2017 发表于 2017-9-27 19:47 | 显示全部楼层
学习了 谢谢
linqing171 发表于 2017-9-27 21:36 | 显示全部楼层

首先要确保编译成功了,在keil左边的工程文件列表上,双击就打开了。不要双击c文件,要双击第二级,也就是工程选项那级。
 楼主| Cjy_JDxy 发表于 2017-9-27 22:15 | 显示全部楼层
linqing171 发表于 2017-9-27 21:36
首先要确保编译成功了,在keil左边的工程文件列表上,双击就打开了。不要双击c文件,要双击第二级,也就 ...

CT001.rar (17.78 KB, 下载次数: 6)
谢谢!太多了,我把.map文件发上来了。
linqing171 发表于 2017-9-28 23:15 | 显示全部楼层
Cjy_JDxy 发表于 2017-9-27 22:15
谢谢!太多了,我把.map文件发上来了。

你把project -> Options -> Use MicroLib 的勾去了,用正常的库看看。
 楼主| Cjy_JDxy 发表于 2017-9-29 10:49 | 显示全部楼层
linqing171 发表于 2017-9-28 23:15
你把project -> Options -> Use MicroLib 的勾去了,用正常的库看看。

还是不行。
linqing171 发表于 2017-9-29 13:38 | 显示全部楼层

新建工程,里面只留最少的代码,复现此问题,把工程打包上传上来。国庆放假了,正好有时间给你看看。
 楼主| Cjy_JDxy 发表于 2017-9-30 08:59 | 显示全部楼层
linqing171 发表于 2017-9-29 13:38
新建工程,里面只留最少的代码,复现此问题,把工程打包上传上来。国庆放假了,正好有时间给你看看。 ...

我建了个最简单的工程。发现sprintf好用。崩溃
可是那个复杂的UCOS工程还是不行
linqing171 发表于 2017-10-6 20:03 | 显示全部楼层
Cjy_JDxy 发表于 2017-9-30 08:59
我建了个最简单的工程。发现sprintf好用。崩溃
可是那个复杂的UCOS工程还是不行 ...

不要新建,复制一份你的项目,在你项目里写个简单的例子,然后删你项目里面的代码。
 楼主| Cjy_JDxy 发表于 2017-10-7 09:58 | 显示全部楼层
RTU20170907_138@201709260500.rar (763.73 KB, 下载次数: 0)

项目用了UCOSII,sprintf用在main.c里,App_TaskGPRS|任务
static        void                App_TaskGPRS        (void         *p_arg)
{                                                                       
                p_arg = p_arg;
                Water_Flow_Now=123.45;
               
               
                sprintf(ASCII_Buffer,"%s",Water_Flow_Now);
                while(1)
                {               
                               
                                // ÇåÈí¼þ¼ÆÊýÆ÷ ////////////////////                                                       
                                OSTmr_Count_Start(&s_SWG.gprsCounter);
                                OSTimeDly(50);       
                }
}

Xy201207 发表于 2017-10-7 10:45 | 显示全部楼层
kingkits 发表于 2017-9-25 11:31
union
{
    float f_dat;

这个NB了
plsbackup 发表于 2017-10-7 17:05 | 显示全部楼层
sprintf这个可以用的。
kmzuaz 发表于 2017-10-7 17:05 | 显示全部楼层
对应位数有要求吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部