如何使用Z-STACK协议栈串口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Z-STACK协议栈串口相关的知识,希望对你有一定的参考价值。

参考技术A 预编译 ZAPP_P1//这个是串口0
//MT层的串口使用
MT_UartInit(); //串口初始化
MT_UartRegisterTaskID(GenericApp_TaskID); //应用层登记
修改MT_UART.C文件
void MT_UartProcessZAppData ( uint8 port, uint8 event )

osal_event_hdr_t *msg_ptr;
uint16 length = 0;
uint16 rxBufLen = Hal_UART_RxBufLen(MT_UART_DEFAULT_PORT);
/*
If maxZAppBufferLength is 0 or larger than current length
the entire length of the current buffer is returned.
*/
if ((MT_UartMaxZAppBufLen != 0) && (MT_UartMaxZAppBufLen <= rxBufLen))

length = MT_UartMaxZAppBufLen;

else

length = rxBufLen;

/* Verify events */
if (event == HAL_UART_TX_FULL)

// Do something when TX if full
return;


// HalLedSet ( HAL_LED_2, HAL_LED_MODE_TOGGLE );
// HalLedBlink(HAL_LED_2 ,5 ,50,500);

if (event & ( HAL_UART_RX_FULL | HAL_UART_RX_ABOUT_FULL | HAL_UART_RX_TIMEOUT))

if ( App_TaskID )

/*
If Application is ready to receive and there is something
in the Rx buffer then send it up
*/
if ((length != 0))


/* Disable App flow control until it processes the current data */
// MT_UartAppFlowControl (MT_UART_ZAPP_RX_NOT_READY);
/* 2 more bytes are added, 1 for CMD type, other for length */
//这个信息没有删除
msg_ptr = (osal_event_hdr_t *)osal_msg_allocate( length + sizeof(osal_event_hdr_t) );
if ( msg_ptr )

msg_ptr->event = SPI_INCOMING_ZAPP_DATA;//这个是事件
msg_ptr->status = length;
/* Read the data of Rx buffer */

HalUARTRead( MT_UART_DEFAULT_PORT, (uint8 *)(msg_ptr + 1), length );
/* Send the raw data to application...or where ever */

osal_msg_send( App_TaskID, (uint8 *)msg_ptr );





产生事件 SPI_INCOMING_ZAPP_DATA
回到GenericApp_ProcessEvent处理函数
uint8 len = 0;
uint8* buf = NULL;
case SPI_INCOMING_ZAPP_DATA://仅仅进入一次,不断循环
len = MSGpkt->hdr.status;
buf = &(MSGpkt->hdr.status)+1;
HalUARTWrite(0, buf, len);
HalLedSet ( HAL_LED_2, HAL_LED_MODE_FLASH );
HalUARTWrite(0,"good\n",strlen("good\n"));

break;

以上是关于如何使用Z-STACK协议栈串口的主要内容,如果未能解决你的问题,请参考以下文章

Z-Stack串口通信使用心得

转TI Z-stack协议栈学习-添加新任务

Zigbee协议栈学习之串口透明传输

如何在Zstack中使用串口

Zigbee技术入门教程-号外基于Z-Stack协议栈的抢答系统

cc2530-----串口透明传输分析