zigbee笔记:十一、设备网络类型展示与按键实验

news2024/11/13 11:57:58

一、设备网络类型展示

        利用开发板上的三个LED灯来显示设备当前的网络类型(协调器、路由器、终端)。

        1、添加LED灯的初始化代码

        1)开发板LED原理图

        2)在模板工程的...Projects\zstack\Samples\smartHomeApp\Source目录下新建两个文件zfm.h和zfm.c,然后在IAR中打开模板工程,在APP目录下添加自己的头文件和源文件(zfm.h和zfm.c),并编译相应的代码。
 

        2 、在APP目录下smartHomeApp.c文件中修改相应代码

         1)在APP目录下smartHomeApp.c文件中,添加#include "zfm.h"

         2)找到smartHomeApp_ProcessEvent函数,在对应位置修改代码,如下图

        3、在ZMain目录下ZMain.c添加LED初始化代码

        1)找到函数入口main函数,在对应位置修改代码,如下图

        4 、选择不同的设备类型编译,然后下载代码       

        1) 通过编译选项,选择不同的设备类型编译,然后下载代码即可。

        2)现象如下

        PS:编译如果有报错,可参考:zigbee笔记:十、ZStack(2.3.0-1.4.0)的OSAL使用分析-CSDN博客

二、按键实验

         利用开发板上的按键和LED灯,通过外部中断来触发OSAL系统的应用任务(task)的一个自定义事件(event),在这个事件中完成对LED灯亮灭控制。

        1、首先定义一个在应用任务中自己的事件

        在APP目录下smartHomeApp.h文件中,定义一个在应用任务中自己的事件,如下图

        2、添加LED灯和按键的初始化代码

        1)开发板LED和按键原理图

         2)在模板工程的...Projects\zstack\Samples\smartHomeApp\Source目录下新建一个文件interrupt.c,然后在IAR中打开模板工程,在APP目录下添加该源文件(interrupt.c),并编写相应的代码,如下图和代码。

#include <iocc2530.h>
#include"zfm.h"
#include"smartHomeApp.h"

 extern unsigned char smartHomeApp_TaskID;

extern uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value );

#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR( void )
{
    if( P0IFG & 0x02 )           //按键中断
    {
        //触发应用任务的smartHomeApp_ZFM_EVT事件
        osal_start_timerEx( smartHomeApp_TaskID, smartHomeApp_ZFM_EVT, 250 );
      
    }
    P0IFG = 0;   //清除中断标志
    P0IF = 0;     //清除中断标志
}

//  初始化Btn1 P0_1
void InitBtn1()
{
    P0SEL &= ~0x02; // 普通外设模式
     P0DIR &= ~0x02;  // 设为输入
      P2INP &= ~0x20; // P0组为上下拉
      P0INP &= ~0x02; // P0_2为上拉
}
//始化Btn1的中断
void InitBtn1Interrupt()
{

  PICTL |= 0X01;   //下降沿触发
    EA = 1;        //开启总中断
    P0IE = 1;     //开启组中断
    P0IEN |= 0x02;    //开启位中断
  P0IFG |= 0x00;   //初始化中断标志位
}
// Btn1扫描函数,检测按下返回1,否则返回0

   3 、在APP目录下smartHomeApp.c文件中修改相应代码

        1)在 zfm.h文件中声明interrupt.c中的函数

        2)在APP目录下smartHomeApp.c文件中,添加#include "zfm.h"

         3)找到smartHomeApp_ProcessEvent函数,在对应位置添加自定义的应用任务事件处理内容,如下图

        4、在ZMain目录下ZMain.c添加LED初始化代码

        1)找到函数入口main函数,在对应位置修改代码,如下图

         5、编译下载

        现象,按下按键1,LED2亮灭翻转

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

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

相关文章

【TabBar嵌套Navigation案例-发现页面-按钮上的图片旋转 Objective-C语言】

一、接下来,我们来做这个,点击以后,让它出一个蓝色的View 1.就是我们示例程序的这种效果, 一点击,让这个按钮旋转,然后呢,再让它出来一个蓝色的View, 首先,我们要去监听它的点击事件,这是第一,我点击以后,我要做一些什么样的操作,要有点击事件, 所以呢,我要把…

Processing中库和导出PDF内容

一.库 1.使用库的方式 从菜单栏&#xff08;Sketch Menu)选择导入库(import labrary),选择一个我们要添加或者成需要用到的库。 例如&#xff1a;当我们需要添加PDF扩展库时&#xff0c;需要将下面这段代码添加到草图中。 import processing.pdf.*; 除了processing里的库&…

ElasticSearch聚合操作详解

文章目录 聚合操作聚合的分类测试数据Metric AggregationBucket Aggregation获取job的分类信息限定聚合范围Range & Histogram聚合聚合嵌套 Pipeline Aggregation聚合的作用范围排序ES聚合分析不精准原因分析聚合性能优化启用 eager global ordinals 提升高基数聚合性能插入…

【Unity-本地化】简单的游戏本地化处理方案

目录 0 前言1 多语言配置2 本地化实现2.1 读取多语言文本的通用方法2.2 动态文本本地化2.3 静态文本本地化 3 方案扩展3.1 LanguageText扩展3.1.1 展示Excel里对应ID的文本3.1.2 自动填充ID3.1.3 同步prefab的修改3.1.4 完整代码 3.2 自动LanguageText挂载 4* 内嵌文本图片的本…

AI预测福彩3D采取888=3策略+和值012路或胆码测试8月14日新模型预测第56弹

好长时间没进行总结了&#xff0c;今天咱们做一个总结&#xff0c;总结一下最新模型经过50多期的测试结果&#xff1a; 经过近50多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率…

restful传值

GetMapping 普通的get请求 后端&#xff1a; restfule的get请求 通过/asd/123这种方式get请求传入后端 前端 url: /system/role/deptTree/ roleId / tenantId, method: get后端PathVariable从path上取对应的值 通过 GetMapping(value "/deptTree/{roleId}/{tenan…

Windows平台RTSP|RTMP播放器如何实时调节音量

我们在做Windows平台RTSP、RTMP播放器的时候&#xff0c;有这样的技术需求&#xff0c;特别是多路监控的时候&#xff0c;并不是每一路audio都需要播放出来的&#xff0c;所以&#xff0c;这时候&#xff0c;需要有针对音量调节的设计&#xff1a; /** smart_player_sdk.cs* C…

3DsMax如何给模型添加一个外壳

3DsMax如何给模型添加一个外壳 在3DsMax中添加外壳 复制一个使用缩放添加一个外壳&#xff08;适用性不多&#xff09; 复制一份&#xff0c;修改复制的模型的缩放&#xff0c;模型套模型作为外壳。&#xff0c;当模型是管道的时候就不大行。 使用壳修改器 添加之后&#…

pyqt5 爬虫开源项目

使用 PyQt5 进行网络爬虫开发通常涉及创建一个图形用户界面(GUI)来管理和展示爬虫的运行状态和结果。以下是一些结合 PyQt5 和网络爬虫技术的开源项目,可以作为学习和参考的好资源: PySpider-GUI: 简介: 一个基于 PyQt5 的网络爬虫 GUI,用于管理和运行爬虫任务。GitHub: P…

DHCP 笔记 + 配置示例

一、概念 DHCP 3 种渠道&#xff1a; 1、基于接口 2、基于全局 3、基于中继 DHCP正常 4 个阶段和 8 种报文&#xff1a; 1、Client&#xff1a;Discover 2、Server&#xff1a;Offer …

python结合csv和正则实现条件筛选数据统计分数

前景提要&#xff1a; 有一个项目的数值和员工统计的对不上&#xff0c;如果一页一页翻找自己手动算&#xff0c;一个就有16、7页&#xff0c; 功能实现 1、创建csv文件 需要将每一个模块的所有数据头提取出来&#xff0c;这个可以直接用爬虫或者手工复制出来&#xff0c;因…

SpringCloud-01

单体架构 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署 优点 架构简单 部署成本低 缺点 耦合度高 分布式架构 根据业务功能对系统进行拆分&#xff0c;每个业务模块作为单独项目开发&#xff0c;称为一个服务。 优点 降低服务耦合 有利于服务升级…

Spring Cloud Alibaba微服务组件学习笔记

文章目录 一、版本说明版本关系项目创建 二、Nacos注册中心什么是NacosNacos注册中心核心功能Nacos Server部署&#xff08;windows版本&#xff09;Nacos Client服务Nacos Server配置项详解&#xff1a;Nacos集群搭建&#xff1a; 三、Ribbon负载均衡主流的负载方案&#xff1…

网工必备-网络设备配置文件及日志高亮显示Sublime Text

文章目录 下载Sublime Text 4下载高亮配色文件使用方法 之前推荐了一款文本编辑工具【编写脚本及查看日志的高亮文本编辑工具——EverEdit】&#xff0c;可以针对网络工程师们日常的网络设备配置文件及日志的高亮显示&#xff0c;但是需要保存后才可以显示高亮&#xff0c;虽然…

AI预测体彩排3采取888=3策略+和值012路或胆码测试8月14日升级新模型预测第51弹

好长时间没进行总结了&#xff0c;今天咱们做一个总结&#xff0c;总结一下最新模型经过50多期的测试结果&#xff1a; 经过近50多期的测试&#xff0c;当然有很多彩友也一直在观察我每天发的预测结果&#xff0c;得到了一个非常有价值的信息&#xff0c;那就是9码定位的命中率…

深入探讨Linux的进程调度器

Linux操作系统作为一个开源且广泛应用的操作系统&#xff0c;其内核设计包含了许多核心功能&#xff0c;而进程调度器&#xff08;Scheduler&#xff09;就是其中一个至关重要的模块。进程调度器负责决定在任何给定的时刻哪个进程可以运行&#xff0c;以及其运行的顺序。这篇文…

如何编写一个CMakeLists.txt文件(由简到难,较详细)

在Linux系统下&#xff0c;经常使用CMakeLists.txt文件来链接、编译C工程&#xff0c;大部分人clone的代码里都是有CMakeLists.txt文件的&#xff0c;只需要cmake .. 和make就完事了&#xff0c;但在工作中&#xff0c;你必须要有从无到有编写CMakeLists.txt文件的能力。 一、…

一款简易大众点评项目实战——达人探店、关注、附近商圈、签到、UV统计

一款简易大众点评项目实战——达人探店、关注、附近商圈、签到、UV统计 8.达人探店8.1上传接口与发布笔记接口8.2 达人探店-查看探店笔记8.3 达人探店-点赞功能8.4 达人探店-点赞排行榜 9、好友关注9.1 好友关注-关注和取消关注9.2 好友关注-共同关注9.3 好友关注-Feed流实现方…

Visual Studio 2024安装教程(非常详细),从零基础入门到精通,看完这一篇就够了(附安装包)

软件下载 软件&#xff1a;Visual Studio版本&#xff1a;2022语言&#xff1a;简体中文大小&#xff1a;4.11M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baid…

C语言-在主函数中输入10个等长的字符串。用另一函数对他们进行排序,然后再主函数输出这10个排好序的数列(分别用数组法和指针法实现)

在主函数中输入10个等长的字符串。用另一函数对他们进行排序&#xff0c;然后再主函数输出这10个排好序的数列&#xff08;分别用数组法和指针法实现&#xff09; 一、数组法实现 void str_sort(char str[][32], int n) {int i, j;for (i 0; i < n - 1; i){for (j 0; j …