ZigBee

单片机:cc2530

协议栈:ZStack-CC2530-2.5.1a

开发工具:IAR

1.软件配置

(1)配置单片机

第一步:右击工程名,在快捷菜单选择Options...,打开Options for node ‘ex1’对话框

第二步:选择General Options列表项,单击右边的Target标签,显示的页面为配置单片机的内容

第三步:单击Device后面的按钮,在弹出的对话框中选择CC2530F256.i51文件,文件位于C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation\8051\config\devices\Texas Instruments文件夹中

第四步:在CPU core 下拉列表框中选择Plain列表项,其他参数默认

(2)配置连接器

第一步:右击工程名,在快捷菜单选择Options...,打开Options for node ‘ex1’对话框,选择Linker列表项,然后选择右边Config标签

第二步:在Config页面中勾选Linker configuration file框架中的Override default复选框,单击框架中的..按钮,弹出对话框,选择lnk51ew_cc2530F256_banked.xcl文件,位于C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation\8051\config\devices\Texas Instruments文件夹中

第三步:其他项的配置选择默认值

(3)配置仿真器

第一步:右击工程名,在快捷菜单选择Options...,打开Options for node ‘ex1’对话框,选择Debugger列表项,然后选择右边Setup标签

第二步:在Setup页面中单击Driver下拉列表框,从展开的列表项中选择Texas Instruments列表项

第三步:勾选Device Description file框架中的Override default复选框,然后单击框架中的..按钮,在弹出的对话框中选择ioCC2530F256.ddf文件,位于C:\Program Files\IAR Systems\Embedded Workbench 6.0 Evaluation\8051\config\devices\Texas Instruments文件夹中

2.ZigBee网络中的设备

ZigBee网络中主要有协调器,路由器,终端节点3种设备

(1)协调器

在ZigBee网络中只能有1个协调器。协调器主要负责网络的组建,维护,控制节点的加入,数据包路由选择等。所谓路由是指数据在网络中传输时的路径选择与控制。

(2)路由器

在ZigBee网络中可以有多个路由器或者没有路由器。路由器主要负责数据包的路由选择,网络连接等。

(3)终端节点

在ZigBee网络中可以有1个或多个终端节点。终端节点的主要功能是负责数据的采集和执行机构的控制,例如温度,湿度的采集,电机,照明灯的控制等。

注意:在ZigBee,协调器具备路由器的功能,也可以作为一个终端节点来使用。路由器则不具备网络组建功能,可作为一个终端节点来使用。终端节点不具备路由功能。一个ZigBee网络至少要包含1个协调器和1个终端节点,其中终端节点可以有路由器来兼任。

3.系统事件与用户事件

(1)系统事件

系统事件是协议栈内部已经预先定义好的事件,用户不必定义

SYS_EVENT_MSG 0x8000 系统事件

AF_DATA_CONFIRM_CMD 0xFD 收到数据确认事件

AF_INCOMING_MSG_CMD 0x1A 收到报文(MSG)类消息

AF_INCOMING_KVP_CMD 0x1B 收到键值对(KVP)类的消息

KEY_CHANGE 0xC0 按键状态发生改变

ZDO_NEW_DSTADDR 0xD0 ZDO获得新地址

ZDO_STATE_CHANGE 0xD1 ZDO改变了网络的状态

ZDO_MATCH_DESC_RSP_SENT 0xD2 描述符匹配响应发送

ZDO_CB_MSG 0xD3 收到ZDO反馈消息

ZDO_NETWORK_REPORT 0xD4 ZDO收到网络状态报告消息

ZDO_NETWORK_UPDATE 0xD4 ZDO收到网络状态更新消息

(2)用户事件

用户事件是用户在应用系统开发的过程中根据实际需要自定义的事件

在ZStack中事件定义的特点:

1)一个任务可以包含多个事件,即一个任务可以由几个事件中的某个事件触发

2)一个事件只能归属于一个任务之中,即一个事件的发生,只能触发一个任务的执行。

3)任务的事件用16位二进制数表示,一个二进制位代表一个单一的事件,二进制位的值为1时,表示该位二进制位所代表的事情发生了,二进制位的值为0时,表示该位二进制位所代表的事情没有发生。(0x0001,0x0002,0x0004······0x8000为单一事件。0x0003为复合事件由0x0001和0x0002组成)

4)同一任务的各个事件的编码不能相同,不同任务的事件编码可以相同

5)事件编码中,0x8000为系统事件的编码,用户为每个任务所能定义的单一事件最多只有15个

4.软件操作

(1)移除App组中的多余文件

右击文件,选择Remove

(2)查看文件中函数

在左下角点击f{}

(3)显示代码的行号

单击菜单栏Tools—>Options菜单项,打开IDE Options对话框

在左侧列表框中选中Editor列表项,然后在右侧勾选Show line numbers,确定

(4)新建组

单击参加的工程名,右击选择Add,再选择Add Group,填写组名,确定。

(5)建立模块设备

选择菜单Project—>Edit Configurations命令,在弹出的对话框中选择New建立模块设备,选择基于Deubg模块进行配置,选择OK。在新建前把Deubg配置好,当作模板

(6)工程添加头文件

点击IAR菜单中的Project—>Options,选择C/C++ Compiler,然后再选择Preprocessor,在Additional include directories:(one per line)中输入头文件的路径。

1)$PROJ_DIR$\代表当前工程文件所在的workspace的目录

2)..\表示对应目录的上一层

(7)串口输出数据

点击IAR菜单中的Project—>Options,选择C/C++ Compiler,然后再选择PreprocessorDefined symbols:(one per line)中添加CC2530_DEBUG,既可串口输出

4.库函数

(1)osal_msg_deallocate() 释放存储空间

功能:释放消息所占存储空间

原型:uint8 osal_msg_deallocate(uint *msg_ptr);

说明:参数msg_ptr为指向所需回收的消息缓冲区的指针。

返回值:成功:SUCCESS(0x00) 失败:INVALID_MSG_POINTER(0x05)

(2)osal_msg_receive() 消息检索

功能:为指定的任务从消息队列中检索一条消息

原型:uint8 osal_msg_receive(uint task_id);

说明:参数task_id为任务编码

返回值:成功:指向存放该消息的缓冲区的指针 失败:NULL

(3)osal_start_timeEx() 开启定时器

功能:启动定时器,当定时时间到后为指定的任务设置事件

原型:uint8 osal_start_timerEx(uint8 taskID,uint16 event_id,uint16 timeout_value);

说明:参数taskID指定任务的任务号,参数event_id所需设置事件的事件编码,参数timeout_value定时的时长,单位为ms

返回值:成功:SUCCESS(0x00) 失败:NO_TIMER_AVAIL

(4)HalLedSet() LED的状态

功能:设置指定发光二极管的状态

原形:uint8 HalLedSet(uint leds,uint8 mode);

说明:

leds:待设置的发光二极管

HAL_LED_1 0x01 与P1_0脚相接的发光二极管LED1

HAL_LED_2 0x02 与P1_1脚相接的发光二极管LED2

HAL_LED_3 0x04 与P1_4脚相接的发光二极管LED3

mode:待设置的状态

HAL_LED_MODE_OFF 0x00 熄灭模式

HAL_LED_MODE_ON 0x01 点亮模式

HAL_LED_MODE_BLINK 0x02 闪烁模式

HAL_LED_MODE_FLASH 0x04 周期性地闪烁模式

HAL_LED_MODE_TOGGLE 0x08 状态翻转模式

(5)HalLedBink() LED闪烁控制

功能:控制指定的发光二极管闪烁

原型:void HalLedBink(uint8 leds,uint8 numBlinks,uint8 percent,uint16 period);

说明:

leds:要闪烁的LED

numBlinks:闪烁的次数。为0时不停闪烁,为其他表示闪烁的次数

percent:LED点亮时间占闪烁周期的百分比。percent为0时熄灭,大于等于100点亮,为其他值表示点亮时间的百分比。

period:闪烁的周期,单位为ms

(6)HalUARTOpen() 串口初始化

功能:用指定的参数初始化串口

原型:uint8 HalUARTOpen(uint8 port,halUARTCfg_t *config);

说明:

port:所要初始化串口的串口号

config:串口配置变量的地址。

例:

  void InitUart(void){halUARTCfg_t UartConfig;                 //定义串口配置变量UartConfig.configured=TRUE;              //进行串口配置UartConfig.baudRate=HAL_UART_BR_115200;  //波特率UartConfig.flowControl=FALSE;            //不进行流控制UartConfig.callBackFunc=NULL;            //无回调函数HalUARTOpen(0,&UartConfig);              //按设置参数初始化串口0}

(7)HalUARTRead() 串口接收

功能:从串口中读取指定长度的数据,并存入用户缓冲区

原型:uint8 HalUARTRead(uint8 port,uint8 *buf,uint16 len);

说明:

port:串口号

buf:存放的缓冲区

len:读取的长度

(8)HalUARTWrite() 串口发送

功能:从串口中发生指定长度的数据

原型:uint8 HalUARTWrite(uint8 port,uint8 *buf,uint16 len);

说明:

port:串口号

buf:发生数据所在的地址

len:发生的长度

(9)osal_set_event() 设置事件

功能:为指定的任务设置事件

原型:uint8 osal_set_event(uint8 task_id,uint16 event_flag);

说明:

task_id:指定任务的任务号

event_flag:所需设置事件的事件编码

返回值:成功:SUCCESS(0x00) 失败:INVALID_TASK

(10)osal_memcmp() 判断数据是否相同

功能:对2个存储区的内容进行比较

原型:uint8 osal_memcmp(const void GENERIC *src1,const void GENERIC *src2,unsigned int len);

说明:

src1:待比较的第1个数据区的首地址

src2:待比较的第2个数据区的首地址

len:所需比较的字节数

返回值: TRUE:内容相同 FALSE:内容不同

(11)osal_strlen() 读取字符串长度

功能:计算一个字符串的长度

原型:uint8 osal_strlen(char *pString)

说明:

pString:所要计算的字符串,要求字符串必须以NULL(值为0x00)结尾

返回值:字符串的长度

(12)osal_memset() 批量赋值

功能:将用户缓冲区的内容设置为指定值

原型:void *osal_memset(void *dest,uint8 value,int len);

说明:

dest:用户缓冲区的地址

value:所要设置的值

len:所需设置的长度

5.连接云平台

将232转485接口与黑板连接,转换接口的+与路由器4851A连接,-与路由器4851B连接

在云平台上项目选择工业物联-》以太网,确定

添加设备选择TCP的通信协议

网关接入云平台

IAR软件ZigBee物联网相关推荐

  1. 【IoT】基于 CC2530 的 ZigBee 物联网系统设计

    1.1设计背景 无线传感器网络是目前研究的热门领域,它集成 了多门学科的知识,应用领域广泛,因此深受国际社会 的关注. 在 21 世纪里,无线传感器网络技术是具有 较大影响力技术中的一个热门技术,也是 ...

  2. zigbee物联网模块市场:LTE标准Cat.1和nbiot无线通信模块差异

    2021 年对于zigbee物联网模块行业来说是忙碌的一年.zigbee模块需求快速增长,但半导体供应短缺导致模块供应紧张.zigbee物联网模组市场将在2021年实现显着的量增长.基于目前的供应情况 ...

  3. zigbee物联网模块标准:LTE标准Cat.1和nbiot无线通信模块差异

    2021年LTE Cat.1出货量同比增长3倍以上,超过NB-IoT出货量成为最大标准.LTE Cat.1 从 2020 年到 2021 年在中国市场飞速发展,取代 2G 和部分 LTE Cat.4. ...

  4. IAR软件中直接查看编译后代码大小

      在使用IAR软件编译代码时,编译后往往看不到编译后代码的大小情况.在调试程序的时候还是比较麻烦的.下面就总结两种最简单的方法在IAR编译器中查看代码大小. 通过输出的编译信息查看   IAR默认的 ...

  5. IAR软件中查看代码大小

      在使用IAR软件时,各种调试功能使用起来都挺好的,唯一感觉有缺陷的就是不能查看代码大小.不像keil那样代码编译后可以直接看到大小.那么在IAR中有没有办法可以查看到代码的大小呢?当然是可以的,最 ...

  6. 解决IAR软件生成的HEX文件用记事本打开出现乱码

    我们都知道,IAR软件不同的版本对应不同的主芯片,我之前使用的软件没有问题,在新换了软件版本后,却出现了用记事本打开HEX文件时候,不能正常显示的问题,所以就查了一下 我记得当时百度的是用记事本打开h ...

  7. ZigBee TI ZStack CC2530 2.4 IAR软件版本

    (配套源码.软件.开发板等资源,可移步博客同名QQ群/TB店铺:拿破仑940911) 一.IAR IAR,全称IAR Systems.公司总部位于北欧的瑞典,在美国.日本.英国.德国.比利时.巴西和中 ...

  8. Zigbee物联网组网

    物联网的核心和基础是互联网,物联网是在互联网基础上的延伸和扩展的网络,然而在物联网当中基于海量数据的无线传感网是物联网极具代表的网络之一,其用户端延伸和扩展到了任何物品与物品之间,进行信息交换和通信. ...

  9. IAR软件*.map文件查看程序占用ROM和RAM大小

    查看单片机程序占用rom和ram的大小: IAR程序编译后会在Project\Debug\List文件夹下生成一个*,map文件,用文本编辑软件打开,在最后面的部分会有空间占用信息,例如下图 read ...

  10. 以低代码软件构建物联网基础设施建设

    工业物联网领域,对IOT设备以及数据的平台化管理和智能化应用愈渐成熟,物联网智能化的基础设施建设由软件平台实现.传统型繁重的代码级写软件方式已逐渐被低代码方式所取代. 以低代码快速构建物联网系统基础设 ...

最新文章

  1. 统一沟通-技巧-11-Lync-联盟-1-MSN
  2. 嵌入式转linux服务器,嵌入式linux下web服务器搭建
  3. 数组与指针的艺术--深入探索c/c++数组与指针的奥秘
  4. 拦截器和过滤器之间有很多相同之处,但是两者之间存在根本的差别
  5. html文件嵌入到reportlab,Reportlab学习笔记
  6. 微博机器学习平台云上最佳实践
  7. Win10系统电脑不会一键还原系统怎么解决
  8. 统计文件字符个数 java_如何统计个文件中的字符个数
  9. 教师提升微能力_国培主讲风采录:信息技术再提升 微能力点巧研修
  10. lua语言和python_[动态语言]python和lua中的三元操作符and-or
  11. 安装Android SDK时无法识别JDK 10
  12. 携程apollo从服务端安装,再到客户端的使用,第一次搭建,看我就对了(一个简单的入门demo)
  13. 两年,从纯小白到腾讯阿里,应届非计算机毕业生的2014互联网求职之路
  14. ArcGIS卸载--删除写入注册表相关
  15. 卡饭PDF转换器之CAJ转换
  16. 信息学奥赛一本通(题解目录)
  17. Python中对文件的测试
  18. python股票量化分析_python实战之股票交易量化分析
  19. web数据库管理和运维软件 - webcat
  20. 你只需画草稿,剩下都交给AI!哈佛『机器学习』最新课程;Evernote收费又难用?试试这款开源工具;提示工程资源整合笔记;前沿论文 | ShowMeAI资讯日报

热门文章

  1. rose软件下载(Rational Rose 2003 Enterprise Edition)
  2. 华为网络技术大赛模拟题答案详解
  3. 深度技术 Windows 7 SP1 x64 极速装机版 V2013.05
  4. 慎用 JSON.stringify
  5. 以客户的名义,宏杉科技“存储七项式”律己律人
  6. [小O地图-图表] - 制作全国行政区图表
  7. 【python教程入门学习】机器学习常用术语
  8. Oracle数据库常用Sql语句大全
  9. python记账app开发_Python之区块链简单记账本实现
  10. 如何操作才能实现音频合并无缝衔接?只要掌握这个技巧