Z-stack串口的DMA模式简介.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Z-stack串口的DMA模式简介

协议栈串口的DMA模式 以下修改皆基于ZStack-CC2530-2.3.0-1.4.0版本: 串口的初始化 根据底板的引脚分配,我们用的是串口的UART0的Alt2方式。需要修改的地方: 将option里预编译选项,ZTOOL_P1改成ZTOOL_P2,使#define HAL_UART_DMA 2为真。 _hal_uart_dma.c的HalUARTInitDMA函数是对UART引脚以及寄存器的操作,修改如下: 在HAL_UART_DMA == 2情况下的 //#define HAL_UART_Px_RTS 0x20 // Peripheral I/O Select for RTS. //#define HAL_UART_Px_CTS 0x10 // Peripheral I/O Select for CTS. //屏蔽上两句,是因为该底板没有分配RTS和CTS的引脚 #define HAL_UART_PERCFG_BIT 0x01 // USART0 on P1, Alt-2; so set this bit. //这里是将串口设置为UART0的Alt2方式 #define HAL_UART_Px_RX_TX 0x30 // Peripheral I/O Select for Rx/Tx. //此处设置RX,TX引脚为P1_4,P1_5 在osal_init_system里osalInitTasks下MT_TaskInit的MT_UartInit(),是对串口的配置 但要将uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;改为 uartConfig.flowControl = FALSE;协议栈默认的流控制是TRUE。 串口的事件处理 //系统主循环 void osal_start_system( void ) { …… Hal_ProcessPoll(); // 串口与定时器轮询函数 …… } //定时器与串口轮询函数 void Hal_ProcessPoll () { ……. #if (defined HAL_UART) (HAL_UART == TRUE) HalUARTPoll(); #endif …… } //串口轮询函数 void HalUARTPoll( void ) { #if HAL_UART_DMA HalUARTPollDMA();//根据DMA的方式选择DMA的轮询方式 #endif …… } //DMA串口轮询函数 static void HalUARTPollDMA(void) { …… //以上是检查rxbuf里是否有数据写入,并对uartDMACfg_t dmaCfg结构体赋值 if (evt (dmaCfg.uartCB != NULL)) { dmaCfg.uartCB(HAL_UART_DMA-1, evt); } //执行回调函数 } 注:回调函数dmaCfg.uartCB的初始化在HalUARTOpenDMA的第一句代码: dmaCfg.uartCB = config -callBackFunc; 而halUARTCfg_t uartConfig结构体的初始化在MT包里的MT_UART.c的MT_UartInit ()中 1)typedef struct { bool configured; uint8 baudRate; bool flowControl; uint16 flowControlThreshold; uint8 idleTimeout; halUARTBufControl_t rx; halUARTBufControl_t tx; bool intEnable; uint32 rxChRvdTime; halUARTCBack_t callBackFunc; }halUARTCfg_t; 该结构体是UART的配置结构体,设置UART的波特率,流控制,回调函数等等。 Z-stack带有一个MT包,用来方便测试的,上述结构体的初始化便在MT_UartInit ()中。 2) typedef struct { uint16 rxBuf[HAL

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档