正文
最近刚刚入手使用esp8266, 但是在驱动步进电机的过程中出现了esp8266 自动重启问题, 具体表现为串口助手不断输出错误信息, 如下
显然是由于长时间没有喂狗导致的看门狗复位, 原因是在loop函数中长时间执行电机驱动函数, 所以添加了喂狗函数,如下
ESP.wdtFeed();
所以在需要在loop函数中执行较长时间的代码需要注意这个问题, 及时喂狗
NOTE
应当注意的是 delay 函数和 delayMicroseconds 函数之间的区别, 长时间执行 delay 函数不会出现复位, 但是长时间执行 delayMicroseconds 函数则会导致复位, 如下:
void loop(){
/*会导致复位*/
for(int i=0; i<10000; i++){
delayMicroseconds(1000);
}
}
void loop(){
/*不会导致复位*/
for(int i=0; i<10000; i++){
delay(1);
}
}
推测 delay 函数内部有喂狗机制, 而 delayMicroseconds 没有这个机制
如果帮助到了你顺手点个赞吧!😀