我在阿迪诺·尤诺上有一个项目,我是用月食做的。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的库。我该怎么做才能解决这个问题?
发布于 2013-02-28 17:02:31
别忘了内存的小尺寸,328的2KB。你可能就是快没内存了。我知道当它用完的时候,它就坐在那里。一开始,它看起来就像一个闪光边界问题。就像你的症状一样。
我建议读取自述文件库以获取FreeRAM从这个。它提到了"Serial.print“如何同时消耗内存和ROM.
我现在总是用
Serial.print(F("HELLO"));对比
Serial.print("HELLO");因为它节省内存,这对于lcd.print来说应该是正确的。我总是把一个
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的股票),因为它声称更优化。
https://stackoverflow.com/questions/15134565
复制相似问题