[分享]采用结构体和共用体配合的方式存储参数

2020-01-04 19:01发布

本帖最后由 bolizhicheng204 于 2018-3-30 10:20 编辑

经常用flash、EEROM保存参数。最笨的办法就是自己计算每一个变量的位置,一个个写入,这个办法效率极其低下,每次修改都要改 一大堆 东西。后来采用结构体和共用体配合的方式,效率高很多。其实论坛里很多人都用这个办法,我做了一些修改,特此分享。欢迎指正!
大概思路:结构体里面放置各种参数变量,在写一个共用体,把刚才的结构体和一个数组放一起,这样数组和结构体公用内存,其数据就可以相互访问了。
此处以芯片内部flash读写为例,见图
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
笨笨仔
1楼-- · 2020-01-07 18:21
不错,这个操作还是挺方便的
zjykymt
2楼-- · 2020-01-07 20:55
将结构体的指针强制转换成unsigned int *,存的时候直接使用word存,取的时候直接word取,在STM32上这么处理,结构体都会自动对齐的
at90s
3楼-- · 2020-01-07 21:43
norman33 发表于 2018-3-30 11:25
合体相关的细节:
  1)联合体的末尾有多少个填充单元
  2)联合体的各个成员如何对齐

结构体也有一样的问题。将结构体/联合体直接传到另外一个第三方独立编译的程序,都有可能遇到这些问题,包括用不同版本编译器编译出来的静态库/动态库,其他机器等等。
bad_fpga
4楼-- · 2020-01-08 01:40
 精彩回答 2  元偷偷看……
waymcu
5楼-- · 2020-01-08 02:12
学习了。
flash3g
6楼-- · 2020-01-08 06:10
取结构体地址直接强制类型转换不是更简单些?

一周热门 更多>