本帖最后由 rindy 于 2017-9-2 11:53 编辑
假如有这样一个结构体数组,怎么存入flash呢,并且原样读写出来,之前只写过一些简单变量的存储与读写操作,不知道结构体怎么操作
struct User
{
char user_physical[20];
char user_custom[20];
char user_pa[20];
char user_flag;
};
struct User user1[60];//添加60条数据,现在要把这60条结构体数据存放到flash需要怎么操作?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
感觉你对指针的理解不是很够哦。你怎么说也是一个太阳了。
如另外一个老铁和你说的。flash操作都是页操作或者块操作。不过底层也是一个个字节写入的,(可以参考以下原子哥的EEPROM来理解一下)。这种函数的接口往往给的是buff,但是如果是结构体呢?其实用强制转换就可以了。
可以这么理解,结构体里面有u8、u16、u32的和数组的各种类型的。但是最基本的还是u8
如果你flash里面存的数据刚好每一个字节都是和我的结构体对齐,那么数据就不会乱的。
也就是你按什么类型存的,到时候按什么类型来取就可以了。(地址对齐)
举例说明。flash地址0到6 你存的是 0x11 0x22 0x33 0x44 0x55 0x66 0x77
(特别记住:这7个字节可以是任意类型拆分存进来的)
不同的取法,会得到不同的值。
如果你按照u8来去 那么打印的就是7个字节
如果你按照 u16来取 那么打印的就是0x1122 0x3344 0x5566 0x77??(注意大小端)
u32你自己想咯
这个又怎么理解呢? u8 buff[7]={0x11,0x22,0x33,0x44,0x55,0x66,0x77};
u16 *p; p=(u16 *)buff; printf("0x%04x ",*p++); 这个循环3次就越界了。
一周热门 更多>