ZigBee学习——在官方例程上实现串口通信

Z-Stack版本为3.0.2
IAR版本为10.10.1

文章目录

  • 一、添加头文件
  • 二、定义接收缓冲区
  • 三、编写Uart初始化函数
  • 四、编写串口回调函数
  • 五、函数声明
  • 六、函数调用
  • 七、可能遇到的问题(function “halUartInit“ has no prototype)

以下所有操作都是在APP层进行,也就是这个文件

ZigBee学习——在官方例程上实现串口通信_第1张图片

一、添加头文件

因为要用到memset函数,所以需要添加头文件string.h

#include 

二、定义接收缓冲区

定义一个接收缓冲区,保存接收到的数据

unsigned char RxBuffer

三、编写Uart初始化函数

void halUartInit(void)
{
    halUARTCfg_t uartConfig;
    
    uartConfig.baudRate = HAL_UART_BR_115200;
    uartConfig.callBackFunc= UART_CBack;
    uartConfig.configured = TRUE;
    uartConfig.flowControl = FALSE;
    uartConfig.flowControlThreshold = 0;
    uartConfig.idleTimeout = 6;
    uartConfig.intEnable = TRUE;
    uartConfig.rx.maxBufSize = 128;
    uartConfig.tx.maxBufSize = 0;
    uartConfig.rx.pBuffer = RxBuffer;
    HalUARTOpen(HAL_UART_PORT_0,&uartConfig);
}

四、编写串口回调函数

接受完一次数据后,可以在这个函数里面做一些事,这里就是通过UART回传数据到串口助手

void UART_CBack(uint8 port,uint8 event)
{
    uint8 rxlen = Hal_UART_RxBufLen(HAL_UART_PORT_0);
    if(rxlen != 0)
    {
        HalUARTRead(HAL_UART_PORT_0,RxBuffer,rxlen);
        HalUARTWrite(HAL_UART_PORT_0,RxBuffer,rxlen);
        memset(TxBuffer,'0',128);		// 用完一次接收到的数据后清空缓冲区的数据
    }
}

五、函数声明

这个不用说的,或者你把上面两个函数放在调用它们之前,我是放在最后,所以才需要函数声明。

六、函数调用

ZigBee学习——在官方例程上实现串口通信_第2张图片

七、可能遇到的问题(function “halUartInit“ has no prototype)

解决方案:Error[Pa045]: function “halUartInit“ has no prototype

你可能感兴趣的:(ZigBee,Zigbee,UART,IAR)