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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-11 18:16
概述
    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过手机APP与其连接。
+ C; J% y! d( |# P# n( M
微信图片_20230411181927.png

* [' {0 a! D6 ^. z+ l3 R  k$ c硬件准备
/ Q, v# K  v  K6 k% R4 n0 w9 m
    首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板:

! [+ Q+ I. t! ]& e
微信图片_20230411181611.png

; i1 K. o5 s- ^+ Y( ^/ [- u% c- F, v, \选择芯片型号
/ P) s; r' w1 |: @% n& a2 O 微信图片_20230411181603.png 3 y7 q# j/ o1 r$ U! W2 l
配置时钟源  Z9 C: H) s* q8 ~! q! P
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
4 v8 @! p: U; Z- O6 d& D8 c3 g1 e6 h6 y6 U
微信图片_20230411181559.png
& E1 \$ J/ T& u  ^0 j+ |
配置时钟树: e5 g6 Q8 R0 ]8 x% c8 W9 P

0 o% @+ z9 t" F5 s) @) X4 F5 ^6 W
微信图片_20230411181555.png
6 P; R' F# i6 X1 I" J( [
查看开启STM32_WPAN条件# Y5 _. {3 e. I# j+ s9 T0 i
    可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。

/ @+ v/ |+ M) P% f, N9 c# [
微信图片_20230411181550.png
; ^3 Z% K2 a4 [/ a8 ^5 n8 f9 E
配置HSEM. `, a- t9 Q) s
    硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。  

! F; l9 v% ^0 b/ P0 S! c3 ~! R0 t) ?) s
微信图片_20230411181546.png
, p6 C; S2 i' s2 M

# v- s" c5 v" O1 u$ J+ _4 s
    开启HSEM如下。
& Z/ R1 w  ?' F% F
微信图片_20230411181532.png
' g1 Z0 P# Q  D6 m+ A
配置IPCC* }  ~/ \, N! F0 \2 v6 u1 ]
    通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。7 x/ J+ _- w3 q0 r0 Z  V
9 f# q4 Q. w. N1 g7 E! w. R" ?
微信图片_20230411181536.png

6 r; U$ C. M  U4 u4 f
   
    开启如下所示。
7 b; D& @% W1 a+ ^
微信图片_20230411181542.png

  i% X# b9 H) f配置RCC: S9 m2 u+ u. m1 u/ N" `
) j4 G# U- M& q3 f- y
222.png
% i: p- ~( I/ F; ^
启动RF
$ l9 J1 U8 Z9 n$ E, b0 M6 w
0 J. o/ B' n5 y4 N4 E: O# a6 x- I& e
微信图片_20230411181456.png
* o4 F; c: ]$ h, `. C* K0 d
配置USART
1 w: ]0 g5 V' G% X. ~# x  _
$ r7 l- n; @9 |. t/ m6 X
    我们需要串口来打印数据,以方便我们查看信息。
    查看原理图可以的是PB6和PB7与ST_Link链接在一起,且为串口打印端口。

5 _- @" u- s  h/ l9 Q# y. |
微信图片_20230411181451.png
' [* V7 T0 T/ y, ]- Z% V
微信图片_20230411181447.png
$ K/ m0 i9 i: Q7 G* h1 Y- G1 v
    开启DMA。
+ ^6 q  q/ a# W- Z  H$ H
333.png
2 T% f; E! D. `& Z
    开启中断。

( _6 V3 o5 n$ }; t* P0 O# J
微信图片_20230411181441.png
: x8 r* d( H$ b* g+ `' l( H
开启STM32_WPAN
+ Z7 W4 g) I# @
    由于我们使用的是蓝牙,故勾选BLE。

: K+ O' r3 H7 a* B* x
微信图片_20230411181437.png
2 N8 E* J+ J5 F
    配置自定义模板。

& M& h/ Q, y4 L; x  @* _8 K0 M
微信图片_20230411181432.png
- H& e1 b7 k0 a6 ~
    设置串口1跟踪。

( w; [6 \. V8 z& l. v
微信图片_20230411181427.png
9 m9 w4 ?' S7 P
    关闭MX_USART1_UART_Init函数的生成。
' o/ P; U1 x) V/ d/ }% c
微信图片_20230411181423.png

; L; O7 j* w! S7 Z; @3 ?5 i) }+ O
    启用串口1的tx的DMA。
) |6 R# h( i, F5 M1 V, z& e
112.png
1 Z# Z4 v& `3 K, q. B/ Z' A- N
    启动串口1调试跟踪。
2 N+ J& I- Q. \: v
微信图片_20230411181419.png
$ \4 v( W) Y5 w4 L1 M8 W
    启用应用程序中的跟踪  。

5 p) i+ Q+ P0 z- [+ _9 f
微信图片_20230411181411.png
, X, F5 }; l- k9 H4 N% L
    设置蓝牙名称,名称为MY_BLE_DEV。

) B1 x5 z* x( A4 M5 O6 z7 _- w
微信图片_20230411181407.png
' M2 C) Y) Y6 I, Q
    设置服务器配置。

3 U. B; o. O) @; }" q1 v6 C
微信图片_20230411181403.png
# h8 a2 _& o3 f8 H0 f9 ?; Y6 ^) K
    设置特征名称。

8 Z5 N& \+ z; \' i7 m5 R; R( U) Y" c0 \
微信图片_20230411181330.png
) i. K1 n: E/ w( S, ?' X, d
    使能特征值读取。

4 w. N- H' i% R
微信图片_20230411181317.png
7 `6 T6 M6 H5 a7 K2 d
    关闭GATT事件的返回。

5 h) S/ j" s9 C; r( Q
微信图片_20230411181311.png

# E" ?' E! }( m, c5 ]
设置RTC和RF的时钟。

' C; ?" [9 d" z( x7 s6 c8 p' _
微信图片_20230411181305.png

1 S0 D9 v/ c! Z3 C9 K0 ~$ Y6 ?设置工程信息
6 o( D# ^" r3 l. S/ a0 h, `

( u- r' Z6 d4 w1 A/ l: E: g; m2 ]5 X
微信图片_20230411181302.png
& o' B$ H- d! r' n  W/ I0 {
工程文件设置- L+ ?/ q- s* c, M3 |: r
4 b6 ^" `1 \; U+ ^
微信图片_20230411181233.png
9 ?8 i+ ?) a" U+ I$ u9 J
Keil工程配置
" x2 y" o/ w$ O* b! X5 O, r; U. Q+ s& i  k3 a3 U" q
微信图片_20230411181223.png # E3 P' K8 F8 |2 l% X5 G
代码配置
; F$ F7 C( K3 M/ g& F7 d
    在main.c中添加如下头文件。
  1. /* USER CODE BEGIN Includes */. y( }) J9 O6 k' P. j5 F$ d
  2. #include "stm32_seq.h"
    # l' D% [! |5 R
  3. /* USER CODE END Includes */
复制代码
: a& @6 d& {- |' F; z
    UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
  1.   /* USER CODE BEGIN WHILE */$ q( {, Z0 c5 I0 n
  2.   while (1)
    * K5 G; d% q, Z1 r9 t
  3.   {3 |/ Z( m, \4 c9 {* G* }& D
  4.     /* USER CODE END WHILE */
    ! k; F! ?$ u7 F6 A! Z* k
  5.     MX_APPE_Process();
    # z' e3 i. X; w* _5 ^. r- ^
  6. 6 ]4 U% W' G3 b* T! i) m
  7.     /* USER CODE BEGIN 3 */4 |0 k8 n. o8 {: X0 h
  8.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);
    : E- [/ a" Z& H1 c  [' K" g
  9.   }, n' j" U7 d. w& V3 r
  10.   /* USER CODE END 3 */! `, D! B  D9 a. V4 T% d
  11. }
复制代码

) C' A7 _: |2 l' }3 D
    在app_entry.c中添加初始化 APPD_Init()。
  1. void MX_APPE_Init( void )
    # w/ ~3 p9 ?' Q" z, I' p
  2. {) v( b5 L8 `0 ]' P4 d. e
  3.   System_Init( );       /**< System initialization */' l* b: u1 F- R2 S0 \6 V. ^
  4. # {3 |+ v( [; f# U* H
  5.   SystemPower_Config(); /**< Configure the system Power Mode */9 U! q1 l: h+ n* J/ d

  6. ( a  e& b7 @5 }' Z
  7.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */" v. ~. C* m/ l* i
  8. 7 O3 U8 {" G; L) ^5 r7 r
  9. /* USER CODE BEGIN APPE_Init_1 */- C2 a3 m" [; g' W
  10.     APPD_Init();  {- H2 V$ b& `
  11. /* USER CODE END APPE_Init_1 */1 _8 E4 U% @! d
  12.   appe_Tl_Init();  /* Initialize all transport layers */
    7 R' ], V( H: j: [5 W

  13. 7 O3 m# m! f7 @) r# q/ r
  14.   /**4 g( M3 u& g' m3 [' B6 s
  15.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )8 q4 O0 V/ x4 D5 r; l' H
  16.    * received on the system channel before starting the Stack+ Q5 i& x* u* h2 @  }- y
  17.    * This system event is received with APPE_SysUserEvtRx()1 |' u. p2 ?7 c( Y
  18.    */8 @" D# z# v7 B5 \) ]% P' V
  19. /* USER CODE BEGIN APPE_Init_2 */
    + e- _. A, W/ V; `* {5 F7 u& ?
  20. 0 ^* ~! P) a  s3 }3 l7 f
  21. /* USER CODE END APPE_Init_2 */5 _; l: S( g3 T+ d
  22.    return;8 J( g- p: j% R1 c
  23. }
复制代码

( A) C+ R! k: H2 X; x+ G
& X' F+ r. M& b) e
结果演示
* U7 _8 g! [- x7 a4 X7 Y3 I! h
    下载完程序后,可以看到串口打印固件版本等信息。
2 m' i) K' L2 A, V  e' r. `
微信图片_20230411181207.png
" n: ^0 O6 K" M. Q" L0 C
    打开ST BLE ToolBox软件,可以看到该蓝牙已经可以搜索到。
5 p( I/ @; G1 ^3 S- Z6 P  ^
微信图片_20230411181203.png
4 X0 N6 Q1 A4 E: b. N0 Q6 O. {* A
    点击connect进行连接。
    连接之后可以看到串口打印了连接事件。

: e5 {5 E8 |2 @7 H, t- K
微信图片_20230411181159.png

) v1 M7 F2 w4 G3 K9 X
    同时手机也显示该蓝牙模块连接成功。
- m9 h3 g) f' P% b/ A
微信图片_20230411181153.jpg
  U; Z: T! _6 e4 Y; p3 K" L
转载自:记帖
如有侵权请联系删除
7 [: x+ ?, H+ ?8 U: c+ d
2 h1 M# i  K$ D- }. P

) p/ r, |7 Y/ I* F' P+ A/ Z, O( _  l$ _# C

5 e3 u. C6 _% a( b# c% M. R
微信图片_20230411181212.png
微信图片_20230411181340.png
微信图片_20230411181507.png
赞 收藏 评论0 发布时间:2023-4-11 18:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版