yuanhaoliang 发表于 2014-12-11 16:36:16

请问在Serial.println()里用F(),F()是什么意思哦?


http://arduino.cc/en/Serial/Print

You can pass flash-memory based strings to Serial.print() by wrapping them with F(). For example :
Serial.print(F(“Hello World”))

这句话里说的F()函数是什么意思呢?用和不用有什么区别?

Super169 发表于 2014-12-11 16:58:43

如果加上 F(), 當中的 string 會放到 flash memory 中, 而不會佔用 SRAM.
因為 arduino 中的 SRAM 非常珍貴, 相對而言 flash memory 比較充足.
由於該 string 在封行中是不會改變的, 放到 flash memory 中可以節省 SRAM 的使用.
對 flash memory 的存取可能會比 SRAM 略為慢一點, 而且 flash memory 中的資料在程式執行時是不能更改的, 但對於一些比較長的 string constant, 一般都建議放到 flash memory 中.

Super169 发表于 2014-12-11 17:02:08

如果你想看到分別, 可以在 compile 時, 看看資訊中dynamic memory的使用, 就會更加清楚.
在加上 F() 後,可以節省一定數量的 dynamic memory 使用量.

yuanhaoliang 发表于 2014-12-11 21:33:40

Super169 发表于 2014-12-11 17:02 static/image/common/back.gif
如果你想看到分別, 可以在 compile 時, 看看資訊中dynamic memory的使用, 就會更加清楚.
在加上 F() 後 ...

原来如此,谢谢啊~
页: [1]
查看完整版本: 请问在Serial.println()里用F(),F()是什么意思哦?