网站大量收购闲置独家精品文档,联系QQ:2885784924

ZIGBEE协议栈串口应用详解.pptVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ZIGBEE协议栈串口应用详解

ZIGBEE协议栈串口应用详解 授课内容 串口的两种模式? 串口收发数据 串口工作原理 串口的两种模式 中断 DMA 串口的两种模式—UART配置结构: typedef struct { ? uint8 *rxBuf; ? uint8 rxHead; ? uint8 rxTail; ? uint8 rxMax; ? uint8 rxCnt; ? uint8 rxTick; ? uint8 rxHigh; ? uint8 *txBuf; #if HAL_UART_BIG_TX_BUF ? uint16 txHead; ? uint16 txTail; ? uint16 txMax; ? uint16 txCnt; #else ? uint8 txHead; ? uint8 txTail; ? uint8 txMax; ? uint8 txCnt; #endif ? uint8 txTick; ? uint8 flag; ? halUARTCBack_t rxCB; } uartCfg_t; 串口的两种模式 串口接收DMA模式:(data) — U0DBUF —(DMA)— rxBuf — HalUARTRead()读取rxBuf数据进行处理 串口接收中断模式:(data) — U0DBUF —(中断)— rxBuf — HalUARTRead()读取rxBuf数据进行处理 串口发送DMA模式:(data) — U0DBUF —(DMA)— txBuf 串口发送中断模式:(data) — U0DBUF —(中断)— txBuf 串口的两种模式 写入UxCSR.RE位 同时在UART上接收数据 UART在输入引脚RXDx中寻找有效起始位 设置UxCSR.ACTIVE位为1 同时在UART上接收数据 若检测有效, UxCSR.RX_BUTE位设置为1 产生接收中断 串口的两种模式 代码: #if HAL_UART_0_ENABLE HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR ) { ? cfg0-rxBuf[cfg0-rxHead] = U0DBUF; ? if ( cfg0-rxHead == cfg0-rxMax ) ? { ??? cfg0-rxHead = 0; ? } ? else ? { ??? cfg0-rxHead++; ? } } #endif 串口的两种模式 中断函数完成了把U0DBUF里一字节的数据传送到rxBuf[ ]存储空间去。 rxHead是指向rxBuf[ ]的指针。 rxMax是rxBuf[ ]可以存储最大字节数,为128. 串口的两种模式 2、DMA模式(UART接收) 允许不同速度的硬件装置来沟通,而不需要依于CPU 的大量中断负载。 DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。 串口的两种模式 typedef struct { ? uint8 srcAddrH; ? uint8 srcAddrL; ? uint8 dstAddrH; ? uint8 dstAddrL; ? uint8 xferLenV; ? uint8 xferLenL; ? uint8 ctrlA; ? uint8 ctrlB; } halDMADesc_t; //DMA描述符结构体 串口收发数据 使用串口的步骤: ①初始化串口,包括设置波特率、中断等; ②向发送缓冲区发送数据或者从接收缓冲区读取数据。 串口收发基础实验——流程图 串口的定义 初始化串口 数据发送给串口 PC接收串口的数据 串口收发数据 halUARTCfg_t,该结构体实现串口的配置。 HalUARTOpen()该函数对串口进行初始化。 static void rxCB (uint8 port,uint8 event) //判断数据 { HalUARTRead(0,uartbuf,16);//从串口读取数据放入uartbuf If(osal_memcmp(uartbuf,”xxxx”,16)) { HalUARTWrite(0,uartbuf,16);//将接收的字符输出到串口 } } 串口收发数据—中断代码 void SET_UART0_ISR(void) //串口接收设置函数 { ?? U0CSR |= 0xd0;? //1101 0000; ?? U0UCR |= 0x02; //UART stop bit level: High stop bit } void UARTxISRopen(void) //开串口接收

文档评论(0)

shaofang00 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档