arduino如何让变量只占用flash而不占用ram

以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();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容