今天继续不断的和Blinker磨合。
又遇新问题
还是昨天那个小项目,本来一直在BLYNK平台上写的,现迁移到Blinker上来,就遇到这个莫名其妙的问题,具体功能我在这里说一下:
1、在设备没有配置时,上电自动进入SmartConfig模式,当配置完成WIFI后,把配置完成的标志位置1,把SSID和password都存到EEPROM里。
2、然后软件重启动,或用户按了我自定义的RESET键就重新启动,重启动时首先读出EEPROM里的帐号和密码进行wifi连接,成功后进入工作模式。
我一直设置读写的ROM区从地址0开始的。每次读写都正常,在刚刚通过SmartConfig配置完成后,重启可以准确的在地址0处读到标识1。只是出现如下的提示。说明是我的ROM使用和Blinker重叠了,而且也的确出现当再次重启后,地址0的标志位就不再是1了,而是随机数了,说明这个地址0的位置 的数据的确会在过程 中被改写。提示如下
所以,我只好在程序 里把我要用的地址位拉高到4096或更高。结果却奇异的发现,怎么都 读写不正常上。不管是地址从4096开始,8192开始。每次写是第一个标志位flag=1,读出来都是0
下面是我的相关代码。而只要把地址改到0,就第一次读写一定全部正常上。写1,读出来也是1…
```cpp
#define BLINKER_WIFI
#define BLINKER_PRINT Serial
#include
#include
#include
#define RESETUP 5 //D1 INPUT_PULLUP 中断 重置和重启
#define DEFSSID "win-elf"
#define DEFPSK "4096"
#define EEPROMBase //Blinker 要占用0-1279??
char auth[] = "???";
//initializ EEPROM's address and variable
int RelativeAddress=0;
int flag; //whether users have inp