(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文章
1137瀏覽量
86023 -
編譯器
+關注
關注
1文章
1672瀏覽量
51592 -
變量
+關注
關注
0文章
616瀏覽量
29505
發布評論請先 登錄
相關推薦
熱點推薦
linux驅動通過uboot的變量實現掉電記憶
起因 今天項目有個新需求就是讓屏幕亮度在上電以后保持上次最后設置的值 我們的項目屏幕的初始化是在kernel里而不是uboot,kernel的驅動的加載是在根文件
Cyusb3014如何將固件中的數據保存到Cyusb附帶的EEPROM中?
你好,我正在為 Cyusb3014 開發固件。 我想將固件中的數據保存到 Cyusb 附帶的 EEPROM 中,然后將其插入主機,通過上層計算機從 EEPROM 讀取數據。 我該怎么辦? 謝謝
發表于 02-27 06:18
ATmega8掉電寫數據如EEProm編程實例
各位大俠:我想用ATmega8寫個掉電時把數據保存到ATmega8內部的EEprom內呢。小弟實力有限,還要麻煩各位大俠多多指點。小弟先謝謝了!
發表于 08-06 14:46
基于wince系統工控機掉電保護功能設計
秒鐘。側可以在有外電時把實時性比較高的數據保存在內存DDR里。獲得掉電發生時,在超級電容供電的2秒鐘里,把內存的一些重要的數據和現場運行狀態
發表于 08-16 15:49
實現數據的掉電保存是eeprom更好還是flash更好呢?
想要實現數據的掉電保存,現在由兩種方案,一種是硬件上加上eeprom,一種是用flash配置為eeprom。但是看了相關資料,flash只支持塊擦除,而
發表于 09-17 15:06
請問ADAU1452掉電保存或回寫EEPROM的問題
最近在摸索音效處理,想從ADAU1452開發入手,但是不知道能不能在僅有ADAU1452+AD1938+EEPROM配置下完成掉電音量保存,gpio狀態保存(例如聲道選擇保持,led狀
發表于 04-20 22:48
在keil里如何燒錄data flash數據的?
的 ?
2、在keil里如何燒錄data flash數據的?
3、在ICP里如何燒錄data flash數據的?看上圖選擇的是APROM而非data flash
4、如何判斷
發表于 06-13 07:48
單片機掉電檢測與保存
本文主要介紹了單片機掉電檢測與保存方法,單片機在正常工作時,因某種原因造成突然掉電,將會丟失數據存儲器(RAM)里的數據。用法拉電容可從容實
發表于 01-14 11:51
?1.1w次閱讀
如何掉電保存數據到EEPROM
我想在掉電時保存數據(3 個字節)到 EEPROM 中,用 BOD 掉電檢測,不知怎樣使用。望高手指點: 1. 在 BOOT 區設置好 BO
發表于 01-06 00:14
?51次下載
HarmonyOS應用開發:保存到變量
一、創建項目 二、示例代碼 // 變量始終保存在內存中getNum:function () { let num = 100; function add() { num += 1
如何讓變量在系統掉電時都保存到EEPROM里
評論