- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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_ENABLEHAL_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) //开串口接收
您可能关注的文档
- The ten steps to successful breastfeeding for settings where HIV….ppt
- U29型金属棚说明书.ppt
- UL阻燃等级.ppt.ppt
- Unit 1 I study English by….ppt
- Unit 2 MANNERS AND COURTESIES(礼貌,谦恭)社交礼.ppt
- unit-4-how-do-you-get-to-school-section-b新目标.ppt
- unit4 A-LEVEL A2 物理复习资料.doc
- unit4-she-said-helping-otherschanged-her-life新目标.ppt
- vivo x20能不能找回清空了的照片.docx
- WEB伺服器控制项.ppt
文档评论(0)