你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F103的flash存储float变量,读取时只有整数部分

[复制链接]
那就地方iv 提问时间:2015-10-8 15:12 /
阅读主题, 点击返回1楼
1 收藏 3 评论21 发布时间:2015-10-8 15:12
21个回答
那就地方iv 回答时间:2015-10-9 09:45:46
wofei1314 发表于 2015-10-9 07:30
while( FLASH_ProgramWord( Addr , 13.12 ) != FLASH_COMPLETE ) ;
最好改为while( FLASH_ProgramWord( Add ...

谢谢你的回答,数组我也是定义成float型的,如右 float Data1W[2];

9楼的方法可行,我试过了。
那就地方iv 回答时间:2015-10-9 09:46:59
党国特派员 发表于 2015-10-9 01:14
虽然float和int在内存中都占用4个字节,但是你在调用 FLASH_ProgramWord( Addr , 13.12 )的时候,编译器会 ...

非常感谢,你的方法我试了一下,可行!
那就地方iv 回答时间:2015-10-9 09:51:41
wofei1314 发表于 2015-10-9 07:30
while( FLASH_ProgramWord( Addr , 13.12 ) != FLASH_COMPLETE ) ;
最好改为while( FLASH_ProgramWord( Add ...

感谢你的回答,while( FLASH_ProgramWord( Addr , 13.12f ) != FLASH_COMPLETE ) ;这样写法编译器报错!
11.png
22.png
那就地方iv 回答时间:2015-10-9 09:54:38
chifen 发表于 2015-10-8 17:05
FLASH_ProgramWord函数不是以float 方式做存储的,原型 FLASH_Status FLASH_ProgramWord(uint32_t Address, ...

谢谢,你的答复
JackieLaura 回答时间:2015-10-9 09:59:27
float乘多少倍后存int
stmcu.org.png
那就地方iv 回答时间:2015-10-9 10:02:54
JackieLaura 发表于 2015-10-9 09:59
float乘多少倍后存int

我觉得这样做有点繁琐
JackieLaura 回答时间:2015-10-9 10:05:25
那就地方iv 发表于 2015-10-9 10:02
我觉得这样做有点繁琐

这个应该最实用简单的方法了,精度基本上也不会有损失
stmcu.org.png
chifen 回答时间:2015-10-9 11:13:32
float i;
int j
i=13.12;
j=(i)*100;

while( FLASH_ProgramWord( Addr ,j ) != FLASH_COMPLETE ) ;  
试一下行不行
wofei1314 回答时间:2015-10-9 11:29:52
那就地方iv 发表于 2015-10-9 09:51
感谢你的回答,while( FLASH_ProgramWord( Addr , 13.12f ) != FLASH_COMPLETE ) ;这样写法编译器报错!
...

FLASH_ProgramWord这个函数的第二个参数你看看是啥?应该是不支持直接传float格式的,所以错误,可以这样
float val=13.12;
while( FLASH_ProgramWord( Addr ,(WORD *)(&val)) != FLASH_COMPLETE ) ;
liuxing4585 回答时间:2015-10-9 12:58:52
过来支持下!

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版