相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138484人學(xué)過

使用PROGMEM將數(shù)據(jù)存儲(chǔ)在Flash中
發(fā)布時(shí)間:2022-03-11 11:25 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 2812

將數(shù)據(jù)存儲(chǔ)在Flash中

通常程序在調(diào)用變量時(shí),會(huì)在RAM中分配一段存儲(chǔ)空間用于存儲(chǔ)該變量,Arduino的RAM資源有限,如果沒有合理利用,可能造成程序運(yùn)行錯(cuò)誤。
編譯器在編譯時(shí)也會(huì)預(yù)計(jì)RAM使用量,如若超出則會(huì)有如下提示:

項(xiàng)目使用了 11734 字節(jié),占用了 (36%) 程序存儲(chǔ)空間。最大為 32256 字節(jié)。
全局變量使用了2612字節(jié),(127%)的動(dòng)態(tài)內(nèi)存,余留-564字節(jié)局部變量。最大為2048字節(jié)。

相對(duì)于RAM空間,F(xiàn)lash雖然讀寫速度較慢,但存儲(chǔ)空間更大,當(dāng)項(xiàng)目遇到RAM空間不足時(shí),如果利用好更大的Flash空間,即可釋放出相應(yīng)的RAM空間。  

在本書LCD驅(qū)動(dòng)章節(jié),通過圖片取模獲得了一個(gè)較大的數(shù)組變量,示例中使用了PROGMEM定義了存儲(chǔ)圖片的變量,從而使該變量存儲(chǔ)在Flash中。

關(guān)鍵字PROGMEM是一個(gè)變量修飾符,使用該修飾符可實(shí)現(xiàn)將變量存儲(chǔ)在Flash空間內(nèi),而不占用RAM空間。  

使用方法如下:  

const 數(shù)據(jù)類型 變量名[] PROGMEM = {data0, data1, data3…};

需要注意的是,通常使用PROGMEM的變量,需要是全局變量。如果在局部變量中使用,需要添加static關(guān)鍵字,將變量定義為靜態(tài)變量,方法如下:

const static 數(shù)據(jù)類型 變量名[] PROGMEM = {data0, data1, data3…};

F() 宏函數(shù)

對(duì)于一些需要輸出的長(zhǎng)文本字符串,可以使用Arduino提供的F()宏函數(shù),以達(dá)到和使用PROGMEM一樣的效果。如:

Serial.print("Early to bed early to rise makes a man healthy wealthy and wise");

可修改為:

Serial.print(F("Early to bed early to rise makes a man healthy wealthy and wise"));

即可將變量存儲(chǔ)到Flash中,以節(jié)省RAM空間。

Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進(jìn)入購(gòu)買
文章評(píng)論
0 條評(píng)論 按熱度排序 按時(shí)間排序 /350
添加表情
遵守中華人民共和國(guó)的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138484人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動(dòng)化 影視動(dòng)畫 程序開發(fā) 網(wǎng)頁(yè)設(shè)計(jì) 會(huì)計(jì)課程 興趣成長(zhǎng) AIGC