lesson7-1 Zigbee协议栈的使用

news2024/12/23 19:10:36

目录

协议栈的使用

协议栈的安装和协议栈工程创建

协议栈工程配置

选项卡选择

用户代码编写注意

信道选择及PANID分配


协议栈的使用

协议栈的安装和协议栈工程创建

首先进行协议栈的安装

如何创建自己的协议栈工程:

(1)先把整个协议栈目录拷贝到自己指定地方

(2)只留下两个文件夹

(3)进入Sample样例目录内

只保留GenericApp

(4)下面将GenericApp名字改成自己指定的名字,包括其目录内所有的GenericApp名字

包括工程文件,都用记事本打开,ctrl+H替换

(5)最后打开移植好的工程,用户一般在APP和Zmain文件夹编写即可

协议栈工程配置

选项卡选择

我们在使用协议栈下载程序,通过选项卡进行选择(协调器、路由器和终端)

为什么选项卡选择不同,就会导致代码功能差异那么大,出现协调器和终端?

我们以协调器为例,查看配置文件内容

其中的-DZDO_COORDINATOR相当于C语言中的宏定义#define ZDO_COORDINATOR

我们进行搜索

最终找到宏所定义的地方

我们在随便打开一个C文件为例

因此可以得出结论:因为选项卡选项不同,就会导致参与编译的配置文件不同,配置不同就会导致部分宏定义不同,宏定义不同就会导致工程里某些宏的值不同。这些宏值的不同会影响程序执行的流程,就会导致出现不同的功能,所以有了不同功能的代码版本:协调器、路由器和终端。

用户代码编写注意

如何使用协议栈:

(1)在使用协议栈自己写程序的时候要把设置中的prototypes取消勾选

(2)要在xxApp.c里的xx应用事件处理函数中编写(xxApp_ProcessEvent)

关于选项卡内容补充:

使用有些版本的IAR做Zigbee开发会发现,在选项卡里每一个模块都包含了两种选项,分为带-Pro和不带-Pro的,为什么会这样?

因为Zigbee协议在发展过程中经历了3个版本,其中Zigbee在2007年推出了最新的规范,这个规范有2个版本,Zigbee2007和ZigbeePro,它们之间的区别是,PRO版本的功能在某方面更强。

信道选择及PANID分配

在配置文件中,可以对网络信道进行选择

-DDEFAULT_CHANLIST=0x00000800就相当于#define DEFAULT_CHANLIST 0x00000800。其中我们可以发现hex的值都是8、4、2、1,即在某个位是1,其余都是0。

因此我们可以每个信道都或在一起(多个位取1),这样多个信道参数值就可以进行或操作,把结果作为宏的最终值,那么这样对于路由器和终端的意义:可以在这些信道上选择一个最佳的网络加入进去。同样对于协调器的意义:可以在这些信道上选择一个最佳的信道并在这个信道上创建自己的Zigbee网络。

我们再看配置文件中的PANID

发现PANID分为非0xFFFF和0xFFFF两种情况

非0xFFFF:

对于路由器和终端含义是:我必须要加入到PANID为参数值的这样一个Zigbee无线局域网

对于协调器的含义是:我要创建一个网络,并且把这个参数值作为这个网络的PANID

0xFFFF:

对于路由器和终端含义是:在加入网络的时候在指定的信道上没有PANID的限制

对于协调器含义是:我可以随机生成一个值,并把这个随机值作为这个网络的PANID

问:当2两个模块下载相同的协调器代码,并且指定的PANID参数值如(0xfff8)为非0xffff,后果会怎么样?

先上电的模块可以创建0xFFF8这样的一个Zigbee网络,后上电模块会创建一个在0xFFF8基础上值加1的Zigbee网络0xFFF9。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ansible实训-Day1(Liunx基础问题总结及ansible安装环境前置部署)

一、前言 该篇是对本学期Ansible实训第一天内容的原理性总结,主要包括Liunx相关问题等基础性的问题总结以及ansible安装环境的前置部署。 二、Liunx是什么 Linux是一种自由和开放源代码的Unix操作系统,最初由芬兰人Linus Torvalds于1991年创建。与其他许…

hot20-旋转图像

leetcode原题链接:旋转图像 题目描述 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入&am…

OpenCV 学习笔记(C++)(1.4W字)

一切图像皆Mat OpenCV中图像对象的创建与复制 Mat基本结构 Mat对象数据组成:头部和数据部分,头部存储图像的属性(大小、宽高、图像类型:浮点数类型、字节类型、16位整型、32位整型、双精度浮点型,通道数量和获取途径…

【半监督图像分类 2022 CVPR 】Semi-ViT

【半监督图像分类 2022 CVPR 】Semi-ViT 论文题目:Semi-supervised Vision Transformers at Scale 中文题目: 论文链接:https://arxiv.org/abs/2208.05688 论文代码:https://github.com/amazon-science/semi-vit 发表时间&#xf…

数据结构07:查找[C++][平衡二叉排序树AVL]

图源:文心一言 考研笔记整理1w字,小白友好、代码可跑,请小伙伴放心食用~~🥝🥝 第1版:查资料、写BUG、画导图、画配图~🧩🧩 参考用书:王道考研《2024年 数据结构考研复习…

Linux 超级漂亮的 Shell

先来一张美图 zsh 介绍 1 Linux shell Linux/Unix 提供了很多种 Shell,为毛要这么多 Shell? 难道用来炒着吃么?那我问你,你同类型的衣服怎么有那么多件?花色,质地还不一样。写程序比买衣服复杂多了&#xf…

在vite+vue3中使用less

目录标题 一、首先,安装插件二、在 vite.config.js中配置三、最后在模版里声明css类型 一、首先,安装插件 npm install less npm install less-loader二、在 vite.config.js中配置 css: {preprocessorOptions: {less: {math: "always", // 括…

VS里拉取时候,变成变基中,变成分离分支状态,git 头指针分离于 baf67ff

分离头指针(detached HEAD) 通常,我们工作在某一个分支上,比如 master 分支。这个时候 master 指针和 HEAD 指针是一起前进的,每做一次提交,这两个指针就会一起向前挪一步。但是在某种情况下(例…

docker搭建达梦数据库

搭建达梦数据库 搭建达梦数据库 拉取镜像 # 拉取镜像 docker pull registry.cn-shanghai.aliyuncs.com/techerwang/dbhub:jem_dm8 或去官网下载 https://eco.dameng.com/document/dm/zh-cn/start/dm-install-docker.html我是选择了去官网下载 然后上传到linux服务器 do…

Selenium教程__按钮的点击、文本框的输入和清除操作(3)

from selenium import webdriverdriver webdriver.Chrome() driver.maximize_window() driver.get("https://www.baidu.com")# 定位元素 input_box driver.find_element_by_id("kw") search_btn driver.find_element_by_id("su")# sen_keys&a…

pycharm修改文件大小限制

场景: 方法: 打开pycharm 安装目录下的idea.properties 增加配置项:idea.max.intellisense.filesize99999

电脑word如何转化为pdf格式,其实非常简单!

作为一名在职场工作多年的资深达人,我们都知道工作中常常需要转换各种文件格式,其中最常见的就是Word文档和PDF文档。有时候根据领导、客户或甲方的要求,我们需要进行格式转换,尤其是将Word转换为PDF格式。PDF格式的文件不仅方便阅…

Spring基础知识(四)

目录 1.Spring包含的模块主要有什么 2.Core Container的作用 3.Data Access/Integration模块的作用 4.AOP模块的作用 5.Spring Web模块的作用 6.Test模块的作用 7.如何将一个类声明为Bean 8.Component和Bean的区别 9.能够注入Bean的注解有什么 10.Resource注解 1.Spr…

【Java】Java 中格式化字符串:String.format() 方法

本文仅供学习参考! 相关文章地址: https://www.cnblogs.com/Dhouse/p/7776780.html https://www.javatpoint.com/java-string-format https://www.geeksforgeeks.org/java-string-format-method-with-examples/ 前言 虽然System.out.println()适合调试和…

5 STM32复位和时钟控制

STM32的复位功能 系统复位: 系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器为它们的复位数值。(按键复位和软件复位属于系统复位) 电源复位: 电源复位将复位除了备份区域外的所有寄存器。…

【Flink】DataStream API使用之转换算子(Transformation)

转换算子(Transformation) 数据源读入数据之后,就是各种转换算子的操作,将一个或者多个DataSream转换为新的DataSteam,并且Flink可以针对一条流进行转换处理,也可以进行分流或者河流等多流转换操作&#xf…

sql with子语句的理解

在用sqlite时,用到了with子语句,记录下对其的理解 目的:在1个字段中找到真正包含的数据,一般用于like,但该字段可能是复杂的字符串数组。 例子数据,如: 【E2806894200050010B93C473,123456】…

软件分享:Cpu-Z电脑CPU检测工具介绍(附下载)

目录 一、软件介绍 二、功能介绍 三、使用方法 1、通过 CPU-Z 查看 CPU 信息 2、缓存信息 3、主板信息 4、内存信息 5、内存规格信息(SPD) CPU是计算机中负责读取指令,对指令译码,并执行指令的核心部件。CPU自产生以来&am…

chatgpt赋能python:用Python计算BIM:优点、应用和结论

用Python计算BIM:优点、应用和结论 Building Information Modeling(BIM)是一种数字化的建筑设计和施工方法,它包括从建筑物的设计、施工到维护和拆除的整个生命周期。BIM在大规模工程建设中越来越受到欢迎,Python编程…

单片机强排热水器方案

单片机强排热水器方案 MCU型号 MM32SPIN05TW、MM32SPIN080C 产品概述 MM32SPIN05TW本产品使用高性能的ArmCortex-M0为内核的32位MCU,最高工作频率可达72MHz,内置高速存储器,丰富的I/O端口和外设连接到外部总线。本产品包含1个12位ADC、1个比…