标题: 想讨论一下如何把C语言结构体的数据高效的写入到24C02存储芯片 [打印本页]

作者: robinsonlin    时间: 2019-4-15 14:00
标题: 想讨论一下如何把C语言结构体的数据高效的写入到24C02存储芯片
c语言是弱项,对于结构体和指针也一直很头疼。
typedef struct
{
        unsigned int Tep;        //
        unsigned char Sec;
        unsigned int Hol;
}PPP;
extern PPP P11,P12,P13,P14,P21,P22,P23,P24;

void EEPROM_WriteBuf(unsigned char *buf, int count, unsigned int addr)
{
        while(count--)
        {
                EEPROM_ByteWrite(addr++,*buf++);
        }
}



想把如上结构体的内容写入到24C02,请不吝赐教。

作者: robinsonlin    时间: 2019-4-15 14:02
本帖最后由 robinsonlin 于 2019-4-15 17:40 编辑

24c02的接口已做好。尴尬了。这么久没有人能回帖。 找了半天资料, 勉强用空间换时间的方式解决了问题,但是总觉得不理想。把结构体先写入数组,然后再把数组写入24c02。如果哪位有更好的办法。 请不吝赐教。
void Put_PPP(PPP pp,unsigned int addr)
{
    Set_PPP(1);
    Ptemp=pp;
    unsigned char buf[4];
    buf[0]=Ptemp.Tep;
    buf[1]=Ptemp.Tep>>8;
    buf[2]=Ptemp.Sec;
    buf[3]=Ptemp.Hol;
    EEPROM_WriteBuf(buf,4,addr);
}


作者: yzwzfyz    时间: 2019-4-15 15:41
高效:是指哪些方面?
作者: Ahchi    时间: 2019-4-16 01:10
直接将结构体地址传入EEPROM_WriteBuf函数啊。你转buf的行为叫做序列化。注意字节序和对齐问题就行了。本机自己读自己写就不用考虑字节序,大小最好用sizeof
作者: robinsonlin    时间: 2019-4-16 13:50
如你所言, 代码该如何写。  本人指针这款有点蒙, 可否留下源码给我。谢谢!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1