nordic uart ble_central程序分析

在这里插入图片描述
1、程序中第一个指令buttons_leds_init();
1.1 err_code = bsp_init(BSP_INIT_LED, bsp_event_handler);
//BSP_INIT_LED,为所使用的外设资源;
//bsp_event_handler为回调函数的句柄。当有按键按下时将被调用。
---- void bsp_event_handler(bsp_event_t event)在main.c中定义。进行返回事件的相应操作。
void bsp_event_handler(bsp_event_t event)
{
……
switch (event)
{
case BSP_EVENT_SLEEP:
……
}
}

在bsp_init()中进行 bsp_board_leds_init();LED的初始化;同时,利用app_timer_create(&m_leds_timer_id, APP_TIMER_MODE_SINGLE_SHOT, leds_timer_handler);建立定时器。定时超时回调函数为leds_timer_handler。

static void leds_timer_handler(void * p_context)
{
if (m_indication_type & BSP_INIT_LED)
{
UNUSED_VARIABLE(bsp_led_indication(m_stable_state));
}
}
其中bsp_led_indication(m_stable_state),来显示bsp的状态。包括了
BSP_INDICATE_FIRST = 0,
BSP_INDICATE_IDLE = BSP_INDICATE_FIRST,
BSP_INDICATE_SCANNING,
BSP_INDICATE_ADVERTISING,
BSP_INDICATE_ADVERTISING_WHITELIST,
BSP_INDICATE_ADVERTISING_SLOW,
BSP_INDICATE_ADVERTISING_DIRECTED,
BSP_INDICATE_BONDING,
BSP_INDICATE_CONNECTED,
BSP_INDICATE_SENT_OK,
BSP_INDICATE_SEND_ERROR,
BSP_INDICATE_RCV_OK,
BSP_INDICATE_RCV_ERROR,
BSP_INDICATE_FATAL_ERROR,
BSP_INDICATE_ALERT_0,
BSP_INDICATE_ALERT_1,
BSP_INDICATE_ALERT_2,
BSP_INDICATE_ALERT_3,
BSP_INDICATE_ALERT_OFF,
BSP_INDICATE_USER_STATE_OFF,
BSP_INDICATE_USER_STATE_0,
BSP_INDICATE_USER_STATE_1,
BSP_INDICATE_USER_STATE_2,
BSP_INDICATE_USER_STATE_3,
BSP_INDICATE_USER_STATE_ON,
BSP_INDICATE_LAST = BSP_INDICATE_USER_STATE_ON。

在bsp_init()中进行 bsp_board_leds_init();LED的初始化;同时,利用app_timer_create(&m_alert_timer_id, APP_TIMER_MODE_REPEATED, alert_timer_handler);建立定时器。定时超时回调函数为alert_timer_handler。
static void alert_timer_handler(void * p_context)
{
UNUSED_PARAMETER(p_context);
bsp_board_led_invert(BSP_LED_ALERT);
}。

1.2 bsp_btn_ble_init(NULL, &startup_event);初始化BLE按键模式,定义特定功能按键,发生变化后,产生相应的p_startup_bsp_evt的数值。
1.2.1 startup_event_extract(p_startup_bsp_evt);定义启动时,按键所bond的
p_startup_bsp_evt的数值
if (bsp_button_is_pressed(BTN_ID_WAKEUP_BOND_DELETE))//key0
{
*p_startup_event = BSP_EVENT_CLEAR_BONDING_DATA;
}
else if (bsp_button_is_pressed(BTN_ID_WAKEUP))//key1
{
*p_startup_event = BSP_EVENT_WAKEUP;
}
else
{
*p_startup_event = BSP_EVENT_NOTHING;
}

1.2.2 advertising_buttons_configure();定义了广播时各个功能按键的所产生的功能事件。 err_code = bsp_event_to_button_action_assign(BTN_ID_WHITELIST_OFF,
BTN_ACTION_WHITELIST_OFF,
BSP_EVENT_WHITELIST_OFF);

2、db_discovery_init();初始化数据监测模式。
ble_db_discovery_init(db_disc_handler);//db_disc_handler为处理监测模式事件,
static void db_disc_handler(ble_db_discovery_evt_t * p_evt)
{
ble_nus_c_on_db_disc_evt(&m_ble_nus_c, p_evt);
}//用于判断是否与对等的nus进行连接p_evt为监测到的事件handle。并通过p_ble_nus_c->evt_handler(p_ble_nus_c, &nus_c_evt);指针将相关事件信息回传至app函数中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值