你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-WB09KE评测】BLE创建服务和写特征控制LED

[复制链接]
BinWin 发布时间:2024-11-3 15:25
       上次创建完工程,留了个点灯的尾巴,这次给完成。1 m$ \9 x. X8 j4 a' `

) C+ `+ t+ c# ?+ I        在IOC工程界面添加服务一个服务,会增加一个服务配置的窗口, |' n/ _. i4 ~
         5.png 0 C  `# L, s& @% U2 b
        打开SERVER1的配置界面,修改UUID便于手机端辨识,还有Service name。再添加一个特征,也同样修改下UUID和名称,打算控制LED,1个字节的Value就可以。
+ l) B# x8 k9 j. \+ `       1.png
9 _4 _0 b& m5 Y3 z$ T: i        完成以上就可以更新代码了。烧录后在手机APP中搜索到XX-STTM32并连接后查看是否有刚才配置的服务和特征
8 ]3 Q0 t' b' _' k          6.png
6 z/ H6 l% ?- n* X5 x         到这里完成了一半。因为此时打开写属性,调试信息里并没有输出任何内容,需要手动添加代码。查找工程,可以看到新增加的BLE App代码文件9 G4 q! o+ c: Y: X( M* j5 S
         7.png
) J8 Q0 M4 B: J% X$ i( b. s         打开ld2.c文件查找相关内容,函数不多,可以很快定位到该服务的事件处理函数如下  c& H9 N0 B. D) y* P1 t
          2.png & t- Q# p% _) R2 x  P# ~& a
        从以上代码能够看出收到服务端的写特征数据时会再调用LD2_Notification(¬ification);函数,同时传入notification结构体,我们要提取的数据也在这个结构体里面。所有找到LD2_Notification函数,添加对playload值的提取和点灯代码。   3 B1 |" O! b5 w# ?, b, a* m7 J" M6 \8 C
      
  e% m$ m: ^4 y; M& y
  1. void LD2_Notification(LD2_NotificationEvt_t *p_Notification)
    ) Y4 K# z5 X/ v" C% m
  2. {
    4 g9 l/ V8 ^; d1 d# G, _% _& w7 m
  3.   /* USER CODE BEGIN Service1_Notification_1 */
    - D: y0 n; P* q: v
  4.         uint8_t value;
    6 Z* }0 T) \# l
  5.   /* USER CODE END Service1_Notification_1 */# ~: _6 D1 {; A. t
  6.   switch(p_Notification->EvtOpcode)  M/ J% Y0 ?" z$ Z3 y
  7.   {
    + I* E% g( E- y# ~, O
  8.     /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */
    6 z; [! [3 w/ X1 L

  9. ! ?. j- X4 M' i% S1 @* e2 X
  10.     /* USER CODE END Service1_Notification_Service1_EvtOpcode */3 f% u/ t, n' s* i) _% v. a" X) A

  11. 3 z0 U# G, i4 P7 [" n  f, ?* @
  12.     case LD2_ON_WRITE_EVT:
    # Z) s; n+ [* Z+ \) e/ Q
  13.       /* USER CODE BEGIN Service1Char1_WRITE_EVT */
    . M  E  k9 w0 c, b- Q9 {5 t7 O" n
  14.             value = p_Notification->DataTransfered.p_Payload[0];
    6 S6 A& X1 b. J7 _6 X3 B
  15.             APP_DBG_MSG(" recv msg %c\n",value);
    0 Z2 q: L8 m- q2 M
  16.             if(value == '0')" g# X7 v2 J% `: J7 ?
  17.             {
      i2 t2 T% b1 {8 d. T
  18.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);- M, A2 \- g8 A
  19.             }else if(value == '1'){
    ) x1 B! c8 g5 y# j! H; }* M) @
  20.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);
      K; E! v- E3 D+ O% b8 A3 G
  21.             }5 a+ G4 k! S% v
  22.       /* USER CODE END Service1Char1_WRITE_EVT */# `7 W' U. h6 \% V2 w
  23.       break;- W7 Q/ E6 |" P* S
  24. 1 v8 c- M7 T9 @1 F
  25.     default:: C  t& [7 m# J% @% c5 B  Z$ Q3 |/ y
  26.       /* USER CODE BEGIN Service1_Notification_default */
      D& C! A" ^9 F0 h5 O

  27. : I5 X+ z& h* _: e# W% H
  28.       /* USER CODE END Service1_Notification_default */
    & }. Q( f  T3 K+ c$ p0 ?
  29.       break;
    5 x9 G/ }( v- n; @
  30.   }
    8 X( t4 @6 V4 ]0 d( J
  31.   /* USER CODE BEGIN Service1_Notification_2 */
    * v) ], ~1 X6 y% ?9 Y; Q

  32. & Y+ u& L2 L! d% }
  33.   /* USER CODE END Service1_Notification_2 */
    & J6 F% }4 U) `9 B3 Q3 l, |/ \
  34.   return;
    ! V0 }; T- x9 P# c. U
  35. }
复制代码
       对于数据的处理,在客户端是支持输入ASCII和HEX格式,所以服务端也就是开发板的代码中要和输入对应。这里使用ASCII来传值。0 z1 `) d& Y: G3 G/ `
        在串口调试助手中也打印出来收到的写特征值。如下& B5 S5 u# {3 v8 \! A
         4.png
2 J; K. Z. j# n7 b        不过倒是有个问题,Service name在手机客户端都显示unknow,一时没找到原因。$ d* c7 X. l: S" u& z8 O* p

% W9 k- t0 t0 y9 u! K  s6 R( X/ P
  |+ p, e# X& G, [5 Q
赞 收藏 评论2 发布时间:2024-11-3 15:25

举报

2个回答
STMCU-管管 回答时间:2024-11-4 14:42:54
Service name会不会是UUID格式问题7 n# W0 I% `- ]; P( [
BinWin 回答时间:2024-11-4 21:03:53
STMCU-管管 发表于 2024-11-4 14:42
9 ]2 h5 U. T8 w; q: HService name会不会是UUID格式问题

4 H" v5 h$ T+ U% s( JSolved: Re: Naming BLE service on STM32WB - STMicroelectronics Community. B6 F* ?4 W9 o. `5 `
/ C: @, F' A4 S3 G

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版