(BLE)CC2541按键程序大致处理流程

本文介绍了CC2541蓝牙BLE设备的按键程序处理流程,包括在osal_init_system()中注册任务ID,设置按键回调服务,处理HAL_KEY_EVENT事件以及调用HalKeyPoll()进行按键轮询。
摘要由CSDN通过智能技术生成

1) 向一个全局变量 registeredKeysTaskID中赋值自己的任务 ID,调用了这个函数就能成功注册按键服务

      在osal_init_system()中调用osalInitTasks()初始化系统任务,调用应用程序初始化函数void SimpleBLETest_Init( uint8 task_id );

void SimpleBLETest_Init( uint8 task_id )
{ //保存任务id到全局变量   
  SimpleBLETest_TaskID = task_id;       

  // 串口初始化 波特率默认是115200, 形参是回调函数
  NPI_InitTransport(NpiSerialCallback);

  //lcd 显示
  HalLcdWriteString( "SimpleBLETest 11", HAL_LCD_LINE_1 );


  // Register for all key events - This app will handle all key events
  RegisterForKeys( SimpleBLETest_TaskID );

  // Setup a delayed profile startup  
  /*
  设置一个任务, 这么做的目的是按照多任务处理的方法来做
  SimpleBLETest_ProcessEvent 就是处理 SBP_START_DEVICE_EVT
  */
  osal_set_event( SimpleBLETest_TaskID, SBP_START_DEVICE_EVT );
}


2)  一个按键回调服务注册函数,注册了一个OnBoard_KeyCallback函数

void InitBoard( uint8 level )
{
  if ( level == OB_COLD )
  {
    // Interrupts off
    osal_int_disable( INTS_ALL );
    // Turn all LEDs off
    HalLedSet( HAL_LED_ALL, HAL_LED_MODE_OFF );
    // Check for Brown-Out reset
//    ChkReset();
  }
  else  // !OB_COLD
  {
    /* Initialize Key stuff */
    OnboardKeyIntEnable = HAL_KEY_INTERRUPT_ENABLE;
    //OnboardKeyIntEnable = HAL_KEY_INTERRUPT_DISABLE;
    HalKeyConfig( OnboardKeyIntEnable, OnBoard_KeyCallback);
  }
}


3) 有按键值,则进入void halProcessKeyInterrupt (void)函数

void halProcess
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值