如何从 uart 接收超过 5 个字节?

How to receive more than 5 bytes from uart?

我正在尝试从 UART 接收数组,但我只接收到前 5 个字节。

我知道接收器缓冲区有 4 个字深,但我也需要接收其他字节。也许使用循环缓冲区,但我不知道如何使用它。

谁能帮我获取数组中的所有字节?

这是我当前的代码:

void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void) {
        IFS0bits.U1RXIF = 0; 

        int i = 0;
            while (U1STAbits.URXDA) {
                array[i] = U1RXREG;
                i++;
                if (i == 10) {
                    break;
                }
            }
    }

我正在将每个数组位置发送到 PC:

串行监视器

抱歉我的英语不好。

经过多次尝试,我成功了。

我正在为任何需要它的人分享正确的代码。

int k;


void __attribute__((__interrupt__, auto_psv)) _U1RXInterrupt(void) {
        IFS0bits.U1RXIF = 0;

        array[k++] = U1RXREG;


        if (k == 10) {
            k = 0;
        }

    }

示例

字节 1:'S':起始字节

字节 2:arrayByte[0]

字节 3:arrayByte[1]

.......

字节 11:arrayByte[9]

字节12:校验和(可能是所有发送字节总和的LSB)

如果接收到的字节是 'S'.
,接收方只会开始接收 在完全接收所有字节后,接收方必须再次计算校验和以确保没有丢失字节。