STM32串口传输中的数据接收处理问题

在使用stm32做激光测距的实验中,使用串口通信接收数据,所用的测距模块可以直接按照下图的串口传输格式发送9字节的数据。但是在接收数据的时候,将数据存入USART_RX_BUF[]后,为什么与传输格式中的数据不是一位对应一位了呢。比如不应该是USART_RX_BUF[0]=0x59,USART_RX_BUF[1]=0x59,USART_RX_BUF[2]=Dist_L...这样的对应关系吗?可是实际却是USART_RX_BUF[0]=0x59,USART_RX_BUF[1]=Dist_L,USART_RX_BUF[2]=Dist_H这样的对应格式。因为只有这样,才能正确显示数据。

相关代码如下

if(USART1->SR&(1<<5)) 
    {
        res=USART1->DR;
        if(res == 0x59)
        {
            index = 0;
            USART_RX_BUF[index]= res;
            distance = (USART_RX_BUF[1])|(USART_RX_BUF[2]<<8);
            amp=(USART_RX_BUF[3])|(USART_RX_BUF[4]<<8);
        }

我接触单片机没多久,可能问题比较低级...但是查了很多资料也没有看到这种问题,搞不懂是怎么个原理,还请各位大神能帮忙看看,万分感谢!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^