
使用方法
在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控制)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)