在“if”语句中增加计数器时遇到问题

问题描述 投票:0回答:1

以下代码是我的 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++;
        }
      }
esp32
1个回答
0
投票

如果我将“RS485WindReadResponseLengthMax”减少到< 50 it works. Now I have something to work on.

,这似乎与内存有关
© www.soinside.com 2019 - 2024. All rights reserved.