蓝牙点灯书接上回 在上篇文章我们看见了P2P服务的广播名 和 相关的UUID,所以下一步就是蓝牙发送数据了。 所以我们再次结合蓝牙 点灯!! 1 、确认数据接收处想要使用蓝牙控制灯,我们需要知道蓝牙接到空中的数据后,会将数据传到何处,如何接收数据?
结合上图可以看到 CubeMX可知BLE是在STM32_WPAN下的,所以我们打开Keil 5的对应文件树可以看见有个叫P2P_stm.c的文件,和我们目前添加的功能相同(P2P server)所以不要怀疑直接打开!
在P2P_stm.c的100行,可以看见以上代码。 以下是我个人 感觉 分析(不准确,仅供参考) PeerToPeer_Event_Handler 这个函数时各个事件的处理 HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE 是蓝牙传输层的事件 ACI_GATT_ATTRIBUTE_MODIFIED_VSEVT_CODE GATT 是一个在蓝牙连接之上的发送和接收很短的数据段的通用规范 attribute_modified->Attr_Handle == (aPeerToPeerContext.P2PNotifyServerToClientCharHdle + 2) Handle是用于区分不同服务的数据。举一个不正确的例子,翻遍理解,比如说 HID服务的Handle是1,P2P服务的Handle是2,那么我在接收数据时,就要区分是什么服务发送的数据,再去做相应的处理。 attribute_modified->Attr_Data[0]这个看起来就是蓝牙接收的数据 所以我认为这里就是蓝牙接收数据的地方,分析完毕,我们需要大胆的尝试,验证我们的思路!! 2、任意数据翻转IO电平我想在接收到任意蓝牙数据后就翻转IO电平,点亮或熄灭电平,代码如下: 代码
实验1、连接后,展开服务列表,点击发送服务
2、填入数据,并点击 发送
3、点击发送后,向右滑,就可以看见发送的数据。
发送数据后观察开发板上的灯,有熄灭,再次重复以上发送数据流程,可以看见灯在翻转电平, 反复亮->灭。 3、指定数据翻转电平结合上文可知,我认为attribute_modified->Attr_Data[0]这个就是蓝牙接收到的数据
所以将代码改为以上,判断等于0x66 与否,控制翻转电平。 发送数据后观察开发板上的灯,有熄灭,再次重复以上发送数据流程,可以看见灯在翻转电平, 反复亮->灭。 至此蓝牙点灯教程完毕!! |
STM32WB ZigBee 配网:从“按键入网”到“安全运营”的六边形战士养成记
F429I-DISC1体验报告(5) 滚动菜单、语言切换的实现丨国庆开发板测评活动
F429I-DISC1体验报告(4) 温度可视化动态图表的实现丨国庆开发板测评活动
STM32云连接 干货都在这里!
F429I-DISC1体验报告(3) 画板线条绘制和调色功能的实现丨国庆开发板测评活动
F429I-DISC1体验报告(2) 按钮和弹窗GUI的简单交互设计丨国庆开发板测评活动
F429I-DISC1体验报告(1)久经沙场,锋芒依旧丨TouchGFX开发F429丨国庆开发板测评活动
【NUCLEO-WBA65RI评测】围绕BleApplicationContext_t的端侧蓝牙开发逻辑
STM32入门系列-学习STM32要掌握的内容
【NUCLEO-WBA65RI评测】Android Studio手机端蓝牙开发
微信公众号
手机版