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

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

[复制链接]
BinWin 发布时间:2024-11-3 15:25
       上次创建完工程,留了个点灯的尾巴,这次给完成。2 k* ]: ]; U3 T% ?5 r4 E

, a  [  [; d& F. s4 B2 f        在IOC工程界面添加服务一个服务,会增加一个服务配置的窗口
; j4 U9 x0 u. d5 f  }  N         5.png 9 X7 N5 }+ I" P9 D4 [! N1 l! C
        打开SERVER1的配置界面,修改UUID便于手机端辨识,还有Service name。再添加一个特征,也同样修改下UUID和名称,打算控制LED,1个字节的Value就可以。
' y3 m/ Z& A5 L/ |( C, n' s       1.png
- g7 F; ~, u2 R* }2 N        完成以上就可以更新代码了。烧录后在手机APP中搜索到XX-STTM32并连接后查看是否有刚才配置的服务和特征
$ m  T+ M7 ]* M0 y6 s          6.png
' w0 o) m! Y' n; U8 L         到这里完成了一半。因为此时打开写属性,调试信息里并没有输出任何内容,需要手动添加代码。查找工程,可以看到新增加的BLE App代码文件
( E, ?0 C$ t8 ^) n3 m         7.png 7 _- O- w$ I! g5 j( V. O
         打开ld2.c文件查找相关内容,函数不多,可以很快定位到该服务的事件处理函数如下/ p: L2 k# _: P' g  \- t; |
          2.png
+ l, N  Z# s2 y6 O        从以上代码能够看出收到服务端的写特征数据时会再调用LD2_Notification(¬ification);函数,同时传入notification结构体,我们要提取的数据也在这个结构体里面。所有找到LD2_Notification函数,添加对playload值的提取和点灯代码。   6 @$ r6 K% P0 M% g; p4 v5 A
       % z8 `& R( w% x0 J8 J; Z
  1. void LD2_Notification(LD2_NotificationEvt_t *p_Notification)7 ?9 p3 ?4 B) E. `
  2. {
    % {& H* l4 J- Q; ~! b
  3.   /* USER CODE BEGIN Service1_Notification_1 */
    ) }/ H& B4 R3 O- v& C
  4.         uint8_t value;
    1 c% H8 e5 k+ N8 D: _
  5.   /* USER CODE END Service1_Notification_1 */( d( H7 h  D0 G; G! N8 a3 G
  6.   switch(p_Notification->EvtOpcode)
    ( a+ [, P; I$ I( D/ i0 {5 {- Y) {
  7.   {! |' z4 t# y4 c- f9 ~
  8.     /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */
    0 o. j# |+ L7 f

  9. ) u% a1 A9 o7 K" [! B$ j: q
  10.     /* USER CODE END Service1_Notification_Service1_EvtOpcode */
    + y( E( W8 I6 y) @1 z/ f! G

  11. * q* d3 O8 Z* J) o" q9 U
  12.     case LD2_ON_WRITE_EVT:
    ( b/ s* o: |( _* X; p
  13.       /* USER CODE BEGIN Service1Char1_WRITE_EVT */
    / F, ~5 Y# S. l& j/ z% ?
  14.             value = p_Notification->DataTransfered.p_Payload[0];5 y; X6 L( I7 ^/ w9 m& L0 m
  15.             APP_DBG_MSG(" recv msg %c\n",value);# R* H/ O& i6 r9 V) J2 a
  16.             if(value == '0')$ U9 D# o8 B9 m$ ?! U# `4 v
  17.             {: Y8 C) y( s7 t% i
  18.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);* e/ k$ l' j% B/ d. N
  19.             }else if(value == '1'){
    " [% s/ D3 R( }; @6 ^  P& }
  20.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);
    $ D2 D7 e; [  u, J
  21.             }
    % W! |! f6 S  ~8 h3 i- P# C& _
  22.       /* USER CODE END Service1Char1_WRITE_EVT */
    * N3 t% E2 ^% G* D9 p0 w
  23.       break;4 g5 q  t2 G) Q: l4 V1 J
  24. 8 w. l/ |- k' [) b+ P5 I) F
  25.     default:7 h9 _6 W& M3 j9 o& y. C+ x! i, |
  26.       /* USER CODE BEGIN Service1_Notification_default */! Z- c1 _. A0 n. {8 J' V9 k

  27. 1 p$ x( r; }) d4 l! m6 O  g5 h
  28.       /* USER CODE END Service1_Notification_default */& Y, X/ M) _% U; D1 {' E
  29.       break;: z  u# Z# X3 r
  30.   }& K) y7 c; m* R) ]- U0 f
  31.   /* USER CODE BEGIN Service1_Notification_2 */0 a; X0 Q' Z, x& d' A
  32. % T+ e8 L; d! x. e! f
  33.   /* USER CODE END Service1_Notification_2 */4 J* ]+ Y0 x" Z1 C
  34.   return;
    ! G6 t1 ~4 N* B# y( U+ ~
  35. }
复制代码
       对于数据的处理,在客户端是支持输入ASCII和HEX格式,所以服务端也就是开发板的代码中要和输入对应。这里使用ASCII来传值。
# [# R" T" O+ O2 T5 @; a        在串口调试助手中也打印出来收到的写特征值。如下
3 ?$ u% s7 m' O, c1 {7 B$ g         4.png / e1 e: F0 ]$ ~  y8 ?: ?) \
        不过倒是有个问题,Service name在手机客户端都显示unknow,一时没找到原因。
: X% G; T+ P$ N2 E' }+ n  S" E  m4 @3 W: y& y

. o; ^, R( u" ?6 e. c( m# @$ S
收藏 评论2 发布时间:2024-11-3 15:25

举报

2个回答
STMCU-管管 回答时间:2024-11-4 14:42:54
Service name会不会是UUID格式问题; q& i1 S: b" W! f& n
BinWin 回答时间:2024-11-4 21:03:53
STMCU-管管 发表于 2024-11-4 14:42' Y; b4 L  e& i) p; Y. ?
Service name会不会是UUID格式问题

+ Z3 n8 H$ \, qSolved: Re: Naming BLE service on STM32WB - STMicroelectronics Community, Q2 O' r  j% Z* i* H
9 j% O7 I' ^# y" h

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版