CC2541_Key部分理解
来源:互联网 发布:腰包 知乎 编辑:程序博客网 时间:2024/05/21 18:37
此博文最后修改时间 2016-12-31
一、简介
对CC2541按键程序部分理解
二、实验环境
协议栈版本:BLE-CC254x-1.3.2
编译软件:IAR 8.10
硬件:Smart RF开发板 CC2541
工程:SimpleBLEPeripheral
三、版权声明
博主:Jackie_Wuxi
声明:喝水不忘挖井人
四、细解(若理解有误,欢迎更正)
4.1前提
1)阅读 Amo的BLE-入门与提高教程(2014.10.22).pdf P128
2)CC2541之按键 http://blog.csdn.net/feilusia/article/details/47336473
4.2详解
main初始化
1-InitBoard(OB_READY );
2-InitBoard调用HalKeyConfig(OnboardKeyIntEnable, OnBoard_KeyCallback); 该函数开启了按键中断 //决定了按键是用中断查询的
Hal_KeyIntEnable 用于中断和轮询的判断,pHalKeyProcessFunction 即OnBoard_KeyCallback函数
HalKeyConfig配置P01falling edge 触发中断,也可以配置成rising edge
3-hal_key.c中HAL_ISR_FUNCTION(halKeyPort0Isr, P0INT_VECTOR )调用halProcessKeyInterrupt() //P01 对应按键S1
4-halProcessKeyInterrupt初次判断按键是否按下,函数末尾启动定时HAL_KEY_EVENT,
5-任务Hal_ProcessEvent判断HAL_KEY_EVENT事件并调用HalKeyPoll 判断出哪个按键按下
(步骤4启动HAL_KEY_EVENT事件到HalKeyPoll 函数判断出哪个按键,这段时间相当于延迟时间,用于按键去抖)
6-HalKeyPoll调用pHalKeyProcessFunction,相当于调用OnBoard_KeyCallback
7-OnBoard_KeyCallback调用OnBoard_SendKeys, 同时涉及按键发现方式切换
中断方式发现按键和扫描方式发现按键切换代码
HalKeyConfig函数中
8-OnBoard_SendKeys调用osal_msg_send(registeredKeysTaskID, (uint8 *)msgPtr );
9-接下来就跳到注册了key的任务事件SYS_EVENT_MSG中去
RegisterForKeys( SimpleBLETest_TaskID );
10-最后在simpleBLEPeripheral_HandleKeys 处理
五、参考文献
http://blog.csdn.net/feilusia/article/details/47336473
- CC2541_Key部分理解
- DLL部分理解
- typename 部分理解
- CodeIgniter部分个人理解
- 基础理解部分
- TCP/UDP部分理解
- gcc部分参数理解
- Touch--驱动部分理解
- css部分理解
- 二阶贝塞尔曲线部分理解
- Makefile部分学习理解
- 接口的部分理解
- servlet部分理解
- .net 委托的部分理解
- Symbian有待理解的部分
- InvalidateRect中的“部分区域”理解
- 理解ext4,第一部分(extents)
- GCD 深入理解:第一部分
- ubuntu安装postgresql
- 创建型模式之工厂方法FACTORY METHOD
- 魅族适配menuitem没显示
- 从零开始制作2048游戏
- Windows 环境下配置搭建Redis集群
- CC2541_Key部分理解
- android中File Explorer下的data下的目录打不开,我用的平板。想把外界来的数据库植入进去,怎么办?
- 看完才知道酒瓶用处这么多
- 如何获取recyclerView的第一个Item的视图
- Python 1. 如何选择python版本,以及如何选择开发环境(IDE)
- vim自动补全神器Youcompleteme的安装
- 系统学习C语言
- 系统功能设置
- 安卓定时任务Timer一直失败