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

一、设备网络类型展示

        利用开发板上的三个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亮灭翻转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值