Soft WDT reset ctx: cont ....原來 ESP8266 有看門狗計時器 (Watch Dog Timer), 程式會在 loop() 結束或是呼叫 delay() 時更新看門狗計時器, 如果很長一段時間沒有更新看門狗計時器, 就會啟動 reset 機制, 警告你程式某些地方有閒置過久的問題。舉例來說, 如果你在 ESP8266 上跑以下這個在 loop() 中閒置 10 秒的程式:
void setup() { Serial.begin(9600); Serial.println("Begin testing"); } unsigned long prevTime; void loop() { prevTime = millis(); while(millis() - prevTime < 10000); }就會在序列埠監控視窗中看到看門狗計時器 reset 的訊息:
解決的方法很簡單, 只要在閒置區域中呼叫 yield() 或是 delay(0) 就會更新看門狗計時器, 也就不會 reset 了。修改的程式如下:
void setup() { Serial.begin(9600); Serial.println("Begin testing"); } unsigned long prevTime; void loop() { prevTime = millis(); while(millis() - prevTime < 10000) {yield();} }










