自学Zigbee第五天

自学Zigbee

记录学习过程中的一些想法,硬件设备和学习资料均来自安联德(淘宝)


一、IAR

  1. 在用高版本的IAR软件编译文件时,遇到一个问题:Error[e46]: Undefined external “?V1” referred in AF
    解决方案是:https://blog.csdn.net/u010898680/article/details/104246020
  2. Error[e16]: Segment ISTACK (size: 0xc0 align: 0) is too long for segment def
    解决方案是:将options中的16改成8,产生的原因也是软件版本高于源文件版本。

二、zigbee

在这里插入图片描述
在这里插入图片描述

需要做的事情:

  • 数据从哪里来,怎么储存和处理
  • 系统的设备之间的通讯顺序
    • 调用组网函数组建网络
    • 调用无线数据发送函数发送数据
    • 调用睡眠函数

在这里插入图片描述

在workspace目录下最重要的两个文件夹是Zmain和App,开发主要在App文件夹进行,也是添加自己代码的地方,主要修改SampleApp.c和.h文件,增加传感器的话,要增加相应的驱动,在.c文件中调用即可。

1.串口

  1. 在SampleApp.c中串口初始化
MT_UartInit();                  //串口初始化
  1. 跳转到MT_UART.C中
void MT_UartInit ()
{
  halUARTCfg_t uartConfig;

  /* Initialize APP ID */
  App_TaskID = 0;

  /* UART Configuration */
  uartConfig.configured           = TRUE;
  uartConfig.baudRate             = MT_UART_DEFAULT_BAUDRATE;//设置比特率,改成115200
  uartConfig.flowControl          = MT_UART_DEFAULT_OVERFLOW;//流控,默认打开,要关闭
  uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
  uartConfig.rx.maxBufSize        = MT_UART_DEFAULT_MAX_RX_BUFF;
  uartConfig.tx.maxBufSize        = MT_UART_DEFAULT_MAX_TX_BUFF;
  uartConfig.idleTimeout          = MT_UART_DEFAULT_IDLE_TIMEOUT;
  uartConfig.intEnable            = TRUE;
  1. 注册串口任务
  MT_UartRegisterTaskID(task_id); //注册串口任务

在这里插入图片描述

2.广播

广播模式:将数据包发送给网络的每一个设备,地址模式为AddrBroadcast。
发送部分:设置发送内容,启动定时器,周期性发送!
在这里插入图片描述
在这里插入图片描述

当网络状态发生变化:
在这里插入图片描述
在这里插入图片描述
接受部分:
主要是两句命令,AF_INCOMING_MSG_CMD与ZDO_STATE_CHANGE。

 case AF_INCOMING_MSG_CMD:
          SampleApp_MessageMSGCB( MSGpkt );
          break;

        // Received whenever the device changes state in the network
        case ZDO_STATE_CHANGE:
          SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
          if ( //(SampleApp_NwkState == DEV_ZB_COORD) ||
                 (SampleApp_NwkState == DEV_ROUTER)
              || (SampleApp_NwkState == DEV_END_DEVICE) )
          {
            // Start sending the periodic message in a regular interval.
            osal_start_timerEx( SampleApp_TaskID,
                              SAMPLEAPP_SEND_PERIODIC_MSG_EVT,
                              SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT );
          }

3.建网流程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值