Arduino ESP8266 之看门狗
#define LED_PIN D4 void setup() { //初始化串口 Serial.begin(9600); // put your setup code here, to run once: // 设置管脚为输出模式 pinMode(LED_PIN,OUTPUT); // 初始化时设置为高电平熄灭LED digitalWrite(LED_PIN, HIGH); } void loop() { // put your main code here, to run repeatedly: // 点亮LED if(Serial.available()) { char ch= Serial.read(); Serial.print(ch); if(ch=='a'){ digitalWrite(LED_PIN, LOW); }else if(ch=='b'){ // 熄灭LED digitalWrite(LED_PIN, HIGH); }else{ } } }
看门狗:
参考:https://www.arduino.cn/thread-84125-1-1.html
https://www.arduino.cn/thread-74482-1-1.html
ESP8266的看门狗,默认就是开启的,ESP.wdtEnable(uint32_t time_ms),ESP.wdtDisable(), ESP.wdtFeed()
默认就是开启的
ESP.wdtEnable(uint32_t time_ms) //ESP.wdtEnable(WDTO_4S); //打开看门狗 4秒重启
// 0=15(16)ms, 1=30(32)ms,2=60(64)ms,3=120(128)ms,4=250ms,5=500ms
// 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec
0、WDTO_15MS: 看门狗定时器15ms超时
1、WDTO_30MS: 看门狗定时器30ms超时
2、WDTO_60MS:看门狗定时器60ms超时
3、WDTO_120MS: 看门狗定时器120ms超时
4、WDTO_250MS: 看门狗定时器250ms超时
5、WDTO_500MS: 看门狗定时器500ms超时
6、WDTO_1S: 看门狗定时器1S超时
7、WDTO_2S: 看门狗定时器2S超时
8、WDTO_4S: 看门狗定时器4S超时
9、WDTO_8S: 看门狗定时器8S超时
ESP.wdtDisable() //关闭看门狗
ESP.wdtFeed( ) //喂狗
要是想复位 直接 ESP.restart() 复位参考
ESP8266有两种重启方法,分别为:ESP.reset()和ESP.restart(),很多人代码中都用ESP.reset()重启,但是通常情况下使用ESP.restart()会更好,
这两者区别如下:
ESP.reset()是一个硬复位,这种重启方式可能会使一些寄存器回归到原始状态,即丢失寄存器数据,这会导致重启后的程序出现问题,它或多或少像计算机上的复位按钮。
ESP.restart()是通过向ESP8266的SDK发送信号重启,而不是简单粗暴的复位,所以它是一个更‘软’的重启方式。
所以,把你代码中的ESP.reset()换成ESP.restart()吧!