- 1、本文档共29页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
zigbee串口
第14 讲:Zstack 2006 串口机制学习
我们将串口机制的学习分为如图X所示的四大部分:串口配置、串口初始化、发送数据和接收数据。
图X 串口机制四大模块
串口配置:串口的配置主要完成配置使用UART0或者UART1,同时决定是否使用DMA,协议栈默认使用DMA,我们化繁为简不适用DMA。主要在文件hal_board_cfg.h中完成。
串口初始化:串口的初始化主要完成相关常量的初始化即打开串口串口的工作。主要涉及函数有SPIMgr_Init ()和HalUARTOpen()。
发送数据:发送数据主要完成将要发送的数据通过串口传递出去,主要涉及到的函数有HalUARTWrite()和串口发送中断服务函数HAL_ISR_FUNCTION()。
接收数据:接收数据主要完成将串口传递的数据接收并传递给相应的层(通常为应用层),主要涉及的函数有HalUARTPoll()和串口接收中断服务函数HAL_ISR_FUNCTION()。
串口配置
串口的配置主要决定是否使用DMA,以及使用UART0还是UART1,主要在文件hal_board_cfg.h中完成,摘录如下:
#ifndef HAL_UART
//如果使用串口,必须至少编译以下四者之一
#if (defined ZAPP_P1) || (defined ZAPP_P2) || (defined ZTOOL_P1) || (defined ZTOOL_P2)
#define HAL_UART TRUE
#else
#define HAL_UART FALSE
#endif
#endif
#if HAL_UART
//默认使用UART0
#define HAL_UART_0_ENABLE TRUE
#define HAL_UART_1_ENABLE FALSE
#if HAL_DMA
#if !defined( HAL_UART_DMA )
//默认使用DMA
#define HAL_UART_DMA 0
#endif
#else
#undef HAL_UART_DMA
#define HAL_UART_DMA 0
#endif
#if !defined( HAL_UART_ISR )
//默认不适用普通UART
#define HAL_UART_ISR 1
#endif
#if !defined( HAL_UART_CLOSE )
#define HAL_UART_CLOSE FALSE
#endif
#else
#define HAL_UART_0_ENABLE FALSE
#define HAL_UART_1_ENABLE FALSE
#define HAL_UART_DMA FALSE
#define HAL_UART_ISR FALSE
#define HAL_UART_CLOSE FALSE
#endif
串口初始化
一、串口初始化
void SPIMgr_Init ()
{
halUARTCfg_t uartConfig;
App_TaskID = 0;
//UART配置
uartConfig.configured = TRUE;
uartConfig.baudRate = SPI_MGR_DEFAULT_BAUDRATE;
uartConfig.flowControl = SPI_MGR_DEFAULT_OVERFLOW;
uartConfig.flowControlThreshold = SPI_MGR_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize = SPI_MGR_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize = SPI_MGR_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout = SPI_MGR_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
//根据编译选项配置回调函数
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)
uartConfig.callBackFunc = SPIMgr_ProcessZToolD
文档评论(0)