BLE按键整理

1 定义ID:

static uint8 SimpleBLETest_TaskID;

2 初始化的时候给ID赋值:

SimpleBLETest_TaskID = task_id;

3 注册按键的任务:

RegisterForKeys( SimpleBLETest_TaskID );

4 启动初始化任务,基本没个工程都是如此,也就是初始化函数初始化后执行的事件,我们自己定义的:

osal_set_event( SimpleBLETest_TaskID,SBP_START_DEVICE_EVT );

5 应用程序事件响应函数

uint16 SimpleBLETest_ProcessEvent( uint8task_id, uint16 events )

a 系统事件,这个事件就是包括了按键事件,和蓝牙接收数据,发送数据事件。

           if ( events & SYS_EVENT_MSG )

  {

    uint8 *pMsg;

 

    if ( (pMsg =osal_msg_receive( SimpleBLETest_TaskID )) != NULL )//接收这个任务来的消息。

    {

      simpleBLECentral_ProcessOSALMsg((osal_event_hdr_t *)pMsg );//相当于消息处理

  

      // Release the OSALmessage

      VOIDosal_msg_deallocate( pMsg );释放这个消息

    }

 

    // return unprocessedevents

    return (events ^SYS_EVENT_MSG);

  }

b 初始化函数执行后的事件,这个系统开始运行了。

 if ( events &SBP_START_DEVICE_EVT )

  {

    HalLedSet(HAL_LED_1,HAL_LED_MODE_ON);      // 点亮led1              

 

    // 返回这个, 告诉osal,这个实践你已经处理了

    return ( events ^SBP_START_DEVICE_EVT );  

  }

   6 首先是当系统事件来的时候,会设置SYS_EVENT_MSG,然后我们在接收系统消息,后执行处理消息函数simpleBLECentral_ProcessOSALMsg( (osal_event_hdr_t *)pMsg );

            可以根据接收到消息的pMsg->event值,来判断是按键还是别的消息。

 

   7 当是按键消息的时候,我们直接调用按键处理函数,

8 按键处理函数

simpleBLECentral_HandleKeys(((keyChange_t *)pMsg)->state, ((keyChange_t *)pMsg)->keys );

 

9 static voidsimpleBLECentral_HandleKeys( uint8 shift, uint8 keys );

课根据keys的不同,断定出是哪个按键被按下了。

 

 

问题:

看到这里现在处在的问题有如下:

1 按键事件是怎么产生的,以及对应的是那个引脚?

 

答:

首先从驱动说起,

上图是宏定义了几个寄存器;

接下来就是初始化函数:

设置触发沿

 

接下来就直接进入中断处理函数;

 

当我们定义的按键发生了的时候,会设置valid变量为true最后面的if语句,判断否执行

 

在下面的这个函数就能确定按键是谁产生的了

 

在应用层可用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值