乐鑫技术交流
直播中

李辉

7年用户 1338经验值
私信 关注
[问答]

esp32c3用按键长按3s进入配网模式,为什么还要重启模块?

按键长按3s之后先进入WiFi连接事件,发现连接不上才进入配网模式,这样时间就比较久了,配网重新清除存在nvs的WiFi信息,但为啥还要加重启函数呢?这是按键3s之后的程序:
//按键长按,清除配网信息并重启printf( "key long pressn"');
ESP_ERROR_CHECK(nvs_flash_erase());
ESP_LOGI (TAG , "set Restart now. n");
esp_restart();
我如果没有添加esp_restart()函数,发现配网时一直重启,导致连不上WiFi,一添加esp_restart()函数,就会先进入WiFi连接事件,连不上才进入配网模式,我想要的是长按3s马上进入配网模块,不懂要添加esp_restart()函数之后才能配网。

回帖(1)

偶是糕富帅

2024-6-20 17:24:23
在ESP32C3中,使用按键长按3秒进入配网模式是一种常见的做法。在这个过程中,重启模块是一个重要的步骤,原因如下:

1. **清除状态**:重启模块可以确保所有的状态和配置都被清除,包括网络连接状态。这样可以避免在重新配置网络时出现冲突或错误。

2. **重置网络连接**:在长按3秒后,ESP32C3会尝试连接到之前存储在NVS中的WiFi网络。如果连接失败,它会进入配网模式。但是,如果不重启模块,ESP32C3可能会继续尝试连接到旧的网络,而不是进入配网模式。

3. **确保配置生效**:重启模块可以确保在清除NVS中的WiFi信息后,新的配置能够生效。如果不重启,ESP32C3可能会继续使用旧的配置,导致无法进入配网模式。

4. **避免无限循环**:如果不重启模块,ESP32C3可能会在尝试连接到旧网络和进入配网模式之间无限循环。这会导致设备无法正常工作。

综上所述,添加`esp_restart()`函数是必要的,因为它可以确保ESP32C3在长按3秒后能够正确地进入配网模式。如果不添加这个函数,设备可能会一直尝试连接到旧的网络,导致无法进入配网模式。

关于你提到的“长按3秒马上进入配网模块”,实际上,ESP32C3在长按3秒后会先尝试连接到之前存储的WiFi网络,如果连接失败,它才会进入配网模式。这是正常的流程,因为设备需要先尝试使用旧的配置,如果失败,再进行配网。这样可以避免在不必要的情况下重新配置网络。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分