如何在Zstack中使用串口

如何在Zstack中使用串口,第1张

使用方法

在MT包中,已经有了串口初始化即串口数据处理函数可用,关键的几个函数出现在

MT_Uartc文件中。我们拿出来几个关键函数说明一下(我捡重要语句注释):

第一个函数

void MT_UartInit ()

{  // 这个是MT中的一个串口初始化函数,主要作用是初始化串口工作的一些规矩

halUARTCfg_t uartConfig;

App_TaskID = 0; //处理串口数据的任务ID,可以先不管

uartConfigconfigured = TRUE;

uartConfigbaudRate = MT_UART_DEFAULT_BAUDRATE;

//默认38400波特率;可以更改,但是可能有新问题,具体解释内容比较多,我不说;

uartConfigflowControl = FALSE;//MT_UART_DEFAULT_OVERFLOW;

//禁止硬件流控,如果你的串口只有RXD,TXD和GND三条线,必须这么做;

uartConfigflowControlThreshold= MT_UART_DEFAULT_THRESHOLD;

uartConfigrxmaxBufSize  = MT_UART_DEFAULT_MAX_RX_BUFF;

uartConfigtxmaxBufSize  = MT_UART_DEFAULT_MAX_TX_BUFF;

uartConfigidleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;

uartConfigintEnable = TRUE;

#if defined (ZTOOL_P1) || defined (ZTOOL_P2)

uartConfigcallBackFunc  = MT_UartProcessZToolData;

//如果编译的时候选择使用ZTOOL,那么MT_UartProcessZtoolData将会处理串口接到的数

//据串

#elif defined (ZAPP_P1) || defined (ZAPP_P2)

uartConfigcallBackFunc = MT_UartProcessZAppData;

//如果编译的时候没有选择ZTOOL,而是选择使用了ZAPP,则由MT_UartProcessZAppData

//函数来处理串口数据串

(如果是用CC2530的P0口那两根串口引脚,你就要define ZTOOL_P1,如果是P1口的那

两根串口引脚,你就要define ZTOOL_P2,对于ZAPP_P1和ZAPP_P2也是一个情况)

#else

uartConfigcallBackFunc = NULL;

//这个地方,如果你有兴趣自己写一个串口处理函数,那么你实现一个My_UartProcessData

//函数,然后填到这里,替换NULL。

#endif

#if defined (MT_UART_DEFAULT_PORT)

HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);

//如果定义了默认串口,(0或者1),打开串口,这个HalUartOpen函数会做一大堆工作,具

//体说来就是初始化呗。。。,我没有必要展开。需要注意的是这个函数把前面哪一堆初始化

//的uartConfig做为参数传进去了噢!

#else

(void)uartConfig;

#endif

#if defined (ZAPP_P1) || defined (ZAPP_P2)

MT_UartMaxZAppBufLen = 1;

MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;

//这两句,如果是不想使用MT_UartProcessZToolData来处理串口数据,就。。。。

//再说就要深入串口机制了,网上讲解文章太多了,自己看吧,我一会儿使用

//MT_UartProcessZToolData。

#endif

}

第二个函数

void MT_UartRegisterTaskID( byte taskID )

{

App_TaskID = taskID;

}

第三个函数

void MT_UartProcessZToolData ( uint8 port, uint8 event )

osal_msg_deallocate ( (uint8 )pMsg );

}

我们往上看看这个Message是什么?MT_UartProcessZToolData函数开始不远的地方有以下程

序段:

if (pMsg)

{

pMsg->hdrevent = CMD_SERIAL_MSG;

pMsg->msg = (uint8)(pMsg+1);

pMsg->msg[MT_RPC_POS_LEN] = LEN_Token;

state = CMD_STATE1;

}

裸机控制、zstack控制点亮led灯方式的区别是应用流程不同,具以区别如下:

1、裸机控制点亮led灯是利用GPIO控制LED灯,通过GPIO管脚的地址控制。

2、zstack控制点亮led灯是编写程序,用HAL和Zmain的全部或部分代码,使用五向按键控制LED灯。

led灯是利用第四代绿色光源L做成照明灯具。L

以上就是关于如何在Zstack中使用串口全部的内容,包括:如何在Zstack中使用串口、两种方式点亮led灯方式的区别(裸机控制、zstack控制)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9562341.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存