EEPROM.read(地址)和EEPROM[地址]有什么区别
What's the difference between EEPROM.read(address) and EEPROM[address]
我在 Arduino 上使用 EEPROM 来存储一些大的常量数组。我注意到 EEPROM.read(address) 和 EEPROM[address] 都适用于我的阅读。但是关于 EEPROM[address] 方法的文档很少。我也遇到过这种方法偶尔会导致内存崩溃。
EEPROM.read(地址) 长时间 运行 还没有完全测试。编译时确实需要更多存储空间 space。它在幕后的行为是否更安全?
EEPROM[地址] 将为您提供对 eeprom 单元格的引用,而 EEPROM.read(地址) 将为您提供该单元格的无符号字符值。
在这两种情况下,您都应确保您的地址有效。
确保地址 >= 0 且 < EEPROM.length()。
EEPROM.read(adress) ->Read the EEPROM (address starting form 0)and send its value as unsigned char.
EEPROM[adress] -> reference eeprom cell with address
要减小文件的大小,您可以使用 avr/eeprom 库,它具有用于 eeprom 使用的各种函数和宏。这是一个可靠的库并且经过了良好的测试。
avr/eeprom.h
示例代码
#include <EEPROM.h>
#include <avr/eeprom.h>
void Eepromclr();
void setup() {
Serial.begin(9600);
eeprom_write_byte((void*)0,12);
int x = eeprom_read_byte((void*)0);\
Serial.println(x);
Eepromclr();
eeprom_update_byte((void*)0,6);
int y = eeprom_read_byte((void*)0);
Serial.println(y);
}
void loop() {
}
void Eepromclr() {
for (int i = 0 ; i < EEPROM.length() ; i++) {
EEPROM.write(i, 0);
}
Serial.println("Eeprom is cleared");
}
我在 Arduino 上使用 EEPROM 来存储一些大的常量数组。我注意到 EEPROM.read(address) 和 EEPROM[address] 都适用于我的阅读。但是关于 EEPROM[address] 方法的文档很少。我也遇到过这种方法偶尔会导致内存崩溃。
EEPROM.read(地址) 长时间 运行 还没有完全测试。编译时确实需要更多存储空间 space。它在幕后的行为是否更安全?
EEPROM[地址] 将为您提供对 eeprom 单元格的引用,而 EEPROM.read(地址) 将为您提供该单元格的无符号字符值。
在这两种情况下,您都应确保您的地址有效。
确保地址 >= 0 且 < EEPROM.length()。
EEPROM.read(adress) ->Read the EEPROM (address starting form 0)and send its value as unsigned char.
EEPROM[adress] -> reference eeprom cell with address
要减小文件的大小,您可以使用 avr/eeprom 库,它具有用于 eeprom 使用的各种函数和宏。这是一个可靠的库并且经过了良好的测试。 avr/eeprom.h
示例代码
#include <EEPROM.h>
#include <avr/eeprom.h>
void Eepromclr();
void setup() {
Serial.begin(9600);
eeprom_write_byte((void*)0,12);
int x = eeprom_read_byte((void*)0);\
Serial.println(x);
Eepromclr();
eeprom_update_byte((void*)0,6);
int y = eeprom_read_byte((void*)0);
Serial.println(y);
}
void loop() {
}
void Eepromclr() {
for (int i = 0 ; i < EEPROM.length() ; i++) {
EEPROM.write(i, 0);
}
Serial.println("Eeprom is cleared");
}