Z-Stack中串口发送接收的流程

Z-Stack中串口发送接收的流程

ID:44811989

大小:202.68 KB

页数:17页

时间:2019-10-29

Z-Stack中串口发送接收的流程_第1页
Z-Stack中串口发送接收的流程_第2页
Z-Stack中串口发送接收的流程_第3页
Z-Stack中串口发送接收的流程_第4页
Z-Stack中串口发送接收的流程_第5页
资源描述:

《Z-Stack中串口发送接收的流程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Z-Stack中串口发送接收的流程   串口接收发送数据有两种方式,一种是中断的模式,另一种是DMA方式,这里主要以中断的方式,来看一下使用串口来发送,接收数据的整个流程。这里以SerialApp例程为例子。  在mian函数中的调用HalDriverInit();函数,在函数中初始化串口,主要是配置管脚和DMA通道voidHalDriverInit(void){.................................../*UART*/#if(definedHAL_UART)&&(H

2、AL_UART==TRUE) HalUARTInit();#endif....................................} 从程序中可以看出要想使用协议栈中串口,初始化串口必须定义HAL_UART和HAL_UART TRUE在hal_board_cfg.h文件中。#ifndefHAL_UART#if(definedZAPP_P1)

3、

4、(definedZAPP_P2)

5、

6、(definedZTOOL_P1)

7、

8、(definedZTOOL_P2)#defineHAL_UARTTR

9、UE#else#defineHAL_UARTFALSE#endif/*ZAPP,ZTOOL*/#endif/*HAL_UART*/   然后在osal_start_system()开始系统后,会调用Hal_ProcessPoll()来读取时间和串口。   在CC2430的数据手册中有这样一段话。DatareceptionontheUARTisinitiatedwhena1iswrittentothe UxCSR.REbitTheUARTwillthensearchforavalidstartbi

10、tontheRXDxinputpinandsettheUxCSR.ACTIVEbithigh.Whenavalidstartbithasbeendetectedthereceived byteisshiftedintothereceiveregister.The UxCSR.RX_BYTEbitissetandareceiveinterruptisgeneratedwhentheoperationhascompleted.Thereceiveddatabyteisavailablethrough

11、theUxBUFregister.WhenUxBUFisread, UxCSR.RX_BYTEisclearedbyhardware.   当有数据接收时,UxCSR.RE位将被置1,然后,UART将在RXDx的输入引脚上查找一个有效的开始位,当找到这个开始位时,将设置UxCSR.ACTIVE位为高电平。当一个有效的开始位被查找到,收到的字节将被移动到接收寄存器中。然后,UxCSR.RX_BYTE位设为1.并且,当这个接收操作完成后接收中断会被产生。接收到的数据可以通过操作UxBUF寄存器,当U

12、xBUF寄存器的数据被读出后,UxCSR.RX_BYTE位被硬件清除。串口发生中断首先调用中断的处理函数,这个是接收的中断函数。#ifHAL_UART_0_ENABLEHAL_ISR_FUNCTION(halUart0RxIsr,URX0_VECTOR){ cfg0->rxBuf[cfg0->rxHead]=U0DBUF;  if(cfg0->rxHead==cfg0->rxMax) {   cfg0->rxHead=0; } else {   cfg0->rxHead++; }}#endif 

13、  该中断函数主要是把U0DBUF寄存器,也就是接收到数据的寄存器,把数据读取来放到UART的结构体中的,cfg0->rxBuf[],中,这个数组的内存分配是在HalUARTOpen()函数中。SerialApp.c中有下面的定义#if!defined(SERIAL_APP_RX_MAX) #if(defined(HAL_UART_DMA))&&HAL_UART_DMA   #defineSERIAL_APP_RX_MAX 128 #else   /*ThegenericsafeRxminimu

14、mis48,butifyouknowyourPCAppwillnot    *continuetosendmorethanabyteafterreceivingthe~CTS,lowermax    *hereandsafeminin_hal_uart.ctojust8.    */   #defineSERIAL_APP_RX_MAX 64 #endif#endif SerialApp_Init()函数中有下面的赋值, uartConfig.rx.maxBufSize       =SERIA

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。