程序烧录进入后观察开发板 发现esp8266模块蓝灯间隔几秒后闪烁一次
我使用的是esp8266中SPI功能
#include <SPI.h>
#define CS 5
void setup() {
// put your setup code here, to run once:
SPI.begin();
SPI.beginTransaction(SPISettings(10, MSBFIRST, SPI_MODE0));
pinMode(CS, OUTPUT);
digitalWrite(CS, HIGH);
}
void loop()
{
int i = 0, j = 0;
byte flag = 0b00001010;
while(1)
{
digitalWrite(CS, LOW);
SPI.transfer(flag);
digitalWrite(CS, HIGH);
i++;
}
}
使用示波器查看SPI时钟波形
在程序loop()中添加delay()函数后示波器时钟波形在固定间隔几秒后两秒左右延迟的低电平持续
void loop()
{
int i = 0, j = 0;
byte flag = 0b00001010;
delay(2000);
while(1)
{
digitalWrite(CS, LOW);
SPI.transfer(flag);
digitalWrite(CS, HIGH);
i++;
}
}
分析发现虽然在while(1)执行了死循环,但是loop()依然在不断执行,原因为在死循环中没有喂狗语句,看门狗不断复位开发板,程序不断执行loop(),最简单的方法为在while中添加delay()方法,delay方法会自动喂狗
void loop()
{
int i = 0, j = 0;
byte flag = 0b00001010;
while(1)
{
digitalWrite(CS, LOW);
SPI.transfer(flag);
digitalWrite(CS, HIGH);
delay(100);
i++;
}
}
这样开发板就不会因为看门狗不断复位,正常的喂狗语句是
ESP.wdtFeed();
观察效果发现,蓝灯不再间隔闪烁,不断复位问题解决
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。