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

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

[复制链接]
BinWin 发布时间:2024-11-3 15:25
       上次创建完工程,留了个点灯的尾巴,这次给完成。1 i5 ~7 N5 i9 b+ {
( b. ]% L) d" e$ p: g
        在IOC工程界面添加服务一个服务,会增加一个服务配置的窗口% g1 z1 G2 ~- x- u! F" k
         5.png % w' ]. y1 V0 P. y, h
        打开SERVER1的配置界面,修改UUID便于手机端辨识,还有Service name。再添加一个特征,也同样修改下UUID和名称,打算控制LED,1个字节的Value就可以。
9 y& H  h  f& V3 R       1.png 1 b! B  o$ r8 t( n7 ?( R
        完成以上就可以更新代码了。烧录后在手机APP中搜索到XX-STTM32并连接后查看是否有刚才配置的服务和特征& _: M) S& z$ f6 [# _
          6.png
( P$ Z  a3 A& C8 W         到这里完成了一半。因为此时打开写属性,调试信息里并没有输出任何内容,需要手动添加代码。查找工程,可以看到新增加的BLE App代码文件' y3 k! M# `2 s. {7 c. C4 t& K
         7.png 4 \# p& E+ ^- e: v. O
         打开ld2.c文件查找相关内容,函数不多,可以很快定位到该服务的事件处理函数如下+ N& ?: |" V& e' C; x5 H
          2.png
: Q$ O; X. o7 ]- V, l        从以上代码能够看出收到服务端的写特征数据时会再调用LD2_Notification(¬ification);函数,同时传入notification结构体,我们要提取的数据也在这个结构体里面。所有找到LD2_Notification函数,添加对playload值的提取和点灯代码。   
$ o! d5 z1 z! Y% q4 g      
% D5 V3 o- Z# \8 w- E* x/ Z
  1. void LD2_Notification(LD2_NotificationEvt_t *p_Notification)8 |2 ^2 E. \6 [8 i3 c9 U
  2. {! I3 T9 K/ n$ X6 Z
  3.   /* USER CODE BEGIN Service1_Notification_1 */9 \5 I/ L; Q+ R( Y8 J
  4.         uint8_t value;3 R, y" U: i' }! \
  5.   /* USER CODE END Service1_Notification_1 */
    % w1 n7 d0 o$ }. Y: v% [; X
  6.   switch(p_Notification->EvtOpcode)
    + l5 j4 L$ A5 H0 P
  7.   {
    # I; Q: o- o9 ?/ t
  8.     /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */) I! B7 K5 u8 ?/ U
  9. . N* s0 G# L' B: L# a; B, Q
  10.     /* USER CODE END Service1_Notification_Service1_EvtOpcode */
    " x4 K6 b& l$ L! Y( Z& f& z# b

  11. 0 }# q# X) O/ m; z7 R: ^0 ?+ [
  12.     case LD2_ON_WRITE_EVT:
    ( R/ o0 K; i1 h! i# k- i+ U9 a
  13.       /* USER CODE BEGIN Service1Char1_WRITE_EVT */
    3 h4 ^* V: ]( o' V: z- T. R
  14.             value = p_Notification->DataTransfered.p_Payload[0];
    / C9 T5 b4 w' R# {+ ]7 r1 ?% g& ?
  15.             APP_DBG_MSG(" recv msg %c\n",value);* L* A; M4 v: T
  16.             if(value == '0')
    ! i+ A6 D; q/ b3 P9 z3 y
  17.             {& l) @3 t2 \: v0 k
  18.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);
    ) n1 [! z: L: v  K  C3 H
  19.             }else if(value == '1'){
    * B4 J! y( |- |6 \' a! e0 Q& X
  20.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);% f" i2 n- |& u( c0 O
  21.             }/ g$ Q- \. G$ o) Q- k" }
  22.       /* USER CODE END Service1Char1_WRITE_EVT */
    2 Q, W+ n4 {2 z5 q5 A7 Y% c
  23.       break;
    9 o, P! e* w6 x+ D: N2 A
  24. ) W# b# a' Y" I
  25.     default:
    1 c, W3 e" J: |" H
  26.       /* USER CODE BEGIN Service1_Notification_default */: ?. z% p, {+ v' H8 Y* R
  27. # B  p/ a2 g; u) |+ Y. ~7 j9 T
  28.       /* USER CODE END Service1_Notification_default */: S( w8 W* l! ~' d0 }2 C  a
  29.       break;9 R9 n: A/ \9 e# V/ \
  30.   }
    , s- r  X" r& I  M7 e7 k* b
  31.   /* USER CODE BEGIN Service1_Notification_2 */% h" P: o9 U! F+ d- W: D, s  z$ l6 N

  32. 0 J( Q, A$ g3 X5 U1 k* f
  33.   /* USER CODE END Service1_Notification_2 */
    ( i% ?3 y4 v& Z6 i" Y
  34.   return;( H: r$ `& }, R) B+ H4 }9 f
  35. }
复制代码
       对于数据的处理,在客户端是支持输入ASCII和HEX格式,所以服务端也就是开发板的代码中要和输入对应。这里使用ASCII来传值。
5 p" o. }% C( v. f7 n  L        在串口调试助手中也打印出来收到的写特征值。如下3 o0 H* l, d5 O6 \7 M' n
         4.png . x8 W0 m# ]0 ^, {# i) k4 t: o
        不过倒是有个问题,Service name在手机客户端都显示unknow,一时没找到原因。
/ A- a' Z$ d, M4 b
& B% H- ?' f( j1 {
& S2 B8 I, s% g3 A* P# o
收藏 评论2 发布时间:2024-11-3 15:25

举报

2个回答
STMCU-管管 回答时间:2024-11-4 14:42:54
Service name会不会是UUID格式问题2 n3 O. R$ b$ ~. v% D
BinWin 回答时间:2024-11-4 21:03:53
STMCU-管管 发表于 2024-11-4 14:42
. q9 M9 i' g7 Z* Q; gService name会不会是UUID格式问题

' S# ?, n9 w- u: v& J5 fSolved: Re: Naming BLE service on STM32WB - STMicroelectronics Community$ ?( c) K, }2 s! |
' \) n0 g  L% l  a; v+ X

所属标签

相似分享

官网相关资源

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