以下代码是我的 ESP32 上串行数据接收函数的一部分。如果我包含“ReceiveByteIndex++;”行esp32 重新启动。如果我排除该行,代码可以正常工作并且 esp32 可以正常工作。我尝试过不同的名称并移动线路。这是我已经使用了一百万次的一行代码,我不明白为什么它在这个函数中不起作用。任何建议将不胜感激。
const uint8_t RS485WindReadResponseLengthMax = 255;
uint8_t RS485ReceivedMessageRaw[RS485WindReadResponseLengthMax];
uint8_t ReceiveByteIndex= 0;
uint8_t IncomingByte = 0;
//
Serial1.begin(9600, SERIAL_8N1, SerialRXPin, SerialTXPin);
//
while (Serial1.available())
{
// Receive everything but only keep up to the maximum
IncomingByte = Serial1.read();
if (ReceiveByteIndex < RS485WindReadResponseLengthMax)
{
RS485ReceivedMessageRaw[ReceiveByteIndex] = IncomingByte;
// Increment if keeping hex
ReceiveByteIndex++;
}
}
如果我将“RS485WindReadResponseLengthMax”减少到< 50 it works. Now I have something to work on.
,这似乎与内存有关