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

【经验分享】STM32WB55_NUCLEO开发----使用STM32CubeMX 生成的简单 BLE 应用程序连接手机APP

[复制链接]
STMCU小助手 发布时间:2022-4-29 23:26
概述- ^5 |# v1 D( ?. D: R4 w; n
本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过手机APP与其连接。* V- z  Y- N: o  P! _2 Q+ b) Y
3 Y7 ^6 q+ T* b: d
QDZ[0IK3DSEWOZNZI[Z~O7W.png   Z3 W0 G! }' r" N; c1 X8 H5 I+ ~6 L

* m0 G2 \0 M8 a+ u7 v硬件准备
, V" t7 j) a/ u  ~/ G; S' i首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板:
9 |3 x; ~, a) I) ^8 F
6 G5 Y4 E- J9 u 27)DEK3$K{8TCIOC1~C418T.png
3 R, D- w9 @9 p( o! }) a
" G$ L/ i6 b, }; J/ _
6 Q% a3 N" I5 d' q0 H, @选择芯片型号' U' Z1 |. o- [- }! j6 x! Z
) w; q# q5 F  @2 _: ?2 m" w# s
SE((484}MHFKJJOJH]1~8AI.png
* f  C, P# ~2 O& D: v# j- ?5 n7 K3 n9 C8 |8 ]( G$ R3 i
配置时钟源) u9 b( g: [! Z! v4 D9 e
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
+ }: s$ j+ D! p8 ?+ j+ Q* c5 S" \* ?5 q/ K/ z7 h( _  |1 v
C61S7%QIKC4OA~[SOVBUT]K.png
* n% b. y1 U; m0 i6 P8 V9 [
% D7 K+ g  ?" ]; E( k5 W配置时钟树
7 q7 J& Q9 |/ n6 X, l
9 }* O( G; J* @" f/ x: g6 \ 3QO11)27_64}OQA2O1YTMSC.png 3 m/ l9 T0 u. Q

% D; p1 h, ^5 \. S7 t! [% S0 K* S* K查看开启STM32_WPAN条件
" u, @1 ]8 F  I6 [* h可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
$ s' O& H( y: L5 M7 G. Y, J/ m( k9 p& s8 G# j, ^  m% ~6 j
R]PC){]XVI1@VOD$E%3~9CN.png 4 H: i, e1 V0 t, {/ n( N3 c  A" w
. [4 t! C: Y' m: N9 N% K) a2 K
配置HSEM

1 R1 Q  d! c# P2 f+ y9 `! ?" l) f硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
4 A5 [5 `: `0 @) @' f4 A7 p# Q1 m( M4 ^. V
`GR_H(PV3(JM4(I}23W$D9O.png
1 f4 B( x) N" K; l8 A3 j. i. G$ }% M) C) |

$ K# Z. R7 i, v5 R) p开启HSEM如下。# {3 \# x. \8 R0 e- q3 D

& g! t! X( A+ F( c6 t! S- G- \ ~81758B(Y}BT{@00UPH13LW.png
' z6 E, A# z) |2 Z+ ]& p
" h3 Q( _+ }9 ~+ |- V1 V& C配置IPCC
- Z6 Z, h4 a2 _+ m通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。: F. f5 {0 g0 U8 h7 z' f' g2 o
8 e* j1 A- A6 K6 `
OE}(QUD){IG1{A943_4)B5T.png ' e; F: u$ K& t/ @" j& V3 ?" f

" [, f" S! Q" k) ~! Y% F0 g# e1 ]4 v
开启如下所示。4 r$ U" q; `) h0 d8 v, w

  Q5 C! b6 j, U% M5 c @D[Q2`EA_5[PEYLTNM]UG.png 1 h' B/ N+ A5 B) f4 Y" N

& R% P5 W  n) h2 g) {9 G, `配置RTC
$ j4 D3 ]" {1 i" \9 U; {. X7 N& d0 N$ G1 \: b# L% t
ZZ[MK[WBQ$WYMOJ}LKQD)35.png
% A& K: a6 O: H  ?5 s3 G/ L
; @' B! o0 E5 _8 q# D$ H1 r  B启动RF
1 ~5 d6 D7 o  V5 K5 d% V# y$ I3 G& f0 Y: B! j9 \2 L6 N8 m
D8[W{{IUW10PZPQ3NJ0HH`0.png
+ {0 C4 H: C& }% M7 y* f- A/ Q: P2 G+ W
配置USART
1 y# t: h$ @5 c
我们需要串口来打印数据,以方便我们查看信息。
" P/ ^& p% g' X) @3 s& h9 {查看原理图可以的是PB6和PB7与ST_Link链接在一起,且为串口打印端口。
! w- b! P; U, e& }. |$ _3 l" s0 T2 v- t3 \9 T
R__5E9CQ$YL7`0BXYQ$S5.png & H  |+ o3 x$ l, q7 r4 m1 C
{2`9VI]AMM_E{2)J179~_2Q.png
0 f; r3 w2 @2 K* q) X8 D1 Q
3 W( m* O8 f' t! t  j6 I( i开启DMA。
& d5 C$ F/ g( @  a4 D7 V$ M: ~1 o% ]. G
@V05R1$M`0R2RPE~KFKX{}0.png
7 {% K6 n- N( d) D1 w
) M1 ]/ A8 q( {1 b) a8 o0 z& @开启中断。& R3 g; r  U  E  C% w% q
/ X9 F# I2 Z% B& T4 `& U
}C$LHN3XB]XGX[}Y83[SXPL.png
5 I% {) J6 w# E% L
1 f: e0 v1 U1 U7 O$ X( t开启STM32_WPAN( t& D" o3 b6 N
无线个人区域网(wireless personal area network)。
$ d+ h3 X2 A6 ?" n3 s1 k由于我们使用的是蓝牙,故勾选BLE。
9 e- K! T: G3 P& V
6 m& Y1 k& l) m4 e' f% k0 I EZ5[@)H4HRTHQ9S7K472{SA.png
  k3 ?' n, X6 T! z) K7 ?, b5 i# n5 B! v3 T! K1 Q1 N
配置自定义模板。- T) Y/ h1 E! `& u7 I& D
+ F; e+ c2 m& R2 B# y5 s+ J
P2M{K{SN8_1BEESIXX1L]T8.png # [6 j. n6 U/ Q+ w# g
2 F  u% t$ K+ \+ j+ N3 f
设置串口1跟踪。# s7 i) _4 |' k  _5 m7 x

+ Q2 @7 r# l# O6 u" h& i1 b C~58`Z@A7SH4$Z~Gt`5)0.png   [7 C+ B" \4 d' t0 X7 x& y8 u
# W+ W8 }- S" i1 n
关闭MX_USART1_UART_Init函数的生成。; ?8 p1 S2 |  l: T: g
& z, w' u0 A8 S$ R5 t
CJ4FFQD1@G631TL_GBOSXO0.png - i0 O. T: g  I" Q

* n1 ^( a3 S. q, n8 S4 d. R启用串口1的tx的DMA。
  ?: c6 [/ s6 c( I) C( o
- p% p, E8 B+ T. N* k6 X Q7OH7@~4@7WAR}2KWHU@6TP.png : t, Y; [( j: ^; q5 q9 Q
) ?) V; r! @) ?
启动串口1调试跟踪。- \9 o: L1 {1 \

* W0 x8 n% Q9 R0 ]" n {OVAPP`[ZXMI]YTH2J)BD(6.png
% r6 B: q- F9 F, e
7 }$ y2 H5 Q+ g启用应用程序中的跟踪 。3 t) W7 K! C; h. y% r0 s+ R

5 Z0 S7 W1 G% B0 {* ? KZ$GS1TO{XO(XSQ5FWX}MPM.png
" I0 v8 {  \- s! w& B/ L, K! N) {2 u! p1 V/ B9 d( S) w  m5 x+ Q" H
设置蓝牙名称,名称为MY_BLE_DEV。" ]2 e- Y/ G: R# v) J% _, E4 e4 ]
& F; P1 ~( ~6 O2 r4 ~4 G( o
1_S@){KAM~9KFWEOQSGQ%]1.png
: j/ A: I6 Y( Z1 w( j2 [2 F# X/ ^, v6 g
设置服务器配置。
& S$ t4 H0 e. c6 j4 s
8 S0 b( |; P) f' E5 g% ^& h( e8 i# u JL3VR1@MOY0RD6@%2L(YALN.png
: l4 V3 a' v( `& p& v+ |+ k. F+ m9 H& A
# }$ Q1 R4 E) _6 e7 d# }设置特征名称。5 i5 Y: d. M9 W2 q, R9 ~
6 x  c' E& |8 f7 F, f
JQ]UVL[6L{[7VZA3~MZ}8HH.png
' D4 q# j' c6 C, B- I: P+ {5 |
# l0 v1 l- y' K9 q使能特征值读取。6 [9 R9 ~- V( r' X$ m( a% E( d
" `0 X' N. W. d. S8 t7 b  ]- u; ^
00_YD$MJLJC_QCE[}Q69I8B.png
* @' g( M- S  G$ C( O4 V# f" s/ e; a# O$ U
关闭GATT事件的返回。
$ M: I7 {% R2 H1 t/ Q5 g- C& V& \# I
}SUQ(1Y}CD16S27U]_P14.png
2 l$ \9 ~) }; F9 W8 ?/ u: J! ]& p" n6 S: C. G; p
设置RTC和RF的时钟。
# |4 A. p" h9 r: n# t4 V- T' ^* [3 x6 \' L: v( _+ A- P
W@AHAQR$S8K`NHPEV3(@UMI.png 6 I# x# c  ?' i9 a
, X) z( l# s9 T/ @4 K
设置工程信息3 D: L! _$ l7 j4 z
* c/ E4 K5 z& p6 T' r4 ?
O$XVZG8@~2ZBFJKT30({U6B.png
7 L- a/ Z; B2 s3 a+ G' }+ u" S2 T! @- ?: P& u, W! ]9 p
工程文件设置
+ D  G& W& `; p5 a! ^' q0 @' `8 I% y* u* K9 E9 j# R
GOT4JV[O9AG0`W6)(~U)8`V.png , h" A4 g# p2 Z1 `4 g1 H
& }( X) A& @% P8 y" i& j0 G; W6 E
Keil工程配置! V& D1 f- U/ b- g. k

3 q5 K% b. o; Z  K2 j+ i) K; Q) } 3ED%)IW7F8GGF]${@5`7MBP.png
7 a2 G$ ~$ ?$ ?- }. \
4 F2 J1 a, @/ A8 m5 k- T代码配置
$ |5 H9 h$ M! |在main.c中添加如下头文件。# Q+ V6 B* f6 n* U7 w0 @

- Q3 I! @; }+ G. R& t/ h1 E
  1. /* USER CODE BEGIN Includes */
      o2 c/ _+ r! G( L! w0 @
  2. #include "stm32_seq.h"
    % Q# z! f5 s8 v/ N
  3. /* USER CODE END Includes */
复制代码
  ]% @9 W) [% b
UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。0 y# U8 D' p3 A4 S: t

9 a' k( n6 u4 `' }& b
  1.   /* USER CODE BEGIN WHILE */
    9 O) Y, [, m9 O$ G, Z
  2.   while (1)2 G5 E: B) ]$ Y- I  v' j$ x! W
  3.   {
    / X7 E5 b$ m8 I4 Y/ B
  4.     /* USER CODE END WHILE */3 @9 L' i% C) O, ~, v7 T: u
  5.     MX_APPE_Process();
    $ @/ u* J4 ?. j% K3 ^3 G
  6. 8 y+ P" p8 _; d5 o) f
  7.     /* USER CODE BEGIN 3 */* f. Y7 g5 l: u$ |5 {! `+ Z; }
  8.                 UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);* f) q2 I* ~; C
  9.   }) N- r; X3 ]2 i9 M* r
  10.   /* USER CODE END 3 */+ ]- p- d% n( b
  11. }3 t- f9 t& Y* e4 n, ^- Q. Y: f1 n
复制代码
" k' j, e$ b& s5 D( l# I" w
在app_entry.c中添加初始化 APPD_Init()。
( U: ~' p* b$ c6 \; I- ?- }5 @/ v
  u+ S6 {# U9 H  k/ C  k7 p& N) V
  1. void MX_APPE_Init( void )8 v5 `* Z0 X7 `/ j- a3 M
  2. {6 s7 x- d+ O8 t$ H, D7 \
  3.   System_Init( );       /**< System initialization */# x/ {: ~. \5 l, e5 P
  4. & h* Y6 A5 {0 x
  5.   SystemPower_Config(); /**< Configure the system Power Mode */
    " v( O# p# Z* D  ?3 \1 N, r

  6. ! L. l1 \7 j' T2 y1 V# @3 t  r5 K' W
  7.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */& A+ Y# K$ J) \6 T
  8. ( l% D) U, o9 j! g8 D) f
  9. /* USER CODE BEGIN APPE_Init_1 */* U7 X/ ]4 S$ ~
  10.     APPD_Init();# _: K2 P* q: S* \& R! g) \
  11. /* USER CODE END APPE_Init_1 */
    , [% ]2 D% Q, E5 Q& Z, L
  12.   appe_Tl_Init();        /* Initialize all transport layers */) f- ~/ T$ r3 y$ c& \% U
  13. $ A" Y: O. F! W8 ?8 D- m
  14.   /**, d* ]' V, S9 V" F3 h- J" n
  15.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
    3 O" _* h* e# A# l9 o6 M6 w+ N
  16.    * received on the system channel before starting the Stack& A2 e; J0 k) z( S6 @/ `7 U& ~/ y
  17.    * This system event is received with APPE_SysUserEvtRx()
    7 h( n% R' O# b
  18.    */
    1 t3 c: J- k; l$ a
  19. /* USER CODE BEGIN APPE_Init_2 */: n3 Z9 N9 I+ @4 f( q
  20. 7 _2 Z' \5 c5 d' P
  21. /* USER CODE END APPE_Init_2 */) k5 y" |7 m# m. O
  22.    return;; \. T% q4 \+ [6 a/ ]# t
  23. }
复制代码
$ W7 u* f. y; h; t* J
结果演示
; z5 C' F8 I/ ^3 k- E9 z3 F
下载完程序后,可以看到串口打印固件版本等信息。
% p& L  E- ~; d3 z, W3 [+ M# z# K
/ z$ S* k5 J- Z# j" a# } JIY_AKA_28VQH3$B7YHN(YJ.png 5 R/ `; h4 H- x5 H  a# p8 s+ N

4 s, J0 R$ ^# s) d* ~5 j2 r: C1 b打开ST BLE ToolBox软件(APP在群内有615061293),可以看到该蓝牙已经可以搜索到。" i& j0 Z- C% G1 e. f" L" K8 {

1 z1 Z3 A& }( Q2 I# L1 ` 94cf6f868ba24090b6b74d0728af3808.png * N4 S  u" y5 U; v9 H
8 Z! i. B, ]! s; E6 A& ~
点击connect进行连接。3 n* L* S  Z4 r, x0 z8 }
连接之后可以看到串口打印了连接事件。, w' M# T/ {4 \: y

) F! r! }* ?- e+ s0 y3 z. a& v4 v UH[94N@5%RGO)7ZWP~[B]%V.png 0 z8 q- s" k, |6 {  r

6 y5 T' T9 n9 n5 R' b( }8 R同时手机也显示该蓝牙模块连接成功。
, J6 t7 m! \5 z3 C
9 _0 J0 v- ^; B$ P a7c57c999c4d4c1ab1f6d179a96a76e8.png   [/ d- D  m- ?
收藏 评论0 发布时间:2022-4-29 23:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

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