上次提到了ST有提供一个Web平台的APP,可以配合例程进行一些实验。这里就以P2PServer为例展开,也是对计划的小制作的延展。
2 J1 K9 x0 Z: Q; x" h' b+ k 打开例程、编译、烧录这些都不用说,展开工程目录,可以看到如下分组
& C: t6 o5 ?7 i8 ~6 f: i
4 e7 ~6 `+ e0 H7 D
已经标记了需要主要关注的地方,从主程序入口可以一步一步挖掘到蓝牙应用函数的地方。通过查看代码,定位了这个程序中对LED控制的代码段,如下/ B. c' x2 U) r
- a1 y7 Y5 \' U! y" Q
打开Web App来看下,是什么样子的
, h( u8 w5 L; n; ?: j# r' S
8 l! L2 Z; s j1 ^9 {( [
板卡程序烧录好以后,复位程序,这个时候,就可以用手机或电脑蓝牙搜索板卡的信号了。WEB端的操作是这样的。, S3 k3 w1 N4 j: Z% v' U! W4 p
2 x4 a7 }) o; ^& }* A' K
因为我已经连接过了,所以有配对记录,连接成功后,就可以进入到上一幅图片的操作页面。点击按钮可以打开和关闭板子上的LED,按钮上的字符也会自行改变状态。下面的输入框,输入0x01和0x0也可以打开和关闭LED,这只是WEB UI呈现的不同,实际发送的有效数据内容都是0x01和0x0。到这里,APP控制LED的方法已经很清晰了。修改程序,添加两个指令,留着给RGB灯条的控制使用。程序段如下,是很简单的内容:
" _ d' s' v3 ]) S O' R3 ^2 ?; ^9 x% l0 u% z9 X3 E
- /* USER CODE BEGIN Service1Char1_WRITE_NO_RESP_EVT */
9 v3 I4 t) V2 w% ]( c) G& T9 K* q - if(p_Notification->DataTransfered.p_Payload[1] == 0x01)& Z- o3 `8 R+ o6 {
- {3 n& {) U7 `+ S8 i y( J
- BSP_LED_On(LED_BLUE); u" ^' M; _7 U2 g1 V8 P
- APP_DBG_MSG("-- P2P APPLICATION SERVER : LED1 ON\n");
: ]3 O, h- w8 F" R/ X" } - P2P_SERVER_APP_Context.LedControl.Led1 = 0x01; /* LED1 ON */0 b! T& H5 A& g+ M
- }
2 u( Y5 h( h V9 o. Y - if(p_Notification->DataTransfered.p_Payload[1] == 0x00)
* c- {7 y, c" [9 P4 z& [4 _ - {
- f4 S; Y* J9 u$ I! E D. ]. g - BSP_LED_Off(LED_BLUE); T+ u# u( M, h3 O) _: G
- APP_DBG_MSG("-- P2P APPLICATION SERVER : LED1 OFF\n");
6 ], [2 @0 W5 T" T7 Y9 S7 [ - P2P_SERVER_APP_Context.LedControl.Led1 = 0x00; /* LED1 OFF */
3 e8 L6 F$ A% E; Z/ C3 H( b - }
" l7 U7 d* I; K) ` - if(p_Notification->DataTransfered.p_Payload[1] == 0x02)
) h' {/ a7 G2 V X - {
0 C7 r& s% Q" P- h' X& i - BSP_LED_On(LED_RED);7 v0 M. O4 W0 ^" }& G7 M
- APP_DBG_MSG("rgb set 1\n");
$ u3 Z6 ^3 I5 {- ~/ q7 x - P2P_SERVER_APP_Context.LedControl.Led1 = 0x02; /* LED1 OFF */+ l2 T* I5 i7 y% l6 R0 k
- }
& @8 b# C G% [! ?/ B - if(p_Notification->DataTransfered.p_Payload[1] == 0x03)* i) J( n8 U Y6 [) |- [( T6 P
- {/ j- f8 P0 Y8 M) c; }3 |
- BSP_LED_Off(LED_RED);1 e6 A7 T6 V, O# V
- APP_DBG_MSG("rgb set 2\n"); 7 a5 k% h: e z7 U- Z7 v
- P2P_SERVER_APP_Context.LedControl.Led1 = 0x03; /* LED1 OFF */" J: i. W. x$ G+ A8 B+ T
- }7 t4 h* [& D! s% @! D! C- L
- /* USER CODE END Service1Char1_WRITE_NO_RESP_EVT */
复制代码 这样就可以有4条指令来给到板卡了。接下来一步做4种RGB灯条的效果。ST的WIKI资料做的真不错,涵盖了绝大部分内容。7 F) v$ G2 [, A3 L; ?9 \
$ w5 U9 C+ x, q2 Q6 Q( y) X% A! T/ r
|
厉害,还有下一集吗?
学习学习蓝牙
学习学习
学习一下