|
在我们的协议栈实验文件夹下面找到协议栈中串口基础实验,
具体路径《协议栈实验\2.协议栈中串口基础实验\ZStack-CC2530-
2.3.0-1.4.0\Projects\zstack\Samples\SampleApp\CC2530DB》,双
击
类型为 IAR IDE WorkSpace 的文件进入程序中。
本实验使用串口的步骤是:
(1) 串口初始化;
(2) 登记任务号;
(3) 执行任务;
下面是具体步骤:
串口初始化相信大家很熟悉,就是配置串口号、波特率、校验位、
数 据位、停止位等等。在基础实验我们都是配置好寄存器然后
使用。现在我们在 workspace 下找到176
HAL\Target\CC2530EB\drivers 的 hal_uart.c 文件,我们可以看
到里面已经包括了串口初始化、发送、接收等函数,全都封装好
了;我们只需根据自己需要修改相关配置,调用相应的接口函数
就,可使用串口了。
其具体初始化函数如下:
void MT_UartInit ()
{
halUARTCfg_t uartConfig;177
/* Initialize APP ID */
App_TaskID = 0;
/* UART Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;
uartConfig.flowControl =
MT_UART_DEFAULT_OVERFLOW;
uartConfig.flowControlThreshold =
MT_UART_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize =
MT_UART_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize =
MT_UART_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout =
MT_UART_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)
uartConfig.callBackFunc = MT_UartProcessZToolData;
#elif defined (ZAPP_P1) || defined (ZAPP_P2)
uartConfig.callBackFunc = MT_UartProcessZAppData;178
#else
uartConfig.callBackFunc = NULL;
#endif
/* Start UART */
#if defined (MT_UART_DEFAULT_PORT)
HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);
#else
/* Silence IAR compiler warning */
(void)uartConfig;
#endif
/* Initialize for ZApp */
#if defined (ZAPP_P1) || defined (ZAPP_P2)
/* Default max bytes that ZAPP can take */
MT_UartMaxZAppBufLen = 1;
MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;
#endif
}179
修改完配置参数之后,我们在 SampleApp_Init( uint8 task_id )函
数调用配置好的 MT_UartIn it ()函数;然后,记得在
SampleApp.c 文件开头的地方将图所示的头文件 include 进去。
用户自己添加的应用任务程序在 Zstack 中的调用过程是:
main() ---> osal_init_system()---> osalInitTasks()--->
SampleApp_Init()
下面是具体函数:
void SampleApp_Init( uint8 task_id )
{
SampleApp_TaskID = task_id;
SampleApp_NwkState = DEV_INIT;
SampleApp_TransID = 0;
MT_UartInit();//串口初始化
MT_UartRegisterTaskID(task_id);//串口登记任务号
}180
紧接着 MT_UartRegisterTaskID(task_id)函数,在其后面添加
函数 HalUARTWrite(0,"UartInit OK\n", sizeof("UartInit OK\n")),
也就是让系统执行这个任务了。至此,代码修改完毕。
|
|