(1)問(wèn):我需要把我所有的運(yùn)行時(shí)狀態(tài)變量在系統(tǒng)掉電時(shí)都保存到EEPROM里,我該怎么做?
答:這是不是要告訴編譯器來(lái)建立一個(gè)連續(xù)的存儲(chǔ)器塊?
有兩種方法你可以用來(lái)處理這個(gè)問(wèn)題;我們假設(shè)只有一些確定的變量是需要保存的。最好的方法是聲名這些變量為"persistent",例如:
persistent int fred;
這將會(huì)阻止啟動(dòng)代碼把這些變量清零,并且這些變量會(huì)被放置到一個(gè)特殊的psect(在PIC里,你只能用bank0,所以不要對(duì)persistent使用bank1)。
這樣,所有的'persistent'變量都將被放到一起,然后你可以通過(guò)下面的聲明來(lái)得到這個(gè)psect的邊界:
extern char _Lnvram[], _Hnvram[];
然后用下面的方式來(lái)使用:
write_to_eeprom(_Lnvram, _Hnvram-_Lnvram);
這樣將會(huì)把psect的起始地址和長(zhǎng)度傳遞給write_to_eeprom函數(shù),當(dāng)然你還需要做類似下面的聲明:
void write_to_eeprom(char * start, unsigned char length)
你需要自己編寫(xiě)這個(gè)write_to_eeprom函數(shù)來(lái)把數(shù)據(jù)寫(xiě)入具體的EEPROM位置。對(duì)于PIC16C84你可以在這個(gè)函數(shù)里使用EEPROM_WRITE宏。
-
EEPROM
+關(guān)注
關(guān)注
9文章
1048瀏覽量
82362 -
編譯器
+關(guān)注
關(guān)注
1文章
1645瀏覽量
49465 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28568
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
linux驅(qū)動(dòng)通過(guò)uboot的變量實(shí)現(xiàn)掉電記憶
Cyusb3014如何將固件中的數(shù)據(jù)保存到Cyusb附帶的EEPROM中?
ATmega8掉電寫(xiě)數(shù)據(jù)如EEProm編程實(shí)例
基于wince系統(tǒng)工控機(jī)掉電保護(hù)功能設(shè)計(jì)
實(shí)現(xiàn)數(shù)據(jù)的掉電保存是eeprom更好還是flash更好呢?
請(qǐng)問(wèn)ADAU1452掉電保存或回寫(xiě)EEPROM的問(wèn)題
如何在掉電檢測(cè)中保存數(shù)據(jù)到EEPROM?
STM32系統(tǒng)中掉電保存數(shù)據(jù)的方法是什么
用戶設(shè)置的參數(shù)動(dòng)態(tài)信息保存方法有哪些呢
在keil里如何燒錄data flash數(shù)據(jù)的?
單片機(jī)掉電檢測(cè)與保存

如何掉電保存數(shù)據(jù)到EEPROM
HarmonyOS應(yīng)用開(kāi)發(fā):保存到變量

評(píng)論