非char类型在24c02中的存储

来源:互联网 发布:一厢情愿的感情知乎 编辑:程序博客网 时间:2024/05/16 18:49


在单片机开发时常常要将一些非char类型的数据存储在外部存储器中,而常用的就是EEPROM(24cxx)

24cxx在存储的过程中是以字节为单位进行读写操作的,当我们要保存一些非char类型的时候就很尴尬了,那么当遇到这种情况时该怎么办呢?

首先我们要将一些复杂的数据类型转换成字节形式,比如将float类型转换为4个char类型,那么怎么转换及简单又高效呢?


union 联合体


union cov{ float a; u8 b[4];}D;

比如我要讲一个float类型的数据写入24cxx中用到函数:

void AT24CXX_Write_Float(u16 WriteAddr,float *pBuffer){    u8 i = 0;    union FB    {        float a;        u8 b[4];    }fb;        fb.a = *pBuffer;        for(i = 0; i < 4; i++)    {        AT24CXX_WriteOneByte(WriteAddr,fb.b[i]);        WriteAddr++;    }}
我要读出一个float类型的数据的时候用到的函数:

void AT24CXX_Read_Float(u16 ReadAddr,float *pBuffer,u16 NumToRead){    u8 i = 0;    union FB    {        float a;        u8 b[4];    }fb;    for(i = 0; i < 4; i++)    {        fb.b[i]=AT24CXX_ReadOneByte(ReadAddr);        ReadAddr++;     }     *pBuffer = fb.a;}

如有不对的地方,望指正。



0 0