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

文章目录

      • 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" messageGenericApp_SendTheMessage();// Setup to send message againosal_start_timerEx( GenericApp_TaskID,GENERICAPP_SEND_MSG_EVT,GENERICAPP_SEND_MSG_TIMEOUT );// return unprocessed eventsreturn (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起冲突的那部分

#endifLS164_Cfg();LS164_BYTE(10);

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

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

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

相关文章

zigbee上位机通过vs2019的mfc实现

文章目录一、操作系统和输入输出设备的联系二、应用程序和操作系统的联系三、zigbee上位机具体实现结果:四、实现上位机的具体流程:五、通过windows API实现串口通信的原理:一、操作系统和输入输出设备的联系 操作系统能操纵输出设备执行特定…

matlab guide 自定义右键菜单

在一个gui图形显示界面上点击右键,出现一些选项可以进行操作。 实验效果: 找到菜单编辑器的上下文菜单: 我们看几个回调函数即可: function clear_Callback(hObject, eventdata, handles) cla; function gridoff_Callback(hObj…

空军部队计算机专业有没有用武之地,报名当兵可以选择陆军、海军、空军、武警、火箭军,艰苦地区部队...

如果是本科生,在部队表现优异,年龄不超26周岁是可以被推荐去参加大学生士兵提干考试。考上之后需要到军校培训6个月左右,毕业后下部队就是中尉军衔。二、报名当兵时有陆军、海军、空军、武警、火箭军,艰苦地区部队,选择…

查看本地计算机ip命令,查看你本机的IP信息的命令ipconfig详解【图】

原标题:"查看你本机的IP信息的命令ipconfig详解【图】"关于路由器的知识分享。 - 素材来源网络 编辑:kaka。对于ipconfig命令大家应该不陌生,它主要用于显示本地计算机网络适配器的ip地址、子网掩码以及默认网关等信息。1、IPconfig不带参数不…

什么是传感器? 传感器由哪几部分组成? 传感器分类?

文章目录1.什么是传感器?2.传感器由哪几部分组成?3.传感器分类?1.什么是传感器? 传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到…

计算机win7关机重启,电脑win7关机后自动重启如何解决_win7一关机就立马自动重启修复方法-win7之家...

我们在使用完win7系统电脑之后,都会顺手对其进行关机操作,以此防止电脑中的硬件过度消耗,可是近日有些用户在将win7电脑关机之后却又出现了重启的情况,最终不得不以切断电源的方式来解决,那么电脑win7关机后自动重启如…

RFID 射频 RFID工作流程 自动识别技术 工作频段 短距离无线通信技术

文章目录1.rfid概念:2.射频概念:3.rfid工作流程:4.几类自动识别技术各有什么特点?他们有何不同。5.RFID系统有哪些工作频段?各频段的特点是什么。6.对比几种短距离无线通信技术1.rfid概念: RFID是一种自动…

链表 队列 基本概念 为什么使用二叉查找树 抽象数据类型

文章目录0.抽象数据类型(ADT)的优点?1.为什么需要链表?2.链表的概念?3.队列的概念?4.为什么需要二叉查找树?0.抽象数据类型(ADT)的优点? ADT版本可读性高,隐藏编程细节,对终端用户隐…

戴尔计算机windows未能启动,戴尔电脑windows7无法启动安装过程怎么办

windows7无法启动安装过程怎么办?暗黄win7系统的时候经常遇见这种问题可能是硬件问题导致的,还有可能是系统设置问题导致的,我们具体原因具体分析,一起来看看解决方法,动手实践起来吧!1、方法一&#xff1a…

css 回到首页按钮,js+css实现回到顶部按钮(back to top)

本文实例介绍了jscss实现回到顶部按钮的方法,分享给大家供大家参考,具体内容如下效果htmlcssp#back-to-top{position:fixed;bottom:100px;right:80px;}p#back-to-top a{text-align:center;text-decoration:none;color:#d1d1d1;display:block;width:30px;…

ajax搜索思路,jquery创建一个ajax关键词数据搜索实现思路

在web开发过程当中,我们经常需要在前台页面输入关键词进行数据的搜索,我们通常使用的搜索方式是将搜索结果用另一个页面显示,这样的方式对于搭建高性能网站来说不是最合适的,今天给大家分享一下如何使用 jquery,MySQL …

ftp服务器收集文件,ftp服务器收集文件

ftp服务器收集文件 内容精选换一换为了对源端服务器进行迁移可行性评估以及为后续目的端服务器的选择和配置提供必要性数据,迁移Agent会收集源端服务器的相关信息并上报到主机迁移服务。收集的Windows操作系统的具体数据如表1所示。收集的Linux操作系统的具体数据如…

STM32-GPIO学习-跑马灯实验和按键实验-寄存器版本和HAL库版本

一、stm32跑马灯实验 a.GPIO general purpose input output 通用输入输出端口,可以做输入也可做输出,GPIO端口可通过程序配置成输入或输出。 STM32FXXXIGT6一共9组IO:PA~ PI,其中PA~ PH每组16个IO,PI只有PI0~PI11。…

STM32-时钟-时钟树-时钟初始化配置

1.STM32时钟 STM32有5个时钟源:HSI、HSE、LSI、LSE、PLL HSI是高速内部时钟,RC振荡器,频率为16MHz,精度不高。可以直接作为系统时钟或者用作PLL时钟输入。 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接…

pe系统 服务器维护,FirPE 维护系统

前言年更项目更新啦~~~,这次修复了一些BUG,此外还增加了亿点特性。首次使用WinRE注册表,使得WinPE速度更快了。系统简介FirPE 是一款系统预安装环境(Windows PE),它具有简约、易操作等特点,使用起来十分人性化。以U盘作…

STM32-Systick滴答定时器-延时函数

1.STM32-Systick滴答定时器 Systick定时器,是一个简单的定时器,对于ST的CM3,CM4,CM7内核芯片,都有Systick定时器。 Systick定时器常用来做延时,或者实时系统的心跳时钟。这样可以节省MCU资源,不用浪费一个定时器。比如…

华为服务器更改从系统盘启动不了,华为服务器设置启动项

华为服务器设置启动项 内容精选换一换对于已安装Cloud-Init/Cloudbase-Init的云服务器,首次执行切换/故障切换操作,或者创建容灾演练后,系统第一次启动时会运行Cloud-Init/Cloudbase-Init,为云服务器重新注入初始化数据&#xff0…

STM32-IO引脚复用-原理和使用

1.什么是端口复用? STM32有很多的内置外设(把一些功能ADC\看门狗…集中到芯片里面),这些外设的外部引脚都是与GPIO复用的。也就是说,一个GPIO如果可以复用为内置外设的功能引脚,那么当这个GPIO作为内置外设使用的时候&#xff0c…

泰拉瑞亚服务器config修改,泰拉瑞亚配置怎么修改_泰拉瑞亚配置修改方法介绍...

泰拉瑞亚配置怎么修改呢,还有很多玩家还不知道的,下面小编为玩家们带来了泰拉瑞亚配置修改方法介绍,一起来看看吧。泰拉瑞亚配置修改方法介绍Config文件(1)Wiki链接http://terraria.gamepedia.com/Config.json_settings(2)关于Configconfig文…

STM32-UART-串口通信框图-波特率计算

1.处理器与外部设备通信的两种方式: 并行通信 传输原理:数据各个位同时传输。优点:速度快缺点:占用引脚资源多 串行通信 传输原理:数据按位顺序传输。优点:占用引脚资源少缺点:速度相对较慢…