zoukankan      html  css  js  c++  java
  • zigbee学习之路(十五):基于协议栈的按键实验

    一.前言

         经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了。今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断。

    二.实验功能

        在协议栈上实现按键中断,BUT1 按下,LED1 闪烁两次。

    三.代码讲解

        大家还记得,前面做过的按键实验是怎么配置的吗,其实基于zigbee的协议栈原理是差不多的,我们要对按键的接口和状态是差不多,TI已经为我们建立了专用的按键配置的代码文件,我们只要在此基础上修改就行了。先打开hel_key.c进行修改,下面是代码

    #define HAL_KEY_SW_6_PORT   P0   //1、配置IO口(S1在P0_4)

    #define HAL_KEY_SW_6_BIT    BV(4)

    #define HAL_KEY_SW_6_SEL    P0SEL

    #define HAL_KEY_SW_6_DIR    P0DIR/* edge interrupt */

    #define HAL_KEY_SW_6_EDGEBIT  BV(0)

    #define HAL_KEY_SW_6_EDGE     HAL_KEY_RISING_EDGE //2、P0上升沿触发中断/* SW_6 interrupts */

    #define HAL_KEY_SW_6_IEN      IEN1  /* CPU interrupt mask register */

    #define HAL_KEY_SW_6_IENBIT   BV(5) /* Mask bit for all of Port_0 */

    #define HAL_KEY_SW_6_ICTL     P0IEN /* Port Interrupt Control register */

    #define HAL_KEY_SW_6_ICTLBIT  BV(4) /* P0IEN - P0.1 enable/disable bit */

    #define HAL_KEY_SW_6_PXIFG    P0IFG /* Interrupt flag at source */

    以上就是对按键端口进行配置,和我们普通的I/O口初始化差不多。

    然后我们继续修改,在hal_board_cfg.h 中修改

    #define PUSH1_BV BV(4)//S1 在P0_4
    #define PUSH1_SBIT P0_4

    最后,我们在OnBoard.c中进行修改

    默认为查询方式,现在我们将其改为中断方式

    我们既然使用了中断,就要配置并用它,在hal_key.c函数中开启中断

    这样的话,按键相关的配置就出不多完成了,只要等着zigbee中的事件函数调用就行了。下面是具体的按键的处理函数。

    void SampleApp_HandleKeys( uint8 shift, uint8 keys )
    {
      (void)shift;  // Intentionally unreferenced parameter
     
      if ( keys & HAL_KEY_SW_6 )
      {
        HalUARTWrite(0,"K1",2); //提示被按下的是KEY1
        HalUARTWrite(0," ",1); //
        HalLedBlink( HAL_LED_1, 2, 50, 500 ); //LED1闪烁2次,每次为500ms,点亮时间为50%
      }

    当检测到按键按下的时候,我们就可以看到灯闪烁的效果了

    四.总结

        通过本次,主要想向大家介绍的是zigbee里的按键函数以及运用,根据按键对应的不同I/O口,来进行修改,达到自己的目的,需要具体代码的同学可以联系我。

      

  • 相关阅读:
    HDU 4611 Balls Rearrangement 数学
    Educational Codeforces Round 11 D. Number of Parallelograms 暴力
    Knockout.Js官网学习(简介)
    Entity Framework 关系约束配置
    Entity Framework Fluent API
    Entity Framework DataAnnotations
    Entity Framework 系统约定配置
    Entity Framework 自动生成CodeFirst代码
    Entity Framework CodeFirst数据迁移
    Entity Framework CodeFirst尝试
  • 原文地址:https://www.cnblogs.com/sjsxk/p/5381978.html
Copyright © 2011-2022 走看看