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

基于STM32WB55使用STM32CubeMX生成应用程序连接手机APP

[复制链接]
攻城狮Melo 发布时间:2023-4-11 18:16
概述
    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过手机APP与其连接。

8 `" m' s( Y) d6 w  W1 F2 g
微信图片_20230411181927.png
$ I6 K0 p% h' P- W
硬件准备+ F; j0 q7 Y- A$ F5 i
    首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板:
; f% F" d2 c4 L( Y# |9 ~
微信图片_20230411181611.png
& ~! w2 [# i! R9 w% n
选择芯片型号
+ p; x4 F3 H% V7 m1 E( N: r 微信图片_20230411181603.png
8 O* S8 G* Z; w# U! X1 v2 C; \& o配置时钟源
+ H4 g* c5 x2 j; g/ ^$ HHSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
3 ]+ W2 h+ Q2 y7 I* x) f- m) @- r% M) n! o: ?: r3 v! ~( H  x# n0 N
微信图片_20230411181559.png
, K; n" G0 s9 {4 h; }7 a
配置时钟树
1 {9 p( W, D' J, d, T2 b
( U: R+ o" e2 V) C" w4 Y
微信图片_20230411181555.png

3 [3 m" E0 v# v/ T查看开启STM32_WPAN条件, |; O& S4 E. H7 u
    可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。

3 F, T+ w# y5 h4 ~9 E- y6 _0 t5 c
微信图片_20230411181550.png

) v) Z, ~# S5 k配置HSEM. Z- ^+ H& o6 f
    硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。  
# z- W5 b% ?5 k. {1 K3 i( p5 D( V  w) X
微信图片_20230411181546.png

! n" N  ?; w  G0 ^% T3 f; L/ [+ s  p* }9 V9 {! y5 q
    开启HSEM如下。
& u% _$ z' B9 R& w
微信图片_20230411181532.png
* K- y7 ?2 _/ \5 e$ Q5 i
配置IPCC
# j( u# C3 b7 w+ j3 U; G$ d' a3 B
    通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
5 Y* [% J9 U5 I; `1 s( ]+ \4 W) q
. `) w! X- b! p8 m+ s  L
微信图片_20230411181536.png
5 Z8 A- l# g4 @
   
    开启如下所示。
4 L  P$ I& H9 h; F  I3 M. q
微信图片_20230411181542.png

/ L2 i& n4 |: N4 K配置RCC  O) Y- W0 v* R, r# X5 T# v( y
& Q" H. \, G5 b% ^
222.png

; Z2 J5 A, N$ t) C% r) [' |启动RF
: ]' j9 d, s" b! H

) ?  Q; ]* o8 c% w% I, A3 G
微信图片_20230411181456.png
  L% I3 i. k( B" z6 U3 [
配置USART) a* F: ]6 f. C( J, o9 v4 k
% I6 n5 v% N2 m6 a. d" h5 `( q; C! d& H
    我们需要串口来打印数据,以方便我们查看信息。
    查看原理图可以的是PB6和PB7与ST_Link链接在一起,且为串口打印端口。
9 }) J. m; k  f+ W- F* q/ B
微信图片_20230411181451.png
; t& l' C% n7 b
微信图片_20230411181447.png
" X' r8 O' ]: k) d' B0 H4 x- g
    开启DMA。
' d, X% A2 C9 p; D) F' p+ a
333.png
& h& ~  X' a' Z2 ?
    开启中断。

0 N- F, Z3 a* g+ E# ^
微信图片_20230411181441.png
* _. |! G  `# T1 c8 [4 r
开启STM32_WPAN& V! s: q, ?) x1 L
    由于我们使用的是蓝牙,故勾选BLE。
! `' R( R0 H; b5 D) G9 m  q) O, _
微信图片_20230411181437.png
$ ]+ m( F6 q- t# x3 N& o& t$ s& o8 \
    配置自定义模板。

* c2 }) R8 ]  b' Z, G/ T! P
微信图片_20230411181432.png

3 x* c5 M, @! H2 ]
    设置串口1跟踪。
; w2 K$ e: A: `: X9 a/ M& `
微信图片_20230411181427.png
3 W- o: A. _! L( @' t  m
    关闭MX_USART1_UART_Init函数的生成。
3 v7 |: Z, v) e" Z! ^1 G' X; }
微信图片_20230411181423.png
2 h: J3 T  p# X$ d
    启用串口1的tx的DMA。

! w! X! d% S8 F+ A1 \1 M$ M
112.png

) I( o1 s6 c$ f% h- z
    启动串口1调试跟踪。

$ q4 ~* a+ _# @  S; U8 X
微信图片_20230411181419.png

8 p5 F. d( s. R; z
    启用应用程序中的跟踪  。

$ y( n" P/ ]. f( ?* E+ h- Z
微信图片_20230411181411.png

" e, X' x! W9 C% B
    设置蓝牙名称,名称为MY_BLE_DEV。

) P( ~7 O; k6 |4 m7 t6 \
微信图片_20230411181407.png
1 g8 C: s' h0 y% I# \( Z$ x  B
    设置服务器配置。

% k. H6 O* @) u0 W  C( s
微信图片_20230411181403.png
* x3 g% H7 y; _0 N
    设置特征名称。

$ }( W+ D5 ~8 @2 Q
微信图片_20230411181330.png
# W: y: `) \. G/ a# C
    使能特征值读取。
9 |9 ?$ Q- o2 c+ v
微信图片_20230411181317.png
9 Z/ ?* d7 G- `8 G, i" H
    关闭GATT事件的返回。

# Y2 o+ \: `4 L! b
微信图片_20230411181311.png

6 h( B3 T/ l" x* T
设置RTC和RF的时钟。
& C! @& z% W! `* f) o7 |% i/ s
微信图片_20230411181305.png
* B' |( g6 S2 J# E) o+ t  M2 }
设置工程信息0 g$ U. r& [* U- U" _; N. g

- j4 {  Q) D! l1 t" l* E. n6 c
微信图片_20230411181302.png

. `7 n& G& W' k& n工程文件设置
: V  L: S- N6 T9 r+ Y( u

, H( q, n( S/ j) u7 x+ S
微信图片_20230411181233.png
7 R( t6 u% U$ e7 z1 V
Keil工程配置
' l$ \0 p4 [9 l1 Y; ]  q- z1 p# w+ H- w' g, o
微信图片_20230411181223.png ; j' `$ H( Y, I0 [4 S8 m* r% W* O
代码配置
2 C3 o4 ?: D& N  t, q
    在main.c中添加如下头文件。
  1. /* USER CODE BEGIN Includes */
    + G9 E) D  H; F+ T2 e$ I
  2. #include "stm32_seq.h"0 J5 Y$ M# ~  q1 [$ n4 _& O' f" H
  3. /* USER CODE END Includes */
复制代码
3 H/ J# I# n# z6 P3 F
    UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
  1.   /* USER CODE BEGIN WHILE */
    / Q# k+ C4 f( g
  2.   while (1)& j7 c; t' J' R8 V+ B( d# h+ K0 V
  3.   {* b/ ]9 p* L8 T4 c; D7 b2 ]4 c5 S  O
  4.     /* USER CODE END WHILE */, L/ i# V. @4 o$ V$ q4 v) |
  5.     MX_APPE_Process();4 g/ [  V- |- l2 I) l
  6. * j$ n* W+ V0 L% L  w3 @# V
  7.     /* USER CODE BEGIN 3 */
    1 ~" F4 ?# z: V' d: L
  8.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);
    - |! ^/ t( `2 k; y* l. o' o5 T/ P/ ?
  9.   }/ g2 ?9 b7 K" B: S% w7 x) j
  10.   /* USER CODE END 3 */7 Q8 M9 V% K6 U: E* v
  11. }
复制代码

/ t: o' @, v' Q+ e" E6 [
    在app_entry.c中添加初始化 APPD_Init()。
  1. void MX_APPE_Init( void )
    ! Z& m# n& o1 J1 ~
  2. {! F, T9 Z( W" B" Q' W& b! R  J% }
  3.   System_Init( );       /**< System initialization */2 }5 M# U7 z) E1 V  @4 ^
  4. ! |) W' `% M. P2 z+ W
  5.   SystemPower_Config(); /**< Configure the system Power Mode */0 ?# s& ]* {2 w$ ?& ^
  6. 0 O9 Y2 k$ S/ J5 X
  7.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */  \) i' p  `  \, s$ f5 p$ G
  8. . F* K) |4 B: x0 y' ?7 ^9 f
  9. /* USER CODE BEGIN APPE_Init_1 */
    * }+ V# {1 ^, s3 v; Y8 `
  10.     APPD_Init();
    7 E& Z2 ~# C+ w# u9 M, i
  11. /* USER CODE END APPE_Init_1 */
    $ @8 V0 A/ v' K6 ^: m# O
  12.   appe_Tl_Init();  /* Initialize all transport layers */
    & S# ^) i* i, {/ d

  13. ; [- h  o3 q# s
  14.   /**- t: J" k0 Y5 P
  15.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )* E. M9 r: _- L: ]( Y
  16.    * received on the system channel before starting the Stack, V& ^; b' E4 @1 j+ i$ b  v
  17.    * This system event is received with APPE_SysUserEvtRx()5 U% u* L0 s5 R( k  j/ B) O
  18.    */
    5 @- S" W% y( c7 t! F6 \0 y  T( g; ~
  19. /* USER CODE BEGIN APPE_Init_2 */% \0 N2 P8 H( f) R  p% |2 b# i

  20.   E/ z# M* q0 E
  21. /* USER CODE END APPE_Init_2 */; `+ J2 T' _' e% a5 g; l
  22.    return;: l4 c* Y1 A1 O' R* ^
  23. }
复制代码
$ t: [  \$ f8 Y$ k; n) O' p

5 x  P2 i* _! Z结果演示
0 i) }4 _6 ?( y& E' h' z# [
    下载完程序后,可以看到串口打印固件版本等信息。
' N' U* ]! ?- P1 y& P6 Z5 S0 c& N
微信图片_20230411181207.png

% z4 z& y" W; j9 b) c4 l6 G( k
    打开ST BLE ToolBox软件,可以看到该蓝牙已经可以搜索到。
( k% g- @$ W6 J. y4 V1 v/ ?
微信图片_20230411181203.png
0 x3 J& \) S9 V3 ~! N
    点击connect进行连接。
    连接之后可以看到串口打印了连接事件。

1 u. v, H3 J# `  F& h1 @
微信图片_20230411181159.png

4 o8 I  q5 o1 Z9 |+ C9 D
    同时手机也显示该蓝牙模块连接成功。
) Y( U8 k( [  l6 ^; L
微信图片_20230411181153.jpg

2 \& f; _% X& o, \. K
转载自:记帖
如有侵权请联系删除
9 q/ Q0 e' W# A( |8 [
( r1 A6 l0 ~; T2 {( g9 P
6 j7 S- `8 P9 \* T5 B+ ~5 |
6 D; J( J  j& D; t. F
5 I* ^  d  r$ N" p5 H" B
微信图片_20230411181212.png
微信图片_20230411181340.png
微信图片_20230411181507.png
收藏 评论0 发布时间:2023-4-11 18:16

举报

0个回答

所属标签

相似分享

官网相关资源

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