找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2981|回复: 4
收起左侧

想讨论一下如何把C语言结构体的数据高效的写入到24C02存储芯片

[复制链接]
ID:451718 发表于 2019-4-15 14:00 | 显示全部楼层 |阅读模式
20黑币
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,请不吝赐教。

回复

使用道具 举报

ID:451718 发表于 2019-4-16 13:50 | 显示全部楼层
如你所言, 代码该如何写。  本人指针这款有点蒙, 可否留下源码给我。谢谢!
回复

使用道具 举报

ID:479009 发表于 2019-4-16 01:10 | 显示全部楼层
直接将结构体地址传入EEPROM_WriteBuf函数啊。你转buf的行为叫做序列化。注意字节序和对齐问题就行了。本机自己读自己写就不用考虑字节序,大小最好用sizeof
回复

使用道具 举报

ID:123289 发表于 2019-4-15 15:41 | 显示全部楼层
高效:是指哪些方面?
回复

使用道具 举报

ID:451718 发表于 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);
}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表