极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 26991|回复: 3

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

[复制链接]
发表于 2014-12-11 16:36:16 | 显示全部楼层 |阅读模式

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()函数是什么意思呢?用和不用有什么区别?
回复

使用道具 举报

发表于 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 中.
回复 支持 反对

使用道具 举报

发表于 2014-12-11 17:02:08 | 显示全部楼层
如果你想看到分別, 可以在 compile 時, 看看資訊中  dynamic memory  的使用, 就會更加清楚.
在加上 F() 後,  可以節省一定數量的 dynamic memory 使用量.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-11 21:33:40 | 显示全部楼层
Super169 发表于 2014-12-11 17:02
如果你想看到分別, 可以在 compile 時, 看看資訊中  dynamic memory  的使用, 就會更加清楚.
在加上 F() 後 ...


原来如此,谢谢啊~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-16 14:25 , Processed in 0.034055 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表