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

协议栈中的MT包实现UART的发送与接收..doc

协议栈中的MT包实现UART的发送与接收..doc

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

协议栈中的MT包实现UART的发送与接收 文档说明 Zigbee协议栈已经把使用串口的条件准备好了,从应用角度讲,利用协议栈现有平台即ZStack自带的MT包来实现自己的串口应用,只需对协议栈做一些修改就可以实现URAT发送与接收的功能。 编写人员:任一权,刘童 版本更新记录,编写版本:V0.1 时间:2012-12-15 关键函数的解析 MT_UartInit ()① 这是为UART串口传输数据而初始化的MT函数包,在其中定义了串口的波特率,最大接收发送数据量,传输模式等相关配置。在这里的各项参数不需要改变,保持系统默认即可。 MT_UartProcessZToolData()② 这是MT程序包中URAT接收数据的代码,在这里面需要修改的地方是,在数据接收完毕后需要添加一个回车,便于我们区分不同传输数据,具体的代码为UartRxBuf.RxBuf[count]=\n;此段代码需要添加在count++;后,这里注意一下count,一会还会用到。 hal_board_cfg.h③ 首先说明一下,串口接收发送数据的方式有两种:一种是中断模式,另一种是DMA模式,这里是使用中断模式。而在hal_board_cfg.h中,DMA模式的优先级要高于中断模式的,这里最简单的解决方案就是将DMA的那段预编译注释掉,即仅留一种模式——中断。 void Sampleapp_Init④ 这是应用层函数初始化,即对我们自己的具体应用进行初始化,在这里面需要添加两段代码MT_UartInit()和MT_UartRegisterTaskID(SampleApp_TaskID);这两端代码要添加在Sampl Init()中。 MT_UartInit() 这段代码的作用初始化Uart接口,初始化接口配置。 MT_UartRegisterTaskID(SampleApp_TaskID);⑤ 这段代码是注册一个处理串口的任务。 Sampleapp_ProcessEvent⑥ 这就是我们的具体应用处理函数了,我们这里主要要用到的是串口接收和发送,所以对应的代码是case SPI_INCOMING_ZTOOL_PORT:处理此事件的代码为UartRxComCallBack();这个函数就是我们接收PC机上发送的以串字符后的操作。 代码功能及执行流程 至此,串口发送接受数据的已经全部修改完毕,可以将程序下载到板子上,利用PC机上的程序调试助手向2530发送数据,在程序调试助手和板子上的液晶屏上分别显示。我们在回顾一下代码的执行顺序 首先进行各种初始化,这里就不再详解 程序进去osal_start_system,开始进行轮询有没有要处理的事件 这时如果从串口发送一个数据,发生中断,(这里我们利用的中断模式) 在OSAL框架中,Hal_ProcessPoll()函数是在一个死循环中,所以每过一定的时间就会执行到。在Z-Stack OSAL中这个时种节奏定义是1ms,Hal_ProcessPoll()的作用是检测中断标志位,由于串口已经接收到数据,所以进入中断处理,具体处理过程如下HalUARTPoll(); ? HalUARTPollISR(); ? static uint16 HalUARTRxAvailISR(void) ?然后就进入了MT_UartProcessZToolData;(详解如下) ?数据接收完毕后又进入轮询,由于sampleapp中已经不为空了,所以就会执行sampleapp中的操作,在Sampleapp中的 case SPI_INCOMING_ZTOOL_PORT: UartRxComCallBack(); break; 这段代码将被执行,UartRxComCallBack();中的代码如上述红字表示,完成我们设定的相应功能。 实验数据 利用程序调试助手测试一下程序的收发速率(波特率为115200) RX TX 最小发送周期(ms) 速率B/s 3 2 18 227.8 6 5 33 333.3 11 10 47 446.8 21 20 79 519.0 31 30 119 512.5 附:涉及的代码: ①void MT_UartInit () { halUARTCfg_t uartConfig; /* Initialize APP ID */ App_TaskID = 0; /* UART Configuration */ uartConfig.configured = TRUE; uartConfig.baudRate = MT_UART_DEFAULT_

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档