比如现在我有u8,u16,u32的数据若干个,现在想把他们存到存到flash上,应该怎么存?
我想到的办法是:
1:一个一个的存,但是这样需要给每个变量赋一个地址,读取的时候也得返回来查看每个变量存储的地 址 ,感觉这样比较麻烦 ,数据多了就分配不过来了;
2:定义一个数组,将所有变量的数据存到数组,然后再一次性写入flash,那么这个数组该定义成什么样 的数据类型来适应u8,u16, u32的数据;
3:将这些数据定义成结构体,然后一次性存入flash,但是
void STMFLASH_Write(u32 WriteAddr,u16 *pBuffer,u16 NumToWrite);
void STMFLASH_Read(u32 ReadAddr,u16 *pBuffer,u16 NumToRead);
这两个函数是否可以写入读出结构体,尤其结构体里有不同的数据类型会不会数据丢失;
求大神帮忙解答一下,谢谢啦
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
正确结构体取址应该这样,5楼的强制转换应该为(u16*)&struct_obj;参考这个:struct_obj为结构体变量:
ee_24clxx_readbytes(0,(char*)&struct_obj,sizeof(struct_obj));
ee_24clxx_writebytes(0,(char*)&struct_obj,sizeof(struct_obj));
都可以,保持单字节对齐可以节省空间。
建议先去理解和掌握结构体内存对齐原则。
谢谢了,回答详细,以后多多向你请教
一周热门 更多>