在日常使用协议栈的过程中串口通信基本上是我们使用的比较多的,可以用于系统的调试信息的查看,也可以用于与其它可以通过串口的单片机进行通信,所以一个串口是难以满足我们的要求的,而在协议栈有给我定义好的串口函数,没有了解过的可以去看基于zigbee协议栈的串口通信(一)_没 名 字的博客-CSDN博客
在本次中是如何使用第二个串口,zigbee协议栈的一般使用的是串口0和串口1,在上一篇中所使用的是串口0,串口0的是P02和P03,串口1使用的是P04,P05.它的使用方法几乎和串口0一摸一样。首先是使用初始化函数进行初始化串口:
void UartInitPort1( halUARTCBack_t SerialCallBack )//配置USART1接到IOT模块
{
halUARTCfg_t uartConfig;
// configure UART
uartConfig.configured = TRUE;
uartConfig.configured =TRUE;//串口配置为真
uartConfig.baudRate =HAL_UART_BR_115200;//波特率为115200
uartConfig.flowControl =FALSE;//流控制为假
uartConfig.callBackFunc = SerialCallBack;//回调函数函数名
// start UART
// Note: Assumes no issue opening UART port.
HalUARTOpen( HAL_UART_PORT_1, &uartConfig );
}
然后编写回调函数,不使用也可以不写
void SerialCallBack(uint8 port,uint8 event)
{
unsigned char flag=0,j=0;
//HalUARTRead(0,uartbuf,1);
while (Hal_UART_RxBufLen(1)) //检测串口数据是否接收完成
{
HalUARTRead (1,&uartbuf2[j], 1); //把数据接收放到buf中
j++; //记录字符数
flag=1; //已经从串口接收到信息
}
if(flag)//收到数据了 收据全部收完了
{
IOT_RecdataPut(); //对模块接收到的数据进行处理
HalUARTWrite(0,uartbuf2,j); //将接收到的数据打印出来
IOT_Status.Reclen=j; //获取接收到的数据长度
}
}
然后就可以在Sampleapp_initl里面进行初始化函数的调用,就可以在后面使用串口1了
HalUARTWrite(1,"successful",osal_strlen("successful"));