1 / 14
文档名称:

协议详情栈-Z-Stack协议详情栈基础和大数据传输实验.doc

格式:doc   大小:354KB   页数:14页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

协议详情栈-Z-Stack协议详情栈基础和大数据传输实验.doc

上传人:cxmckate6 2022/2/16 文件大小:354 KB

下载得到文件列表

协议详情栈-Z-Stack协议详情栈基础和大数据传输实验.doc

相关文档

文档介绍

文档介绍:word
word
1 / 14
word
「ZigBee模块」协议栈-Z-Stack协议栈根底和数据传输实验
花了好久写的...感觉还不错的呢...如果看,请细看...Mua~
Z-Stack协议栈根底和数据传输实验
一、实理完一个任务之后它会去除该任务的标志位。
  咳,不知道你们有没有看懂......然后这里面的重点函数呢就是“events = (tasksArr[idx])( idx, events );〞这一句。先看一看tasksArr[]这个数组的定义。
 pTaskEventHandlerFn tasksArr[]
  有没有发现它和函数osalInitTasks();在同一个文件里面!有没有发现它就在osalInitTasks()这个函数的上面!再仔细看一看,有没有发现它定义成员变量名的顺序和下面初始化函数的顺序是一样的!这样说估计还是云里雾里的吧...〔因为写到这里我也还是没有完全懂...〕我再说明白点......之前不是说每个任务都有一个ID号嘛,优先级从0开始的,而数组里面第一位的索引号也是0,就是说任务ID号和数组索引号相对应,那么利用任务ID号就可以在数组里面找到相应的任务。还有很神奇的一点,至少我是怎么觉得的...之前看这行代码感觉非常难以理解......“events = (tasksArr[idx])( idx, events ); 〞。刚刚想明白的,原来那个数组的类型是一个函数!也就是说通过任务
word
word
4 / 14
word
ID找到相应进展任务处理的函数!这样你们有没有明白?不懂留言......有人看吗?笑......
  终于,协议栈的分析工作完成了......会不会觉得很乱?看看下面的流程图再来回顾整理一下吧~
 
图2
 
五、实验过程和说明
  1. 串口初始化代码
①在协议栈中,用户自己添加代码的地方根本为App这个文件夹。打开其中的文件,在INCLUDES局部添加代码
    #include ""
word
word
5 / 14
word
 
图3
  操作说明:协议栈中关于串口封装的文件有两个,一个是,另一个是。这两个文件有什么区别呢?打开文件研究一下。首先,在中有include “〞,所以写头文件只要写〞〞即可。然后,仔细看代码,分析这个文件只要是对不同串口类型的相应操作进展选择,这个文件如此是对任意串口的操作。就是说这个文件更底层一点。
②同样文件中,找到函数void SampleApp_Init( uint8 task_id ),在其中参加串口初始化代码
/************串口初始化******************/
MT_UartInit(); //串口初始化
MT_UartRegisterTaskID(task_id); //登记任务号
word
word
6 / 14
word
 
图4
  操作说明:串口初始化就不说了。登记任务号就是把串口事件通过task_id登记在SampleApp_Init();中。之前我们有提到说SampleApp_Init();函数很重要,就是分配ID号,它还是优先级最低的那个。把这个函数的ID号给串口就是告诉串口我是在这个函数里面初始化的,相应的我的任务优先级是最低的......
③更改串口初始化配置。
  在上图所示的MT_UartInit();处go to definition,进入MT_UartInit()函数〔如图5〕。找到其中的MT_UART_DEFAULT_BAUDRATE,go to definition后将波特率设置为115200〔如图6〕。
  回到图3位置,找到MT_UART_DEFAULT_OVERFLOW,go to definition将参数设为FALSE〔如图7〕。
word
word
7 / 14
word
 
图5
图6
word
word
8 / 14
word
 
图7
  操作说明:修改波特率就不解释啦。
#define MT_UART_DEFAULT_OVERFLOW       FALSE
  这行代码是打开串口流控的意思。因为我们串口通讯是两根线的,必须把它关闭。
 
  2. 发送局部代码
①打开,找到SampleApp事件处理函数SampleApp_ProcessEvent()。
  补充一点,我们可以在SampleApp下添加自己的事件,每个事件有自己的事件号。事件号是16位的,但是每个事件号只允许占16位中