DSP F28335如何使用串口进行多字节数据的接收

最近调试F28335芯片的串口,需要一次性接收多个字节的数据,求大神们帮忙看一下我写的多字节接收代码是不是有什么问题

void SCI_B_ReceiveBytes(char *RX)
{
    int i=0;
    do
    {
        i++;
        while(ScibRegs.SCIFFRX.bit.RXFFST !=1);
        RX[i] = ScibRegs.SCIRXBUF.all;
    }while( RX[i] != '\0');
}

i++ 放后面 放在赋值的后面 赋值完毕后再++
否则RX[0] 可能是初始化的0(\0)

/* 发送的字符串需要以尾零'\0'结束 否则不会停止接收(一直阻塞等待尾零) */
void sci_A_recv_String(){
    char recv_buff[128] = {0};
    int i = 0;
    for(i=0; i<sizeof(recv_buff)/sizeof(char); i++){
        while(SciaRegs.SCIFFRX.bit.RXFFST != 1);
        recv_buff[i] = SciaRegs.SCIRXBUF.all;
        if(recv_buff[i] == '\0'){
            break;
        }
    }
    sci_A_sendString("recv_buff[");
    sci_A_sendString(recv_buff);
    sci_A_sendString("]\r\n\0");
}

/* 发送的字符串需要以尾零'\0'结束 否则不会停止接收(一直阻塞等待尾零) */
void rs485_Recv_Str(void){
    DELAY_US(2);
    RS485_DIR_SET_L; // 拉低 接收消息
    ScibRegs.SCICTL1.bit.SWRESET = 0;
    DELAY_US(2);
    ScibRegs.SCICTL1.bit.SWRESET = 1;
    // Wait for inc character. Wait for RXRDY=1 for empty state
    // Get string
    int i = 0;
    for(i=0; i<sizeof(recv_msg)/sizeof(char); i++){
        while(ScibRegs.SCIRXST.bit.RXRDY != 1);
        recv_msg[i] = ScibRegs.SCIRXBUF.all;
        if(recv_msg[i] == '\0'){
            break;
        }
    }
    RS485_DIR_SET_H;
    DELAY_US(5);
    // 回显
    rs485_SendString("your enter is:[\0");
    rs485_SendString(recv_msg);
    rs485_SendString("]\r\n\0");
}

https://blog.csdn.net/zxtwzl/article/details/89765852

楼主这个问题怎么解决的?