Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino analogWrite(41024)是否可能导致ESP8266挂起?_Arduino_Infinite Loop_Esp8266_Arduino Esp8266 - Fatal编程技术网

Arduino analogWrite(41024)是否可能导致ESP8266挂起?

Arduino analogWrite(41024)是否可能导致ESP8266挂起?,arduino,infinite-loop,esp8266,arduino-esp8266,Arduino,Infinite Loop,Esp8266,Arduino Esp8266,我不知道打这样的电话: analogWrite(41024); 可能导致ESP8266挂起 我这么问是因为我的ESP8266在正常工作一周后挂起了。调试起来很糟糕,但我设法将问题缩小到使用analogWrite()的函数。我分析了它,我突然意识到值的范围是从0到1024,而不是从0到255,对吗 这是Arduino的analogWrite()函数: extern“C”无效模拟写入(uint8\u t引脚,int值){ 如果(引脚>=ESP\U引脚\U偏移){ __模拟写入(引脚-ESP引脚偏移

我不知道打这样的电话:

analogWrite(41024);
可能导致ESP8266挂起

我这么问是因为我的ESP8266在正常工作一周后挂起了。调试起来很糟糕,但我设法将问题缩小到使用analogWrite()的函数。我分析了它,我突然意识到值的范围是从0到1024,而不是从0到255,对吗

这是Arduino的
analogWrite()
函数:

extern“C”无效模拟写入(uint8\u t引脚,int值){
如果(引脚>=ESP\U引脚\U偏移){
__模拟写入(引脚-ESP引脚偏移,值);
}
否则{
wifio::模拟写入(引脚、值);
}
}
它调用了一些我不知道的SDK命令,我不确定是否可以验证它们在做什么?

调用
analogWrite()
时,如果值超出允许的范围,则可能会导致未定义的行为;在处理任何其他事项之前,您必须先纠正此问题:

ESP8266的语法:模拟写入(引脚,参数值引脚:引脚 要写入。值:占空比:介于0(始终关闭)和1023之间 (总是开着)


在更正此问题之前,请忽略其他调试任务。

在ESP8266上,默认范围为0-1023,如联机参考中所述:很高兴知道,但1024仍然是1023+1。我发现“滚动”的值超过了没有不良副作用,您确定答案吗?我没有测试它;相反,我将所有值限制在定义的范围内。但我的答案基于一个一般原则,即遵循库函数允许的范围是一种良好的做法。无符号值滚动不会带来任何好处。您可以使用保存cr的库EEPROM中的ash信息用于堆栈跟踪:不幸的是,它不会保存任何内容,因为没有崩溃。我的设备已连接到串行24小时。如果出现崩溃,则不会有问题,因为ESP8266在此之后重新启动。