CCCD的全称是Client Characteristic Configuration Descriptor客户端特征配置描述符其 UUID 为0x2902。它是蓝牙 GATT 协议中一个非常重要的标准描述符。它的作用是什么简单说CCCD 是客户端比如手机 App用来告诉服务端“请开始给我发送通知”或“请停止发送通知”的开关。当一个特征支持Notify或Indicate属性时即设备可以主动向手机推送数据该特征必须附带一个 CCCD。手机连接后如果想接收这个特征的实时更新比如心率、电池电量就会向 CCCD 写入特定的值写入0x0001→ 使能Notification通知写入0x0002→ 使能Indication指示需要确认写入0x0000→ 禁止所有推送需要自己配置 CCCD 吗在 Nordic SDK 中绝大部分工作已经被封装好了你通常不需要手动配置 CCCD。SDK 自动完成的部分当你调用ble_bas_init()并设置support_notification true时ble_bas.c内部会自动调用characteristic_add()添加电池电量特征时自动为它添加一个 CCCD因为设置了char_props.notify 1。自动生成并保存 CCCD 的句柄到p_bas-battery_level_handles.cccd_handle。自动在ble_bas_on_ble_evt()中监听写入事件并调用上述on_write函数。自动检查 CCCD 状态在ble_bas_battery_level_update()发送通知前会通过ble_conn_state模块判断该连接是否已使能通知。