1.开发准备
1.1.nRF51/52开发板,这里我使用的是nRF52832开发板,店家提供的资料很多
1.2.开发环境,这里我不详细介绍
2.修改LED程序
由于nRF历程把LED的特性(charateristic)的值(value)固定了,所以这里我们添加的功能的,
收到1是不止点亮LED3,并反转LED4的状态。具体实现步骤如下:
2.1.先初始化LED4,添加的位置在main.c
#define LEDBUTTON_LED_PIN4 BSP_LED_3_MASK
static void leds_init(void)
{
LEDS_CONFIGURE(ADVERTISING_LED_PIN | CONNECTED_LED_PIN | LEDBUTTON_LED_PIN | LEDBUTTON_LED_PIN4);
LEDS_OFF(ADVERTISING_LED_PIN | CONNECTED_LED_PIN | LEDBUTTON_LED_PIN | LEDBUTTON_LED_PIN4);
}
2.2.修改回调函数led_write_handler,在if语句里面添加
LEDS_INVERT(LEDBUTTON_LED_PIN4);
3.修改按键反馈程序
3.1.添加宏定义以及修改结构体数值
#define LEDBUTTON_BUTTON_PIN1 BSP_BUTTON_1
static app_button_cfg_t buttons[] =
{
{LEDBUTTON_BUTTON_PIN0, false, BUTTON_PULL, button_event_handler},
{LEDBUTTON_BUTTON_PIN1, false, BUTTON_PULL, button_event_handler}
};
3.2.在ble_lbs.c写发送函数ble_button2_send(ble_lbs_t * p_lbs, uint8_t val)记得在ble_lbs.h里声明
uint32_t ble_button2_send(ble_lbs_t * p_lbs, uint8_t val)
{
ble_gatts_hvx_params_t params;
uint16_t len = sizeof(val);
memset(¶ms, 0, sizeof(params));
params.type = BLE_GATT_HVX_NOTIFICATION;
params.handle = p_lbs->button_char_handles.value_handle; //Button characteristic value handle
params.p_data = &val;
params.p_len = &len;
return sd_ble_gatts_hvx(p_lbs->conn_handle, ¶ms);
}
3.3.修改回调函数button_event_handler,添加执行选项
case LEDBUTTON_BUTTON_PIN1:
ble_button2_send(&m_lbs, 2);
break;