【NCS随笔】如何在hello_world添加蓝牙功能(一)
如何在hello_world添加蓝牙功能(一)
环境准备
硬件:nRF54L15DK
软件版本:NCS3.0.2
例程:hello_world
宏的配置
# Config loggerCONFIG_LOG=yCONFIG_USE_SEGGER_RTT=yCONFIG_LOG_BACKEND_RTT=yCONFIG_LOG_BACKEND_UART=nONFIG_CONSOLE=y#添加蓝牙从机
CONFIG_BT=yCONFIG_BT_PERIPHERAL=yCONFIG_BT_DEVICE_NAME="Hello_World"CONFIG_DK_LIBRARY=y#关闭Zephyr系统打印
CONFIG_BOOT_BANNER=nCONFIG_NCS_BOOT_BANNER=n#关闭SPI,目前不需要
CONFIG_SPI_NOR=n
main添加蓝牙功能
添加广播包
#广播包
static const struct bt_data ad[] ={BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN),};#扫描回应包
static const struct bt_data sd[] ={BT_DATA_BYTES(BT_DATA_UUID128_ALL, 0x84, 0xaa, 0x60, 0x74, 0x52, 0x8a, 0x8b, \0x86, 0xd3, 0x4c, 0xb7, 0x1d, 0x1d, 0xdc, 0x53, 0x8d),
};BT_CONN_CB_DEFINE(conn_callbacks) ={.connected = connected,.disconnected = disconnected,};/* Private Functions ---------------------------------------------------------*/static void connected(struct bt_conn *conn, uint8_t err){if (err){printk("Connection failed (err %u)\n", err);
return;}printk("Connected\n");dk_set_led_on(CON_STATUS_LED);}static void disconnected(struct bt_conn *conn, uint8_t reason){printk("Disconnected (reason %u)\n", reason);dk_set_led_off(CON_STATUS_LED);}
main
int main(void){int err = 0;int blink_status = 0;err = dk_leds_init();if (err){//printk("LEDs init failed (err %d)\n", err);return err;}err = bt_enable(NULL);if (err){//printk("Bluetooth init failed (err %d)\n", err);return 0;}//printk("Bluetooth initialized\n");err = bt_le_adv_start(BT_LE_ADV_CONN_1, ad, ARRAY_SIZE(ad),sd, ARRAY_SIZE(sd));if (err){//printk("Advertising failed to start (err %d)\n", err);return err;}// printk("Advertising successfully started\n");LOG_INF("BLE start");for (;;){dk_set_led(RUN_STATUS_LED, (++blink_status) % 2);k_msleep(500);}return 0;}