在协议栈里加入串口功能,与基础实验实现的方法不同。
本文在协议栈(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,'字符',字符个数。)
.
.
.
.
.
.
.}