(1)问:我需要把我所有的运行时状态变量在系统掉电时都保存到EEPROM里,我该怎么做?
答:这是不是要告诉编译器来建立一个连续的存储器块?
有两种方法你可以用来处理这个问题;我们假设只有一些确定的变量是需要保存的。最好的方法是声名这些变量为"persistent",例如:
persistent int fred;
这将会阻止启动代码把这些变量清零,并且这些变量会被放置到一个特殊的psect(在PIC里,你只能用bank0,所以不要对persistent使用bank1)。
这样,所有的'persistent'变量都将被放到一起,然后你可以通过下面的声明来得到这个psect的边界:
extern char _Lnvram[], _Hnvram[];
然后用下面的方式来使用:
write_to_eeprom(_Lnvram, _Hnvram-_Lnvram);
这样将会把psect的起始地址和长度传递给write_to_eeprom函数,当然你还需要做类似下面的声明:
void write_to_eeprom(char * start, unsigned char length)
你需要自己编写这个write_to_eeprom函数来把数据写入具体的EEPROM位置。对于PIC16C84你可以在这个函数里使用EEPROM_WRITE宏。
-
EEPROM
+关注
关注
9文章
1089浏览量
83957 -
编译器
+关注
关注
1文章
1663浏览量
50364 -
变量
+关注
关注
0文章
614浏览量
29026
发布评论请先 登录
linux驱动通过uboot的变量实现掉电记忆
Cyusb3014如何将固件中的数据保存到Cyusb附带的EEPROM中?
ATmega8掉电写数据如EEProm编程实例
基于wince系统工控机掉电保护功能设计
实现数据的掉电保存是eeprom更好还是flash更好呢?
请问ADAU1452掉电保存或回写EEPROM的问题
在keil里如何烧录data flash数据的?
单片机掉电检测与保存

如何掉电保存数据到EEPROM
HarmonyOS应用开发:保存到变量

评论