如何方便的读写结构体到EEPROM中?

2020-02-06 10:09发布

f1946的片子,想写个结构体到eeprom中,但是
eeprom_write(unsigned char addr, unsigned char value);
只能写8位无符号数据,而我要操作的结构体却是有各种
数据的,例如long。

我不想用循环什么的一个字节一个字节读出来再
拼起来,或者把内存中的结构体打撒成为一个
字节一个字节的数据再写进去,感觉很繁琐,
有没有什么更好的办法?

别告诉我可以不使用eeprom_write等等函数,
直接用PC指针对EEPROM进行操作,那就太方便了!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
ly8008csko
1楼-- · 2020-02-06 21:04
进来学习一下
lmt50211
2楼-- · 2020-02-07 00:28
JYX2015 发表于 2015-11-9 13:47
我看懂了。你真帮了我大忙了,有再多结构体都不怕了,大大简化读写操作了。 ...

LZ能讲讲吗?让我等不知所以然的能看过透彻,多谢。。。
JYX2015
3楼-- · 2020-02-07 03:50
xwkm 发表于 2015-11-9 15:37
eeprom_write((uint8_t *)structx, sizeof(structx));

仔细想了想,没什么问题。反正我把指针变为8位一挪,然后挪
sizeof(结构体)那么多次写进EEPROM里面去。

但是不太敢用,怕出现意想不到的情况。
istars2005
4楼-- · 2020-02-07 05:09
 精彩回答 2  元偷偷看……
istars2005
5楼-- · 2020-02-07 07:50
banye2010 发表于 2015-11-9 12:57
struct sensor_rom_t
{
    unsigned int addr;   

不过有个问题,
结构体里面有不同类型的数据需要涉及到一个内存对齐问题,
如果采用共用体和结构体嵌套的话是不是会有一个内存浪费的问题?
xiaobendan
6楼-- · 2020-02-07 08:24
我觉得7楼的方法也可以啊

顺便问一下,前几天在论坛看到的那个文章,对于SIZEOF关键字的理解,好像里面的数据类型是有影响的,比如一个CHAR型的,返回是1,一个INT型的返回也是1。
一个有10个成员的CHAR数组,返回的是10,那么有10个成员的INT数组,返回的是10还是20呢?

一周热门 更多>