以mega2560 为例,Flash有256k存储程序一类的,但是SRAM只有8k,默认的变量常亮是占用SRAM的,所以如果要存储很大的数据的时候就需要一些特殊的操作
额,其实官网都有说明了http://playground.arduino.cc/Main/PROGMEM
首先是引用文件
#include <avr/pgmspace.h>
然后申明的时候使用类似的格式,这里比较不常见的是多维数组第一个维度是不能声明的,而后面的是都要声明的。
const PROGMEM uint16_t charSet[][6][16][6]
然后就是使用的时候使用类似的语句
pgm_read_byte(&(charSet[0][1][0][0]));
pgm_read_word(&(charSet[0][1][0][0]));
这里因为我们声明的实惠类型是uint16,所以应该使用pgm_read_word();
网友评论