1

我的 Arduino 上有一个 Web 服务器,它应该呈现一个表单以将一些数据保存到EEPROM。HTML 数据有大约1500字符。目前,我的代码如下所示:

[...]
  serverClient.println("HTTP/1.1 200 OK");
  serverClient.println("Content-Type: text/html");
  serverClient.println("Connnection: close");
  serverClient.println();
  serverClient.println("<!DOCTYPE html>");
[...]

我阅读了有关PROGMEM使用以下F关键字存储数据的信息:

[...]
  serverClient.println(F("HTTP/1.1 200 OK"));
  serverClient.println(F("Content-Type: text/html"));
  serverClient.println(F("Connnection: close"));
  serverClient.println();
  serverClient.println(F("<!DOCTYPE html>"));
[...]

但这需要更多的闪存。

使用第二种方式有什么好处吗?还是有更好的解决方案?

(我不能使用SD 卡来存储数据。)

4

1 回答 1

3

这是闪存使用和 RAM 使用之间的权衡,并且这些微控制器上的闪存比 RAM 多得多。

除非我的 Arduino 草图内存不足,否则我通常不会费心将字符串存储在闪存中。不幸的是,要判断一个草图是否需要比可用内存更多的内存并不容易 - 没有编译警告,事情就是行不通,或者你会得到奇怪的行为。在这种情况下,我会找到一些可以暂时缩短的数组,然后再次编译草图。如果事情表现得更好,我知道我在某个地方的 RAM 用完了,所以我会去寻找我能做的事情,PROGMEM或者考虑另一种使用更少 RAM 编写程序的方法。

于 2012-08-14T15:02:45.357 回答