您好、TI 团队:
我一直在尝试实现一个非常简单的应用、使用 basic_ble 示例作为 LP-EM-CC2340R5的基准。 其目的是读取 GPIO、然后通过特征通知报告该引脚("0"或"1")的状态。 手机可以订阅该特征、因此它会获取不断更新的 GPIO 状态。 由于 based_ble 已经在使用特征4进行通知、我选择使用这个来输出 GPIO 状态。
我进行了下面所述的更改、我可以使用 LightBlue 应用读取特征4的值、但一旦我订阅以接收通知、电路板就会挂起、LightBlue 便会丢失通信内容、我需要从 CCS 复位以解除对电路板的阻断。 一个有趣的注意事项是、我只能使用 LightBlue 进行连接;TI SimpleLink Connect 可以找到该电路板、但无法与其连接。
我觉得我缺少一些非常基本的东西、请让我知道可能是什么。
本节介绍了我为实现该目的对 basic_ble 所做的更改。 我是 使用 SimpleLink 低功耗 F3版本 7.40.00.64 。
simple_gatt_profile.h
1.将服务和特征的 UUID 从0xFFFx 更改为0xAAAx、因此我可以区分 basic_ble 示例。
2、注释掉了所有提到特征5的内容、因为我不打算用到这些内容。
simple_gat_profile.c
1. simpleG454Props: Profile_Char 添加了'GATT_PROP_READ'属性,以便可以通过应用程序读取其值。
2. simpleGattProfile_attTbl:将 simpleG4574的权限 Profile_Char 从"0"替换为"Gatt_permit_read"、以便通过应用程序读取其值。
3. SimpleGattProfile_readAttrCB:添加了案例 SIMPLEGATTPROFILE_CHAR4_UUID,以便通过应用程序读取它。
4.注释掉了所有提到特征5的内容、因为我不打算用到这些内容。
APP_SIMPLE_GATT.c
1.注释掉了 SimpleGatt_notifyChar4函数以及其他函数中对它的每次调用。
2.添加了两个函数来报告 GPIO 的状态(顶部的"value"声明为 uint8_t 全局变量):
空 GPIO_high ()
{
值= 1;
SimpleGattProfile_SetParameter (SIMPLEGATTPROFILE_CHAR4、sizeof (uint8_t)、&value);
}
空 GPIO_low ()
{
值= 0;
SimpleGattProfile_SetParameter (SIMPLEGATTPROFILE_CHAR4、sizeof (uint8_t)、&value);
}
3、注释掉了所有提到特征5的内容、因为我不打算用到这些内容。
空.c
1.声明了外部函数 GPIO_high ()和 GPIO_low ()。
2. mainThread:添加了 GPIO_setConfig (CONFIG_GPIO_NotifyState、GPIO_CFG_IN_pu)。
3. mainThread:添加了决策任务来通知 while (1)循环中 GPIO 的高电平或低电平状态:
如果 ( GPIO_READ (CONFIG_GPIO_NotifyState))
GPIO_HIGH ();
否则
GPIO_LOW ();