非char类型在24c02中的存储



在单片机开发时常常要将一些非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;
}

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值