上次提到了ST有提供一个Web平台的APP,可以配合例程进行一些实验。这里就以P2PServer为例展开,也是对计划的小制作的延展。' _# d) Y3 d) `! ^
打开例程、编译、烧录这些都不用说,展开工程目录,可以看到如下分组
- i9 E9 X, F- N0 c. o
1 p9 v* G# f r# G/ j& H; {3 W 已经标记了需要主要关注的地方,从主程序入口可以一步一步挖掘到蓝牙应用函数的地方。通过查看代码,定位了这个程序中对LED控制的代码段,如下
1 `9 P5 c, \2 w) R* |$ n8 E
; D; F% W7 @) s( a+ ^
打开Web App来看下,是什么样子的* Q9 D8 ^' p8 s$ w$ Q7 W$ N9 F
2 ?! p( P0 \( P7 i, i 板卡程序烧录好以后,复位程序,这个时候,就可以用手机或电脑蓝牙搜索板卡的信号了。WEB端的操作是这样的。
) N; e0 y6 J! V0 B" |9 n
0 Q& k! m/ k2 C 因为我已经连接过了,所以有配对记录,连接成功后,就可以进入到上一幅图片的操作页面。点击按钮可以打开和关闭板子上的LED,按钮上的字符也会自行改变状态。下面的输入框,输入0x01和0x0也可以打开和关闭LED,这只是WEB UI呈现的不同,实际发送的有效数据内容都是0x01和0x0。到这里,APP控制LED的方法已经很清晰了。修改程序,添加两个指令,留着给RGB灯条的控制使用。程序段如下,是很简单的内容:; S2 |; F4 `- n9 N$ E
, d+ I( v) S( t, R# W3 K7 I- /* USER CODE BEGIN Service1Char1_WRITE_NO_RESP_EVT */
' ^* w& d- q1 D/ x" H8 q% g - if(p_Notification->DataTransfered.p_Payload[1] == 0x01)
) r+ z; A- q$ s1 } - {
3 }* [" Z& e* a) W5 D - BSP_LED_On(LED_BLUE);
7 k, H1 G8 m% Z4 S - APP_DBG_MSG("-- P2P APPLICATION SERVER : LED1 ON\n"); 6 |( B4 p! G; J' r* r; A
- P2P_SERVER_APP_Context.LedControl.Led1 = 0x01; /* LED1 ON */* R8 H8 u% S" g8 H; f
- }
9 u& @2 d; o5 e - if(p_Notification->DataTransfered.p_Payload[1] == 0x00)
5 A* B. S9 ]( t - {4 Z7 ?& w( C4 R) r
- BSP_LED_Off(LED_BLUE);$ i: Z* m. M& U. J8 T7 L
- APP_DBG_MSG("-- P2P APPLICATION SERVER : LED1 OFF\n"); ; e9 V: K! S; i' b" `
- P2P_SERVER_APP_Context.LedControl.Led1 = 0x00; /* LED1 OFF */8 [3 d4 l2 Y: g) @, g
- }
( o1 I5 G+ r. A, i. u( V R - if(p_Notification->DataTransfered.p_Payload[1] == 0x02)- G, T% L0 K z6 Q4 S& m
- {
3 V1 F1 Y* ]1 e4 I' f8 y7 @. P$ J+ @ - BSP_LED_On(LED_RED);
+ H& r4 u& ]% x9 u* G3 @ - APP_DBG_MSG("rgb set 1\n");
5 F G, |, h; p$ s! c; J4 m4 B - P2P_SERVER_APP_Context.LedControl.Led1 = 0x02; /* LED1 OFF */
" B) B4 o5 f. U. t3 [ ]4 K7 e+ L - }% g- j% V: e+ N! L9 V9 i5 v- P. z
- if(p_Notification->DataTransfered.p_Payload[1] == 0x03)6 Y6 k' g- @+ h
- {- B0 i6 s6 t- v
- BSP_LED_Off(LED_RED);
5 B* |) N. C1 {" s+ X - APP_DBG_MSG("rgb set 2\n"); 1 J5 ^8 J+ h+ ?' x5 c
- P2P_SERVER_APP_Context.LedControl.Led1 = 0x03; /* LED1 OFF */7 n( k1 ]6 f5 O
- }. e8 X5 i7 X! ]2 T' i8 U% b
- /* USER CODE END Service1Char1_WRITE_NO_RESP_EVT */
复制代码 这样就可以有4条指令来给到板卡了。接下来一步做4种RGB灯条的效果。ST的WIKI资料做的真不错,涵盖了绝大部分内容。$ p$ ]( S: Q3 L+ ]1 ~
4 _4 U/ ^, @+ \8 X3 j5 q+ c' l# M# b
( L* _6 V9 F, U. S d, n7 Y. X |
厉害,还有下一集吗?
学习学习蓝牙
学习学习
学习一下