消耗RAM的PROGMEM阵列

时间:2018-04-27 12:01:49

标签: arduino

我已经定义了(全局)大量的字符串数组:

const String opCodes[256]PROGMEM = {""...""}; // all 256 defined

然而,构建它现在比我添加阵列之前消耗的RAM多20%。

这是出乎意料的。为什么会这样?感谢

2 个答案:

答案 0 :(得分:2)

Arduino String object是一个动态字符串,与std::string非常相似。因此将其数据存储在RAM中的动态分配内存中。

如果您想将实际的字符串数据本身存储在PROGMEM中,那么Arduino PROGMEM reference将告诉您如何使用实际的字符数组来代替它。简而言之,创建存储在PROGMEM中的字符数组,然后创建指向字符串的const char *数组(也在PROGMEM中)。

答案 1 :(得分:0)

最后我决定不使用F()因为它的使用似乎有点怀疑。

一个可用的解决方法是使用{{1}}函数。这很有效。