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判断按键
zigbee学习:示例程序SampleApp中按键工作流程的更多相关文章
- zigbee学习:示例程序SampleApp中通讯流程
zigbee学习:示例程序SampleApp中通讯流程 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 参考链接: http://wjf88223.bl ...
- ZigBee HA示例程序分析
ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好.下面就简要分析以下ZCL的使用. 在任务数 ...
- vray学习笔记(2)vray工作流程
在bilibili上面搜索到了一个vray的教程,虽然是英语的,细节方面可能听不太懂,但可以了解整个工作流程,工作流程太重要了,先看下视频的目录: 第1节到第9节都是建模的内容. 第10节和第13节是 ...
- android中Sensor 工作流程
JAVA 程序 我们使用 sensor 接口一般只要注册一下 SensorListener 像下面这样 ************************************************ ...
- VS2012下基于Glut 矩阵变换示例程序2:
在VS2012下基于Glut 矩阵变换示例程序:中我们在绘制甜圈或者圆柱时使用矩阵对相应的坐标进行变换后自己绘制甜圈或者圆柱.我们也可以使用glLoadMatrixf.glLoadMatrixd载入变 ...
- UI 设计的整个工作流程是怎样的?
作为一个专业UI设计师,不仅仅要了解整个产品在UI界面设计,交互设计中的工作流程,更需要了解整个产品从需求提出到产品上线的整个工作流程. 以下是互联网产品个部门的工作分配及流程: 从图中可以看到,一个 ...
- OSG中的示例程序简介
OSG中的示例程序简介 转自:http://www.cnblogs.com/indif/archive/2011/05/13/2045136.html 1.example_osganimate一)演示 ...
- OSG中的示例程序简介(转)
OSG中的示例程序简介 1.example_osganimate一)演示了路径动画的使用 (AnimationPath.AnimationPathCallback),路径动画回调可以作用在Camera ...
- opencv学习之路(1)、示例程序
一.介绍 工欲善其事必先利其器,首先当然是配置环境安装软件啦. 我安装的vs2012+opencv2.48以及opencv3.0.具体安装步骤按照浅墨大神的博客进行即可:http://blog.cs ...
随机推荐
- Javascript实现简单的富文本编辑器
<span style="font-size:14px;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 T ...
- 自己写一个jqery的拖拽插件
说实话,jQuery比原生的js好用多了,本来想用原生写的,也写出来的,仅仅是,感觉不像插件,所以用jQuery实现了一版. 实现的功能:能够指定拖拽的边界,在拖拽过程中,能够触发几个自己定义事件 先 ...
- Ajax - 登录
Login.html <head> <title>登录</title> <mce:script src="js/jquery-1.5.2.js&qu ...
- 百度地图new BMap.LocalCity() 问题
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 关于sizeof的笔试面试题具体解释
原创Blog,转载请注明处处 http://blog.csdn.net/hello_hwc 注意:sizeof是编译期计算出结果的,这一点对后面的理解非常重要 一.关于结构体 先看下代码 #inclu ...
- 苹果手表的真实触感信息(Real Touch Messaging)
苹果手表凭借其炫酷的设计和界面,无疑已成为一个新的科技焦点,也是苹果在可穿戴领域的重头戏. Apple Watch 有一个非常吸引人的特性:Real Touch Messaging,也就是真实触感消息 ...
- 使用VC++压缩解压缩文件夹
前言 项目中要用到一个压缩解压缩的模块, 看了很多文章和源代码, 都不是很称心, 现在把我自己实现的代码和大家分享. 要求: 1.使用Unicode(支持中文). 2.使用源代码.(不使用静态或 ...
- C#实现树的双亲表示法
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVja3k1MTIyMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- jQuery EasyUI API 中文文档 - 布局(Layout)
<html> <head> <script src="jquery-easyui/jquery.min.js"></script> ...
- hdu 2642 二维树状数组 单点更新区间查询 模板水题
Stars Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/65536 K (Java/Others) Total Subm ...