在使用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);
}
我接触单片机没多久,可能问题比较低级...但是查了很多资料也没有看到这种问题,搞不懂是怎么个原理,还请各位大神能帮忙看看,万分感谢!
不知道你这个问题是否已经解决, 如果还没有解决的话: