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

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

[复制链接]
BinWin 发布时间:2024-11-3 15:25
       上次创建完工程,留了个点灯的尾巴,这次给完成。0 s3 O4 h6 l  @/ H' I1 g* O

7 s  i' ~& g0 K! _  A. n6 v: }        在IOC工程界面添加服务一个服务,会增加一个服务配置的窗口
/ b  I" {. E+ V2 j0 Y9 L0 g         5.png
: t. s1 A9 d, m& y        打开SERVER1的配置界面,修改UUID便于手机端辨识,还有Service name。再添加一个特征,也同样修改下UUID和名称,打算控制LED,1个字节的Value就可以。
# U( M8 E( \2 z9 E, Z; I$ e       1.png
2 P- ^7 o. s- g/ q: l8 P        完成以上就可以更新代码了。烧录后在手机APP中搜索到XX-STTM32并连接后查看是否有刚才配置的服务和特征1 r( o! O: w' j& x- N
          6.png
1 |- D, c0 F% W. s" g         到这里完成了一半。因为此时打开写属性,调试信息里并没有输出任何内容,需要手动添加代码。查找工程,可以看到新增加的BLE App代码文件3 ]* n( p$ w, v' q" r
         7.png 8 O5 D0 @0 v7 S
         打开ld2.c文件查找相关内容,函数不多,可以很快定位到该服务的事件处理函数如下
3 e4 f- |. W! F# L          2.png
, T/ l# @( u- P8 ?        从以上代码能够看出收到服务端的写特征数据时会再调用LD2_Notification(¬ification);函数,同时传入notification结构体,我们要提取的数据也在这个结构体里面。所有找到LD2_Notification函数,添加对playload值的提取和点灯代码。   7 X. {2 g9 `9 ]% [
      
% Z) h$ d& W# Y7 w
  1. void LD2_Notification(LD2_NotificationEvt_t *p_Notification)
    9 g+ a6 R5 W( U4 X/ k6 ?5 Q
  2. {
    3 b6 x! c; Q' A: x
  3.   /* USER CODE BEGIN Service1_Notification_1 */4 d5 @) Z8 @8 Y4 y; ?
  4.         uint8_t value;
    # y/ v% x( U: K# v* w% T, L
  5.   /* USER CODE END Service1_Notification_1 */. |, w1 N3 \' P" B+ ?
  6.   switch(p_Notification->EvtOpcode)' O  L0 V  x/ P7 V9 Z
  7.   {
    8 n) R- e6 R! c0 a
  8.     /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */& x: Q2 t' t4 s$ u/ g) ?5 Y9 i3 Z, @
  9. 0 Z0 l. [. Q: l+ s  Z' D
  10.     /* USER CODE END Service1_Notification_Service1_EvtOpcode */
    ! q! H6 G( O$ O3 E3 @! G
  11. / r8 w; t* E! X8 D5 Z
  12.     case LD2_ON_WRITE_EVT:# L6 p" f/ N* J6 L1 K' O
  13.       /* USER CODE BEGIN Service1Char1_WRITE_EVT */
    # ?' n) u, i$ ]& b5 Q# S
  14.             value = p_Notification->DataTransfered.p_Payload[0];9 D$ N, T0 D9 L" i# B
  15.             APP_DBG_MSG(" recv msg %c\n",value);5 q. t: G$ j) Y; K6 ?" ~' ?$ ?
  16.             if(value == '0')" e+ S$ f$ b& `
  17.             {0 I& e$ f/ g9 p9 m
  18.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);
    % }& x9 g; l/ Q& g. e* W
  19.             }else if(value == '1'){
    0 {3 @4 `1 u# m4 s
  20.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);/ S4 o) X' r/ Y( [
  21.             }
    1 @. h* W. Q- I0 J* g
  22.       /* USER CODE END Service1Char1_WRITE_EVT */& b( f- N9 x/ r* t
  23.       break;) m9 O: h  K% L
  24. ; h6 e1 B! @# C+ s
  25.     default:
    3 p) S! p, I3 y5 N- X
  26.       /* USER CODE BEGIN Service1_Notification_default */2 i( R3 A% F3 t1 p$ h9 X
  27. 6 z( g# P+ x$ N9 {. q
  28.       /* USER CODE END Service1_Notification_default */
    1 u( ?) y! x# I1 R9 Z4 S9 x
  29.       break;9 E2 k* l( z8 r6 P  T/ c! {7 q) o4 _
  30.   }
    7 Z' H' z7 d# P% L
  31.   /* USER CODE BEGIN Service1_Notification_2 */" u# l5 y5 g5 _4 M/ B, i4 X
  32. ; _  r- i, @7 G- ^5 M6 S3 c" C: o
  33.   /* USER CODE END Service1_Notification_2 */  \  ^/ r$ [0 S4 H/ }: b& a+ s+ C
  34.   return;/ r4 f2 {( r5 Z, r6 L1 N' s( j9 N
  35. }
复制代码
       对于数据的处理,在客户端是支持输入ASCII和HEX格式,所以服务端也就是开发板的代码中要和输入对应。这里使用ASCII来传值。
: a. [! T- w- J$ |2 h; D) Q- `8 {        在串口调试助手中也打印出来收到的写特征值。如下8 K& c" H8 c9 d, [: m6 G- S* O9 M
         4.png ) u0 N& ^! p1 R8 U. G  b
        不过倒是有个问题,Service name在手机客户端都显示unknow,一时没找到原因。/ f) p9 }, L2 V" ^1 Q

3 S4 j: ]0 p! o# I$ _5 ^; R3 ^: F, H4 O. B% e
收藏 评论2 发布时间:2024-11-3 15:25

举报

2个回答
STMCU-管管 回答时间:2024-11-4 14:42:54
Service name会不会是UUID格式问题
+ i5 w' r' j6 u
BinWin 回答时间:2024-11-4 21:03:53
STMCU-管管 发表于 2024-11-4 14:42. y  U( ^3 u# c  l. X
Service name会不会是UUID格式问题

4 K4 L  c# y6 }: e  O/ v% YSolved: Re: Naming BLE service on STM32WB - STMicroelectronics Community+ b5 M/ _: O4 h- f2 ~

4 O! Z7 N$ C9 h6 H$ B* E

所属标签

相似分享

官网相关资源

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