首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino闪存限制

Arduino闪存限制
EN

Stack Overflow用户
提问于 2013-02-28 11:37:42
回答 1查看 1.3K关注 0票数 1

我在阿迪诺·尤诺上有一个项目,我是用月食做的。AVR编译器给了我以下内容:

avrdude: 24348字节的闪存写入avrdude:验证闪存与SunAngles.hex: avrdude:从输入文件加载数据闪存数据SunAngles.hex: avrdude:输入文件SunAngles.hex自动检测到Intel十六进制SunAngles.hex :输入文件SunAngles.hex包含24348字节的闪存:读取片上闪存数据: 读取################################################## 100% 3.45s 核实..。验证了24348字节的闪存 阿夫杜德完成了。谢谢。

串行监视器不打印任何东西。如果我将项目设置为23999字节,那么串行监视器就能工作。我检查了Eclipse的串行监视器和Arduino IDE的串行监视器。他们也有同样的问题。在这个站点上,它说Arduino Uno有32 KB的闪存,0.5 KB用于引导加载程序。这是怎么回事?

在另一个问题上,有人说要使用serial.print(F(something));,他们给出了一个pgm的库。我该怎么做才能解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2013-02-28 17:02:31

别忘了内存的小尺寸,328的2KB。你可能就是快没内存了。我知道当它用完的时候,它就坐在那里。一开始,它看起来就像一个闪光边界问题。就像你的症状一样。

我建议读取自述文件库以获取FreeRAM从这个。它提到了"Serial.print“如何同时消耗内存和ROM.

我现在总是用

代码语言:javascript
复制
Serial.print(F("HELLO"));

对比

代码语言:javascript
复制
Serial.print("HELLO");

因为它节省内存,这对于lcd.print来说应该是正确的。我总是把一个

代码语言:javascript
复制
Serial.println(freeMemory(), DEC);  // Print how much RAM is available.

在代码的开头,要注意。注意到需要有足够的空间来运行实际的代码并对其进行递归。

F()现在是Arduino 1.0中的库存,它取代了库函数getPSTR()的需要。

最新的Arduino IDE还表明了对预期RAM使用的粗略估计。所以在avr-gcc中有一个转换。您还可以尝试使用avr 4.7.0而不是4.3.2 (Arduino的股票),因为它声称更优化。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15134565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档