节点使用协议栈Z-Stack 2.5,串口使用DMA的方式进行读写。
使用串口向外写没有问题,但是接收之后,总有乱码。而且每次的乱码还不一样。让楼主很是困惑。
以下是接收代码
// 这表示event事件不为空
if(event&(HAL_UART_RX_FULL|HAL_UART_RX_ABOUT_FULL|HAL_UART_RX_TIMEOUT))
{
// 读取出RX_Buffer中的数据
uint8 len = Hal_UART_RxBufLen(HAL_UART_PORT_0);
vPrintf("\r\n #%d#",len);
uint8 *pBuffer = ( uint8* )osal_mem_alloc(len*sizeof(uint8));
///////////////////////TODO//////////////////////////////////
uint8 rxLen = HalUARTRead(HAL_UART_PORT_0,pBuffer,len);
vPrintf("\r\n %s",pBuffer);
osal_mem_free(pBuffer);
}
使用串口调试助手发送ABCDE
下图是节点将接收到的数据通过串口打印出来的。
其中#5#是我将接收到的数据打印出来的。无论我发送什么数据,大部分情况下在数据的末尾都会出现一个乱码
我看串口的DMA读取方式中,将串口的接收大小为两个字节。不知道跟这个有关系么?如果有,那么又如何进行更改。
