basten820226 发表于 2006-8-31 19:29:10

怎样才能将浮点数正确写入EEPROM(M8)?

请高手指教,怎样才能将浮点数(比如说)比如说36.6666EEPROM(M8)?谢谢了
-----此内容被basten820226于2006-08-31,19:35:06编辑过

Edesigner 发表于 2006-8-31 19:54:57

结构、联合

marker 发表于 2006-8-31 20:01:06

用定点方法,如可以将36.6666转换成366666(0x05984A),分三个字节存储。这只是一种办法。楼主可以参考计算机内的定点小数的存储。

basten820226 发表于 2006-8-31 20:11:21

哦,谢谢楼上的兄弟,还有具体的参考资料么?

testcode 发表于 2006-9-1 06:23:31

/*****************************************************************************/

#include <avr/io.h>

#include <avr/eeprom.h>



double EE_double EEMEM = 1.235;



int main()

{

volatile double RAM_double1 = 36.6666;

volatile double RAM_double2 = 5.68;



eeprom_write_block((const void*)&RAM_double1, (void*)&EE_double, 4);

eeprom_read_block((void*)&RAM_double2, (void*)&EE_double, 4);



while(1);

return 0;

}

armoksb 发表于 2006-9-1 07:01:11

wuly 发表于 2006-9-1 10:07:48

4楼和我用的一样,感觉也没有问题

AuToCTRL 发表于 2006-9-1 10:18:28

GCC新兵,问个问题:double EE_double EEMEM = 1.235; 指向E2PROM的什么地址?如何计算?

basten820226 发表于 2006-9-2 12:59:33

谢谢各位,如果我想在程序源文件初始化EEPROM数据,可以这样么?(ICC环境)

#pragma data:eeprom

float n=36.6666

char table[]={0,1,2,3,4,5};

#pragma data:data

┅┅┅┅

float k;

EEPROM_READ((float)&n,k);

EEPROM_WRITE((float)&n,k);

初学AVR,请高手多多指教

luojiyin 发表于 2010-6-19 22:11:27

mark

cuikai12345 发表于 2010-6-19 22:24:24

mark

aureole 发表于 2010-6-21 00:35:51

联合体

oouu01 发表于 2010-6-21 09:30:28

36.6666
表示为浮点数:
设高位字节在左:4212AA99

float n=36.6666;
unsigned char table;

(float)table = n;

然后再把table数组一个个存入即可。
不同的环境下要区分大小端。

banalsheep 发表于 2011-3-25 00:18:41

如果浮点数是一个结构体的成员,上述方法好象不好用?(在STM32下)

shanhu1234 发表于 2013-3-4 14:39:48

用指针!
floatDf_k;
Df_k = 1.01;
I2C_EE_BufferWrite((uint8 *)&Df_k,12,4);//写模块漂移斜率Df_k的值;

Kidult 发表于 2013-3-25 10:58:33

testcode 发表于 2006-9-1 06:23 static/image/common/back.gif
/*****************************************************************************/

#include

#include



double EE_double EEMEM = 1.235;

这一句是啥意思呀?
页: [1]
查看完整版本: 怎样才能将浮点数正确写入EEPROM(M8)?