完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在我的 ESP8266 项目中,如果 MQTT 连接丢失并重新连接失败,几分钟后,我通过 ESP.restart() 重新启动 ESP8266。我真的不知道为什么会发生这种 MQTT 连接丢失(或 WiFi),但这将是另一个消息线程的主题(我的一些 ESP8266 每周 7 天每天 24 小时运行数月而没有任何 MQTT 连接丢失,其他人可能每月两次遇到这种连接中断)。
因此,在这种连接 MQTT 丢失且无法重新连接的情况下,我通过 ESP.restart() 重新启动了 ESP,通常问题由代码自行解决。伟大的!但不幸的是,我不时注意到这并没有正常发生。否则 ESP8266 不再响应 ping。在这种情况下,我将其关闭然后再打开,它会立即再次运行。请注意,此问题与此问题无关:您必须在串行闪存编程后关闭/打开电源(我知道这个问题)。 因此,我正在寻找能让我 100% 确定(如果 100% 可能)ESP8266 将(正确)重启的解决方案。我正在考虑用 ESP.reset() 替换 ESP.restart()。此外,此消息线程(viewtopic.php?f=32&t=9459&start=8 ) 提到了一个可能是我的问题,并建议以 DIO 模式而不是 QIO 模式进行闪存。 回答我的问题: 1. 关于 ESP.reset() 而不是 ESP.restart(),我目前使用 ESP.restart() 因为网络上提到的 ESP.restart 没有太多细节(我想每个人都在互相抄袭) () 比 ESP.reset() 更好,它可以保留已初始化的寄存器。但是哪个寄存器?我必须说我不明白这个问题,因为如果 ESP.reset() 就像一个开机,当你打开你的 ESP8266 时,你怎么会遇到问题?那么 ESP.reset() 是如何成为一个潜在问题的呢? 2. 我查看了 ESPclass 代码以查找 ESP.restart() 和 ESP.reset() 的作用。我发现 extern "C" void __real_system_restart_local (); void EspClass :: reset (void) { __real_system_restart_local (); } void EspClass :: restart (void) { system_restart (); esp_yield(); 我们在哪里可以找到有关 system_restart() 和 __real_system_restart_local() 功能的更多信息 ?3. 我们今天是否有关于此消息线程 ( viewtopic.php?f=32&t=9459&start=8 ) 建议的更多信息以及为什么闪烁 DIO 而不是 QIO 会取消一些非重启原因?最后,如果我只问一个问题,你会建议我用哪种方式来更确定 ESP 将在我通过代码决定时重新启动。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1106 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
460浏览 5评论
461浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 14:52 , Processed in 0.645303 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号