NXP

ZIGBEE-通过协议栈实现串口功能

2019-07-12 12:35发布

在协议栈里加入串口功能,与基础实验实现的方法不同。            本文在协议栈(TI  z-stack 2.5.1a)中进行。   步骤如下: 1、串口初始化 2、登记任务号 3、串口发送 我们主要主要在 SampleApp.c 和 SampleApp.h 中添加代码。   第一步:串口初始化      配置串口号、波特率、流控、校验位等。      协议栈下在 workspace 下找到HALTargetCC2530EBdrivers 的 hal_uart.c 文件,我们可以看到里面已经包括了串口初始化、发送、接收等函数。       看 workspace 上的 MT 层,包括 MT_UART.C ,MT_UartInit()函数等等。我们可以选用 MT 层配置和调用其他驱动。进一步简化操作流程。       打开APP目录下的 OSAL_SampleApp.C 文件,找到 osalInitTasks()任务初始化函数中的 SampleApp_Init()函数,进入这个函数,在 SampleApp.c文件中。我们在SampleApp_Init()函数中加入MT 串口初始化代码。   1.在 SampleApp.c--SampleApp_Init()函数中加入 :     MT_UartInit();//串口初始化函数。 2.进入MT_UartInit();         修改自己想要的初始化配置。    uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;//配置波特率。    uartConfig.flowControl  = MT_UART_DEFAULT_OVERFLOW; /*配置流控的。2 根线的通讯连接务必关流控,不然是永远收发不了信息的。*/   第二步:登记任务号 1.在 SampleApp.c--SampleApp_Init()函数中   加入语句: MT_UartRegisterTaskID(task_id);//登记任务号 。 作用是把串口事件通过 task_id 登记在 SampleApp_Init();里面。   第三步:串口发送 语句: HalUARTWrite(0,”Hello World ”,12); //(串口 0,‘字符’,字符个数。) 提示:需要在 SampleApp.c 这个文件里加入头文件语句:  #include  “MT_UART.h” 发现 Hello World 后面有一小段乱码。这是 Z-stack MT 层定义的串口发送格式,还有液晶提示信息。 详细的以后内容会讲述。如果不想要的可以在预编译地方把 MT 和 LCD 相关内容 注释。如: ZTOOL_P1 xMT_TASK xMT_SYS_FUNC xMT_ZDO_FUNC xLCD_SUPPORTED=DEBUG xMT_TASK:表示没有定义 MT_TASK,也就是不定义了。   void SampleApp_Init( uint8 task_id ) { SampleApp_TaskID = task_id; SampleApp_NwkState = DEV_INIT; SampleApp_TransID = 0; /*********************串口初始化**************************************/ MT_UartInit();//串口初始化 MT_UartRegisterTaskID(task_id);//登记任务号 HalUARTWrite(0,"beginning! ",11); //(串口0,'字符',字符个数。) . . . . . . .}