zigbee学习:示例程序SampleApp中按键工作流程
2017-03-08 17:00
302 查看
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()
此函数中判断是否按键事件,如果是则处理:
[cpp] view
plain copy
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判断按键
本文博客链接: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()
此函数中判断是否按键事件,如果是则处理:
[cpp] view
plain copy
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判断按键
相关文章推荐
- zigbee学习:示例程序SampleApp中按键工作流程
- zigbee学习:示例程序SampleApp中按键工作流程
- zigbee学习:示例程序SampleApp中通讯流程
- zigbee学习:示例程序SampleApp中通讯流程
- zigbee学习:示例程序SampleApp中通讯流程
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- 编译原理学习周入门教程--(2)编译程序的六个工作流程
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程
- CORBA程序的工作流程
- Struts工作流程的学习笔记
- j2me学习笔记【1】——helloworld程序示例
- 驰骋工作流程引擎,工作流程管理系统,BPM软件:如何部署silverlight程序?
- java tutorial6, netbeans7 示例程序学习笔记
- Android开发学习笔记(三)——基于Eclipse开发环境的搭建及HelloAndroid示例程序的创建
- 使用MSDN学习ASP.NET的工作流程
- 一直想学习的工作流的程序分享给大家--有关画工作流流程的入门程序(附源码)
- hadoop 学习小结--简单示例程序(3)
- Git学习教程(三):Git工作流程
- Git学习教程(三):Git工作流程