ble协议栈cc2540x-1.3.2之通过key处理过程看任务、事件、消息机制
来源:互联网 发布:淘宝卖家怎么发布宝贝 编辑:程序博客网 时间:2024/05/01 09:13
一 事件机制
每一个任务都会有很多种事件,包括系统消息、任务事件等等。
二 事件的触发启动
函数1:启动一个定时器、定时delaytime时间、之后触发 TaskID 的event事件.延时时间以ms为单位。
osal_start_timerEx( TaskID, event , delaytime );
函数2:置 tasksEvents[]数组的事件标志位为1、系统轮询这个数组确定是否触发事件
osal_set_event( simpleBLEPeripheral_TaskID, SBP_START_DEVICE_EVT );
三 消息机制之创建发送
//给消息定义一个结构体并分配
//设置结构体
msgPtr->hdr.event = KEY_CHANGE;
msgPtr->state = state;
msgPtr->keys = keys;
//发送消息
二 消息机制之接收处理
if ( events & SYS_EVENT_MSG )
{
uint8 *pMsg;
)// 接收消息
{
)//处理消息
) //删除消息空间
}
return (events ^ SYS_EVENT_MSG);
二 按键处理过程:
HalDriverInit();
---> HalKeyInit();// 相关寄存器的设置、 这个函数协议栈里边默认是使能的
--> HAL_KEY_SW_6_SEL &= ~(HAL_KEY_SW_6_BIT); /* Set pin function to GPIO */
--> HAL_KEY_SW_6_DIR &= ~(HAL_KEY_SW_6_BIT); /* Set pin direction to Input */
void InitBoard( uint8 level )
----> HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
/这个函数对,按键相关的寄存器设置为中断模式(协议栈默认的情况下是使用中断方式处理这个按键)
//同时向协议栈注册回调函数 OnBoard_KeyCallback ();
osal_init_system() ;
-----> osalInitTasks(); //各任务初始化
------> uint8 RegisterForKeys( uint8 task_id )
/ 将第一个调用这个函数的TASK_ID 赋值给一个registeredKeysTaskID全局变量
4.按键中断处理函数-----hal_key.h
HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )
--> halProcessKeyInterrupt()-----产生HAL事件
--> osal_start_timerEx (Hal_TaskID, HAL_KEY_EVENT, HAL_KEY_DEBOUNCE_VALUE);
//启动 Hal_TaskID 任务的 HAL_KEY_EVENT 事件处理过程这个处理函数定义在hal_driver.c里边
--> uint16 Hal_ProcessEvent( uint8 task_id, uint16 events )
- ->( pHalKeyProcessFunction) (keys, HAL_KEY_STATE_NORMAL); //这里调用按键回调函数处理按键
--->OnBoard_KeyCallback()--处理键值向注册按键服务的任务发生消息
---> OnBoard_SendKeys ()
--->osal_msg_send() 发送消息的函数
- ble协议栈cc2540x-1.3.2之通过key处理过程看任务、事件、消息机制
- ble协议栈cc2540x-1.3.2之通过key处理过程看任务、事件、消息机制
- ble协议栈cc2540x-1.3.2之hal_board_cfg.h
- ble学习笔记十四---------ble协议栈之按键事件
- BLE 协议栈 之"消息传递""事件触发"谁与争锋
- 事件处理机制之AnsyncTask异步任务
- Zstack协议栈OSAL中添加任务事件消息、发送数据详细过程
- BLE协议栈之Central事件慢慢谈
- 事件处理机制之Handler消息传递机制浅析
- 更新TI BLE蓝牙协议栈过程BLEv1.2
- 全球最低功耗蓝牙单芯片DA14580的软件体系 -层次架构和BLE消息事件处理过程
- Android事件处理之四 Handler消息传递机制
- Linux网络协议栈之数据包处理过程(非技术人员勿看)
- Linux网络协议栈之数据包处理过程(非技术人员勿看)
- ZigBee 中 z-Stack协议中的任务、事件、消息处理流程
- 从SetTimer看Windows消息处理机制
- 从SetTimer看Windows消息处理机制 .
- 从SetTimer看Windows消息处理机制
- 《剑指offer》——把数组排成最小的数
- NOIP 2015 简记
- [转载]如何在德州仪器网站查找下载封装
- impress.js的绚丽演示文稿效果
- Apache虚拟目录与虚拟主机配置
- ble协议栈cc2540x-1.3.2之通过key处理过程看任务、事件、消息机制
- 传智播客javase总结 3
- 新博客地址
- 2015(1018-1025)学习总结_AidanDai
- windows下使用ssh端口转发
- 特权同学的FPGA/CPLD设计学习笔记
- The 11-Step Guide to BYOD Security. How to Avoid Getting Fired
- 【unity插件】BehaviourDesigner行为树插件
- 隔壁阿姨,教女无方,干着急;第一智囊,出谋划策,收奇效