STM32WB50CG - 更新特征值的正确方法

STM32WB50CG - Correct way to update value of characteristic

我有一个关于如何在 STM32WB50CG 上正确更新自定义 BLE 服务的特征值的问题。该项目是根据官方教程使用 CubeMX 设置的:https://www.youtube.com/watch?v=i10X4Blr8ns.

我的主要应用是 运行 M4 内核。它使用多个传感器,然后使用从它们获取的数据进行各种统计。 BLE堆栈是 运行 在 M0+ 内核上。我可以在我的 Android phone 上看到我在应用程序(来自 STM 的 BLE 工具箱)中定义的所有服务和特性。现在我想弄清楚如何从 main 更新特征 应用。我试图在我的主应用程序中使用预定义值调用这些函数,但在我的 Android phone 上读取的特征值始终为 0.

调用Custom_STM_App_Update_Characi_gatt_update_char_value的结果状态为“成功”。

我尝试在 M4 核心上的主应用程序中调用以更新特性的函数(用于测试目的的固定值为 5)

Custom_STM_App_Update_Char(CUSTOM_STM_CVOLTAGE, (uint8_t*)5);
Custom_STM_App_Update_Char(CUSTOM_STM_CCURRENT, (uint8_t*)5);

我的特征的两个更新值函数示例

case CUSTOM_STM_CVOLTAGE:
  result = aci_gatt_update_char_value(CustomContext.CustomVsHdle,
                                      CustomContext.CustomCvoltageHdle,
                                      0, /* charValOffset */
                                      SizeCvoltage, /* charValueLen */
                                      (uint8_t *)  pPayload);
  /* USER CODE BEGIN CUSTOM_STM_Service_1_Char_1*/

  /* USER CODE END CUSTOM_STM_Service_1_Char_1*/
  break;

case CUSTOM_STM_CCURRENT:
  result = aci_gatt_update_char_value(CustomContext.CustomCsHdle,
                                      CustomContext.CustomCcurrentHdle,
                                      0, /* charValOffset */
                                      SizeCcurrent, /* charValueLen */
                                      (uint8_t *)  pPayload);
  /* USER CODE BEGIN CUSTOM_STM_Service_3_Char_1*/

  /* USER CODE END CUSTOM_STM_Service_3_Char_1*/
  break;

您的代码的第一个也是最明显的问题是您将整数文字转换为 uint8_t 地址。 将值放在堆栈上的变量中,并将该变量的地址传递给 Custom_STM_App_Update_Char.

而不是: Custom_STM_App_Update_Char(CUSTOM_STM_CVOLTAGE, (uint8_t*)5);

uint8_t my_value = 5; Custom_STM_App_Update_Char(CUSTOM_STM_CVOLTAGE, &my_value);