Nordic如何修改特征的UUID为128位?

 项目设计中,通常服务UUID为128bit,特征的UUID只修改服务UUID中的两个字节,其余字节保持不变;而一些特殊项目中会要求特征的UUID是与服务UUID完全不同的128bit的值,本片文章便是说明在Nordic中,是如何修改来达到这个目的的。
    (注:本文讲解使用协议栈为:SDK17.0.2;主控为:NRF52840
    使用其他版本的协议栈与主控时,修改方式略有不同,思路是一样的)
    **步骤一:**
    在添加新的特征值之前重新添加一次UUID,如下图所示   ![在这里插入图片描述](https://img-blog.csdnimg.cn/1e54934e1d1e464f97099bc4204ad167.png)
其中BLE_UUID_RX_CHAR_BASE是重新定义的特征的UUID(128bit),如:
#define BLE_UUID_RX_CHAR_BASE          {0xE2, 0xFF, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x00, 0x00, 0x01, 0x00} 

**步骤二:**
    修改Option for target中的Target选项卡下的IRAM1的起始位置与大小,原则就是修改了一个特征的UUID,则相对的起始位置+0x10,大小-0x10,如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f8d6d82466c64018a735ac4ab49e76cb.png)

**步骤三:**
修改宏定义NRF_SDH_BLE_VS_UUID_COUNT,原则就是修改了一个特征的UUID,宏定义在原有基础上+1,如下图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/ac4102a1b78442af8173b03c4c8956cf.png)


    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
修改Nordic Mesh的优先级,您可以使用以下代码: ```c nrf_mesh_priority_t new_priority = NRF_MESH_PRIORITY_LOWEST; // 将新的优先级设置为最低 nrf_mesh_init_params_t init_params = { .core.irq_priority = APP_IRQ_PRIORITY_LOWEST, // 设置核心中断的优先级为最低 .core.p_uuid = NULL, .core.lfclksrc = NRF_CLOCK_LF_SRC_XTAL, .models.config_server_cb = NULL, .models.health_server_cb = NULL, .models.appkey_server_cb = NULL, .models.appkey_client_cb = NULL, .models.transport_cb = NULL, .access.reliable_transfer_count = 0, .access.reliable_transfer_interval_ms = 0, .access.poll_timeout_ms = 0, .access.force_segmented = false, .access.transmic_size = NRF_MESH_TRANSMIC_SIZE_DEFAULT, .access.rx_sdu_max = NRF_MESH_RX_SDU_MAXLEN, .access.tx_sdu_max = NRF_MESH_TX_SDU_MAXLEN, .access.tx_pool_size = 0, .access.rx_pool_size = 0, .p_data_store = NULL, .data_store_size = 0, .network.nwk_transmit_count = NRF_MESH_TRANSMIT_COUNT_DEFAULT, .network.nwk_transmit_interval_ms = NRF_MESH_TRANSMIT_INTERVAL_DEFAULT_MS, .network.relay_retransmit_count = NRF_MESH_RELAY_RETRANSMIT_COUNT_DEFAULT, .network.relay_retransmit_interval_steps = NRF_MESH_RELAY_RETRANSMIT_INTERVAL_STEPS_DEFAULT, .network.beacon_interval_ms = NRF_MESH_BEACON_INTERVAL_DEFAULT_MS, .network.gatt_proxy = NRF_MESH_GATT_PROXY_NOT_SUPPORTED, .network.default_ttl = NRF_MESH_TTL_DEFAULT, .network.allocation_params = { .tx_count = NRF_MESH_NETWORK_TX_COUNT_DEFAULT, .rx_count = NRF_MESH_NETWORK_RX_COUNT_DEFAULT, .subnet_count = NRF_MESH_SUBNET_COUNT_DEFAULT, .address_count = NRF_MESH_ADDR_COUNT_DEFAULT, .virtual_address_count = NRF_MESH_VIRTUAL_ADDR_COUNT_DEFAULT, .bearer_count = NRF_MESH_BEARER_COUNT_DEFAULT, }, .low_power.node_sleep = { .sleep1_delay_ms = 0, .sleep1_sdc_hfclk = false, .sleep2_delay_ms = 0, .sleep2_sdc_hfclk = false, .sleep3_delay_ms = 0, .sleep3_sdc_hfclk = false, }, .low_power.lpn = { .automatic = true, .rx_window = NRF_MESH_LPN_DEFAULT_RECEIVE_DELAY_MS, .rx_window_factor = NRF_MESH_LPN_DEFAULT_RECEIVE_WINDOW_FACTOR, .poll_timeout = NRF_MESH_LPN_DEFAULT_POLL_TIMEOUT_MS, }, .enable_cb = NULL, .disable_cb = NULL, }; // 将新的优先级设置为新的初始化参数 init_params.core.irq_priority = new_priority; // 初始化Nordic Mesh uint32_t error_code = nrf_mesh_init(&init_params); if (error_code != NRF_SUCCESS) { // 处理错误 } ``` 注意,这只是一个示例代码,您需要将其适应您的应用程序。同时,更改优先级可能会影响系统的性能和稳定性,请谨慎操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值