Zstack之HAL层增加新的按键key的分析笔记3
来源:互联网 发布:哪个理财软件最好 编辑:程序博客网 时间:2024/06/06 17:09
之前分析了新增按键在使用中断检测方式时所需要进行的代码修改,这里再小小地做一点补充和改动即可。最主要的问题是TI官方开发板上的摇杆按键的读取容易导致BUG。
而程序代码根据变量Hal_KeyIntEnable来执行不同的具体代码。这样就导致了BUG了。
要做的修改其实也不多,主要在于对HalKeyPoll()这个函数的代码修改,具体如图1所示:
图1
在这其中,可以看出,我屏蔽掉了所有关于摇杆按键键值检测部分的代码,而不管是否使能硬件检测方式检测按键,调用HalKeyPoll()函数都会执行相同的代码了。这就是要修改的代码。
另外就是需要屏蔽一个全局变量:halKeySavedKeys,该变量用于存储之前一次检测到的摇杆键值。需要屏蔽的地方有以下几处:
1、Hal_key.c中该变量的定义:/*static uint8 halKeySavedKeys; used to store previous key state in polling mode
2、Hal_key.c中的HalKeyInit()函数中关于该变量的初始化:halKeySavedKeys = 0;
3、HalKeyPoll()函数中屏蔽掉关于摇杆键值检测那部分即可。
然后根据分析笔记2最后所讲,在InitBoard()函数中通过对OnboardKeyIntEnable变量进行赋值即可实现使能硬件检测或者软件轮询方式检测按键了。如图2所示:
图2
这样Zstack就是通过软件定时查询的方式来检测按键信息了。
对于HAL层的修改,主要在于三个方面:1、宏定义,存在于hal_模块名称.h和Hal_board_cfg.h这两个头文件中;2、HAL层模块初始化部分代码需要根据初始化流程做相应的修改;3、HAL层模块的检测使用部分的代码也需要根据流程做相应的修改。如果熟悉了OSAL工作的模式,对于其流程也应该是很清晰很好修改的了。
对于按键的检测,两种方式在执行到Hal_ProcessEvent()之前的检测机制是不一样的,但都是使用osal_start_timerEx()函数设置一段时间后进入Hal_ProcessEvent()处理的。按键的中断检测方式是在中断中调用定时器函数,而软件轮询方式,则是不停调用定时器函数osal_start_timerEx()定时间隔扫描按键的。
- Zstack之HAL层增加新的按键key的分析笔记3
- Zstack之HAL层增加新的按键key的分析笔记1
- Zstack之HAL层增加新的按键key的分析笔记2
- 【CC2541】CC2541之HAL层KEY分析
- mxnet系列之 增加新的层
- AlarmManagerService的hal层分析
- caffe增加新的层
- Android添加一个新的按键Key
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- android关于GPS hal层的分析
- HAL向上层提供接口的分析
- android 增加一个新的硬按键
- CC2540的HAL层UART学习笔记
- zstack之应用层的发送函数及绑定(CC2530)
- zstack之应用层的发送函数及绑定(CC2530)
- Linux下批量杀掉 包含某个关键字的 程序进程
- golang字符、字符串的那些事儿
- Android修炼之道—ListView的HeaderView的问题
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- 自定义java 线程池
- Zstack之HAL层增加新的按键key的分析笔记3
- 拓扑排序——nyoj 496
- oracle10g获取Date类型字段无时分秒解决办法!
- 软工视频总结
- c# 中常用的正则表达式总结
- ubuntu spark中文乱码解决方法
- 银行业务调度系统改进
- 关于在JSP中include其他页面后,dreamweaver的设计视图无法显示
- 基于Libevent的HTTP Server