1 问题描述
通过串口小助手1.3软件,走Uart通道,写到UART ReceivedBuffer中,出现写数据只能写入一位的问题。e.g. 串口发送0x00000190,在ReceivedBuffer中,只接收到了0x01,并且返回到串口小助手上的数据显示为0x90010000.
2 问题分析
出现问题的原因为:UART端接收数据时,按照低位在前,高位在后的顺序进行存储;
因此需要把UART端的数据转换成高位在前,低位在后的存储方式。(大小端互换)
3解决问题
对接收缓冲器中的数据进行一次大小端转换,转换代码如下:
//大小端转换
int bswap32(u32 x)
{
return (((u32)(x) & 0xff000000) >> 24) | \
(((u32)(x) & 0x00ff0000) >> 8) | \
(((u32)(x) & 0x0000ff00) << 8) | \
(((u32)(x) & 0x000000ff) << 24) ;
}
mid=bswap32(*ReceivedBuffer);