專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

KEIL 單片機(jī)的RAM 超出范圍處理

作者:小強(qiáng)   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月09日   【字體:

以前寫了一個(gè)測試程序,昨晚上想把測試程序在改進(jìn)時(shí)候,發(fā)現(xiàn)我多增加一個(gè)全局變量 unsigned int flag; //定義一個(gè)全局變量 ,燒寫到單片機(jī)。。單片機(jī)運(yùn)行時(shí)候。LCD 顯示就正常了。測量到的數(shù)據(jù)也顯示不了, 反復(fù)測試好多次, 發(fā)現(xiàn)問題就在這句: unsigned int flag; //定義一個(gè)全局變量 多定義一個(gè)就出現(xiàn)錯(cuò)誤。 我百思不得其解。。 最后我只有請(qǐng)教了一些朋友,一些有經(jīng)驗(yàn)的朋友很快就知道問題出在哪里了。 是單片機(jī)的RAM 不夠了。 因?yàn)槲业倪@個(gè)程序比較大,涉及全局變量用到的比較多,超出范圍了。KEIL有三種存儲(chǔ)模式SMALL,COMPACT,LARGE. 默認(rèn)存儲(chǔ)模式是SMALL , 默認(rèn)就把所有的變量都放在RAM里面,這樣訪問速度是最快,但是適合小程序, 我的RAM 只有1280字節(jié) 。是不夠的。所以要選擇large模式,該模式空間大,可存變量多,但是訪問速度相對(duì)于比較慢。 所以。。只要把 KEIL Memory Model 設(shè)置為:large 即可。

 

OK ,人多力量大。。 問題就這樣解決了。 所以,做個(gè)記錄。 讓看過這篇文章的人,下次遇到這樣問題,也可以試試這個(gè)方法。

關(guān)閉窗口

相關(guān)文章