|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
復(fù)位后ram數(shù)據(jù)丟不丟失探討 |
| 作者:blueboyjf 欄目:單片機(jī) |
有人說復(fù)位后不丟失,俺就寫個(gè)小程序測試一下: void main(void) { static unsigned CHAR data=0; sys_init(); putstr("\rSys is running"); data++; while(1) { WDR(); SWITCH(tmprecv) { case 'a':putint(data);tmprecv=0;break; case 'b':putstr("\rbbbb");tmprecv=0;break; case 's':while(1);break; case 'e':return; default:break; } } } 說明:tmprecv是串口中斷里接收的數(shù)據(jù),全局變量 程序運(yùn)行以后打印data是1,手動(dòng)外部復(fù)位以后還是1,串口輸入‘s’,看門狗復(fù)位動(dòng)作,打印data還是1。串口輸入‘e’,程序從main開始重新執(zhí)行,data還是1。 如果說ram數(shù)據(jù)沒丟失的話,程序重新運(yùn)行,變量地址改變了,對(duì)我們來說還是變了。是不是可以直接用指針訪問ram的絕對(duì)地址,這樣數(shù)據(jù)就可以找回來了? |
| 2樓: | >>參與討論 |
| 作者: hotpower 于 2005/6/28 14:46:00 發(fā)布:
+55aa |
|
| 3樓: | >>參與討論 |
| 作者: 51avr 于 2005/6/28 15:37:00 發(fā)布:
注意啟動(dòng)代碼的存在!!! 將data定義為局部變量,不初始化,第一次顯示的是一隨機(jī)數(shù),以后每次應(yīng)該是有規(guī)律的。 說明,我沒有測試,只是從理論上分析的。 void main(void) { unsigned CHAR data; // 不要用靜態(tài)變量。 sys_init(); putstr("\rSys is running"); data++; while(1) { WDR(); SWITCH(tmprecv) { case 'a':putint(data);tmprecv=0;break; case 'b':putstr("\rbbbb");tmprecv=0;break; case 's':while(1);break; case 'e':return; default:break; } } } * - 本貼最后修改時(shí)間:2005-6-28 15:47:24 修改者:51avr |
|
| 4樓: | >>參與討論 |
| 作者: blueboyjf 于 2005/6/28 17:20:00 發(fā)布:
to 51avr 老兄,您說對(duì)了。我試驗(yàn)了一下,確實(shí)是這樣的:) 能否理論上解釋一下? 非靜態(tài)變量不賦初值我能理解,但是靜態(tài)變量賦初值為什么不可以? * - 本貼最后修改時(shí)間:2005-6-28 17:26:50 修改者:blueboyjf |
|
| 5樓: | >>參與討論 |
| 作者: lb0021 于 2005/6/29 0:02:00 發(fā)布:
我這個(gè)問題在實(shí)際應(yīng)用中就是用“直接用指針訪問ram的絕對(duì)地址” 來解決,但是有點(diǎn)擔(dān)驚受怕的感覺,不過把“硬件堆棧的空間”設(shè)大,默認(rèn)是16級(jí),應(yīng)該會(huì)有部分空間空出來用來絕對(duì)尋址。(有待專家考究隱患) 關(guān)注本主題。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |