zoukankan      html  css  js  c++  java
  • zigbee学习:示例程序SampleApp中按键工作流程

    zigbee学习:示例程序SampleApp中按键工作流程


    本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.

     

    环境:

    主机:WIN7

    开发环境:IAR8.10.3

    MCU:CC2530

    示例程序:SampleApp


    按键电路:


    电路原理为利用ADC采集JOY_LEVEL脚电压,根据电压判断按键.

    不同按键的电压值:

    UP:0.1VCC

    DN:0.38VCC

    LT:0.54VCC

    RT:0.60VCC

    PUSH:0.7VCC

    程序中利用8位分辨率,第一位为符号位,即7位分辨率分辨

    程序中AD值表电压值

    UP:2-380.02VCC-0.30VCC

    DN:39-590.30VCC-0.46VCC

    LT:60-730.47VCC-0.57VCC

    RT:74-880.58VCC-0.69VCC

    PUSH:89-1000.70VCC-0.78VCC

    可见,程序检测与按键是能够匹配.


    代码结构:

    程序中按键检测机制为轮询机制,周期为100ms.

    工作步骤:

    1.main()函数中调用InitBoard()函数

    2.此函数调用函数HalKeyConfig(HAL_KEY_INTERRUPT_DISABLE, OnBoard_KeyCallback)

    3.此函数配置按键服务,如果是轮询机制,则调用函数osal_set_event(Hal_TaskID, HAL_KEY_EVENT),此函数启动按键事件,任务为Hal_TaskID

    4.main()函数中调用硬件驱动初始化函数HalDriverInit()

    5.此函数调用按键初始化函数HalKeyInit(),完成按键初始化

    6.因为步骤3启动按键事件,所以进入Hal_TaskID处理函数Hal_ProcessEvent()

      此函数中判断是否按键事件,如果是则处理:

     

        HalKeyPoll();
    
        /* if interrupt disabled, do next polling */
        if (!Hal_KeyIntEnable)
        {
          osal_start_timerEx( Hal_TaskID, HAL_KEY_EVENT, 100);
        }

      首先轮询按键,然后启动定时器,100ms后再度轮询

    7.轮询函数中调用halGetJoyKeyInput()函数,此函数调用读取ADC函数adc = HalAdcRead (HAL_KEY_JOY_CHN, HAL_ADC_RESOLUTION_8),然后根据ADC判断按键



  • 相关阅读:
    qml: QtCharts模块得使用(数据整合和显示) ---- <二>
    qml: QtCharts模块的使用(基本配置)------<一>
    【转载】Qt之JSON生成与解析
    qml: 支持的基本类型
    opencv: 基本知识;
    qml: 模块定义与使用
    Android studio开发中遇到的错误
    阅读笔记——《人月神话》5
    Android studio Adapter基础
    Android studio Date & Time组件2
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3162883.html
Copyright © 2011-2022 走看看