相關推薦
您可能對下面課程感興趣
Arduino視頻教程基礎篇

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

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

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

通常程序在調用變量時,會在RAM中分配一段存儲空間用于存儲該變量,Arduino的RAM資源有限,如果沒有合理利用,可能造成程序運行錯誤。
編譯器在編譯時也會預計RAM使用量,如若超出則會有如下提示:

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

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

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

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

使用方法如下:  

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

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

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

F() 宏函數(shù)

對于一些需要輸出的長文本字符串,可以使用Arduino提供的F()宏函數(shù),以達到和使用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"));

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

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

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

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