ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

zigbee协议栈的系统相关函数的使用 仿照协议栈写事件

2022-01-28 22:33:58  阅读:192  来源: 互联网

标签:协议 栈写 GenericApp GENERICAPP zigbee SEND MSG EVT events


文章目录

    • 1.osal_set_event函数的使用
    • 2.osal_start_timerEx函数,数码管变成c,两秒钟以后,灯点亮。
    • 3.我们能不能自己添加一个事件而不用GENERICAPP_SEND_MSG_EVT事件。

主要就是通过这个实验知道了:

 

  1. 怎么在初始化时候干一些事情
  2. 那些函数的参数是和什么有关的
  3. 怎么仿照协议栈自己写一个事件

1.osal_set_event函数的使用

修改事物,点亮p0_1
在这里插入图片描述

修改代码GenericApp.c的如下代码:

  if ( events & GENERICAPP_SEND_MSG_EVT )
  {
    // Send "the" message
    GenericApp_SendTheMessage();

    // Setup to send message again
    osal_start_timerEx( GenericApp_TaskID,
                        GENERICAPP_SEND_MSG_EVT,
                      GENERICAPP_SEND_MSG_TIMEOUT );

    // return unprocessed events
    return (events ^ GENERICAPP_SEND_MSG_EVT);
  }

在这里插入图片描述
在这里插入图片描述
这里面的两个变量可以看:
在这里插入图片描述
在这里插入图片描述
设置断点,全速运行,然后运行至断点,显示:
在这里插入图片描述
按F9取消当前断点,可发现数码管显示C

此时再全速运行,可以发现程序跳到了这里
在这里插入图片描述
再按F9,然后全速运行,灯变亮了

然后复位,数码管变成c,灯立即点亮

2.osal_start_timerEx函数,数码管变成c,两秒钟以后,灯点亮。

osal_set_event(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT);

改成osal_start_timerEx(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT,2000);

3.我们能不能自己添加一个事件而不用GENERICAPP_SEND_MSG_EVT事件。

找到定义#define GENERICAPP_SEND_MSG_EVT 0x0001
在这里插入图片描述
其中四位中的每一位只能是8421中的一个,然后其余所有位为0,也就是说十六位里面只有一位是1。

1.在GenericApp.h里面,添加我们的事件GENERICAPP_MY_EVT的定义

#define GENERICAPP_MY_EVT 0X0002
在这里插入图片描述
2.模仿着在GenericApp.c建一个语句

if ( events & GENERICAPP_SEND_MSG_EVT )
  {
    return (events ^ GENERICAPP_SEND_MSG_EVT);
  }

变成:

if ( events & GENERICAPP_MY_EVT )
  {
    return (events ^ GENERICAPP_MY_EVT);
  }

我们现在要实现一个任务,把p0_4点亮

if(GenericApp_NwkState == DEV_ZB_COORD)
            {//如果模块成了协调器,进到这
              LS164_BYTE(11);
              //osal_set_event(GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT);//应用层GenericApp_TaskID任务处理GENERICAPP_SEND_MSG_EVT事物
              osal_start_timerEx(GenericApp_TaskID,GENERICAPP_MY_EVT,3000);
            }

在这里插入图片描述
改:

 if ( events & GENERICAPP_SEND_MSG_EVT )
  {
    P0DIR |=0X10;
    P0_4=0;
    return (events ^ GENERICAPP_SEND_MSG_EVT);
  }

在这里插入图片描述
但是灯不亮,添加断点

发现在

P0DIR |=0X10;
P0_4=0;

出问题。

修改:初始化工作作全面

 if ( events & GENERICAPP_SEND_MSG_EVT )
  {
    P0SEL &=0XEF;
    P0DIR |=0X10;
    P0_4=0;
    return (events ^ GENERICAPP_SEND_MSG_EVT);
  }

在Zmain.c里面的endif里面添加,以达到覆盖的目的,覆盖和TI起冲突的那部分

#endif
  LS164_Cfg();
  LS164_BYTE(10);

此时灯点亮了。
在这里插入图片描述

标签:协议,栈写,GenericApp,GENERICAPP,zigbee,SEND,MSG,EVT,events
来源: https://www.cnblogs.com/jiangyiming/p/15853992.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有