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

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

[复制链接]
BinWin 发布时间:2024-11-3 15:25
       上次创建完工程,留了个点灯的尾巴,这次给完成。
" T6 S3 a+ ~! G' l- h0 m/ x
$ {0 C8 i7 Q. w        在IOC工程界面添加服务一个服务,会增加一个服务配置的窗口
8 J' s& R2 u: x8 K, x         5.png
# G! P6 m; u% {1 {& K) F        打开SERVER1的配置界面,修改UUID便于手机端辨识,还有Service name。再添加一个特征,也同样修改下UUID和名称,打算控制LED,1个字节的Value就可以。4 L& i/ _4 x3 x! X; ^* ~4 c( x2 x
       1.png
7 r/ X2 p8 v% o/ [2 E, ?3 w6 O5 C        完成以上就可以更新代码了。烧录后在手机APP中搜索到XX-STTM32并连接后查看是否有刚才配置的服务和特征# M6 R% m3 V# f& P4 \; i0 @+ U
          6.png ( r) o; r& c) g; o1 ?# x: ~
         到这里完成了一半。因为此时打开写属性,调试信息里并没有输出任何内容,需要手动添加代码。查找工程,可以看到新增加的BLE App代码文件7 W8 l( \* K9 e& U0 r
         7.png
  V. \0 g- c2 `% P, v* I% e         打开ld2.c文件查找相关内容,函数不多,可以很快定位到该服务的事件处理函数如下
0 U* ]( L) t% P6 ?( K          2.png
1 ^5 z3 ~; [& f% @        从以上代码能够看出收到服务端的写特征数据时会再调用LD2_Notification(¬ification);函数,同时传入notification结构体,我们要提取的数据也在这个结构体里面。所有找到LD2_Notification函数,添加对playload值的提取和点灯代码。   
' ?: n4 g7 h; t: F* k/ t       . D/ ]) u/ o" k" b' G( @3 F
  1. void LD2_Notification(LD2_NotificationEvt_t *p_Notification)
    5 G: m1 C" U% K( Z4 Z
  2. {
    * J$ Y% |1 x" m" u; R$ s8 s1 i) ~
  3.   /* USER CODE BEGIN Service1_Notification_1 */
    , m# M6 E. X2 M$ }* K$ `# J) J
  4.         uint8_t value;
    , K4 Q, V6 n6 ]1 W
  5.   /* USER CODE END Service1_Notification_1 *// M7 h3 X0 l8 m
  6.   switch(p_Notification->EvtOpcode)7 N& w1 B' {9 w
  7.   {, B) X, S4 o% e/ f, ^, J4 R
  8.     /* USER CODE BEGIN Service1_Notification_Service1_EvtOpcode */+ Y* T% ^( z% C* Q9 m& y# ^

  9. $ D& w! v$ ^$ M# B& d/ }
  10.     /* USER CODE END Service1_Notification_Service1_EvtOpcode */  A1 j: R! B+ H4 a
  11. 4 Q8 G; l! ?& E* {* [! s
  12.     case LD2_ON_WRITE_EVT:  I& F& E, `* b* ?
  13.       /* USER CODE BEGIN Service1Char1_WRITE_EVT */% o7 C' I  S8 Y4 T+ l
  14.             value = p_Notification->DataTransfered.p_Payload[0];9 m" w) `$ v, {6 l
  15.             APP_DBG_MSG(" recv msg %c\n",value);2 R* {0 q2 ^2 |$ k7 h: E7 N: I
  16.             if(value == '0')! {* j/ G8 C8 x, {. |4 ?0 X* g
  17.             {2 t. T: Q! ]# ~8 F! y
  18.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_SET);" T' J. O/ m% W- L( O+ }2 P& q
  19.             }else if(value == '1'){
    2 i5 T! C# v# ?, i0 x
  20.                     HAL_GPIO_WritePin(LD2_GPIO_Port,LD2_Pin,GPIO_PIN_RESET);
    ( E$ p* C! D' v7 s) _
  21.             }8 n" h; e. }) l$ J
  22.       /* USER CODE END Service1Char1_WRITE_EVT */
    & V$ m: A, e" C
  23.       break;
    . w0 C6 X$ \) U
  24. ; B  A5 a" R  T$ r  S
  25.     default:
    9 R8 s: o, @; k7 [; G" K: z
  26.       /* USER CODE BEGIN Service1_Notification_default */
    : y- x  W$ O( s$ r

  27. , D& t) f. P! m- _8 a" g1 Y
  28.       /* USER CODE END Service1_Notification_default */
    / f- n7 ?  Y; X2 H4 S" G
  29.       break;
    8 L4 P6 b, j& B" o
  30.   }8 K0 w; n# R& g: i5 Z
  31.   /* USER CODE BEGIN Service1_Notification_2 */
    3 M& S) D, N4 V2 x1 Q
  32. ) x1 V( N- e% y- {' l  i8 Z! q
  33.   /* USER CODE END Service1_Notification_2 */# W$ G: S* V7 z; Q: [* F
  34.   return;4 \6 m& D2 @7 T& S4 n( F1 u
  35. }
复制代码
       对于数据的处理,在客户端是支持输入ASCII和HEX格式,所以服务端也就是开发板的代码中要和输入对应。这里使用ASCII来传值。0 d* o2 s  d; J9 G. z
        在串口调试助手中也打印出来收到的写特征值。如下# [: }. ]/ o1 J5 f
         4.png * A/ `) M; W( E6 ]3 X% D" x6 X
        不过倒是有个问题,Service name在手机客户端都显示unknow,一时没找到原因。; }' @4 k/ D! R& `

! k- w( R! W: r; ~% V5 n' b: l, u0 b4 Y! r- F
收藏 评论2 发布时间:2024-11-3 15:25

举报

2个回答
STMCU-管管 回答时间:2024-11-4 14:42:54
Service name会不会是UUID格式问题
- a0 U- S& |- O) Z' f, S
BinWin 回答时间:2024-11-4 21:03:53
STMCU-管管 发表于 2024-11-4 14:42
3 F% A: |. K2 E( N5 [: }Service name会不会是UUID格式问题
. r7 i- w2 v0 t
Solved: Re: Naming BLE service on STM32WB - STMicroelectronics Community: w% d& k: G% d$ z# K  V
+ l8 S# ?. s; W& u/ c* M

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版