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

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

[复制链接]
攻城狮Melo 发布时间:2023-4-11 18:16
概述
    本篇文章主要介绍如何使用STM32CubeMX对生成STM32WB工程,并通过手机APP与其连接。
7 l, b: V8 w2 X. e! s" R$ u
微信图片_20230411181927.png

9 L0 Y4 ]7 W4 j8 ]  a硬件准备
$ g' _& Y- F6 L0 {
    首先需要准备一个开发板,这里我准备的是NUCLEO-WB55RG 的开发板:

6 x1 [* F7 f1 Y) c# R9 a" P0 \
微信图片_20230411181611.png
( b" i4 p% B5 H' ]+ z! w
选择芯片型号6 r# Q5 T$ F! U, g7 p% ^; O( n
微信图片_20230411181603.png
& _' s% v4 W0 [! d配置时钟源
+ s- y- A6 P( h* vHSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:7 G3 Y( |; m  `- L& @

* O% [- w5 A8 U8 H9 w7 H3 m
微信图片_20230411181559.png
6 y1 ?9 o/ Y9 a* B
配置时钟树/ i% S% V$ e; p# U

) |  Z2 C3 Z) q9 T2 ?  R" E, Y
微信图片_20230411181555.png

8 W" w/ w" q2 o2 q0 E4 O查看开启STM32_WPAN条件) O2 x/ @: }  Z
    可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。

3 N5 I5 G1 d: U+ Y; y+ ?
微信图片_20230411181550.png
2 a2 z7 s; p! f3 F$ {
配置HSEM1 \- {6 h  R: {: x$ T0 \
    硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。  
4 @- j% Z4 {+ x; u# ~
微信图片_20230411181546.png
5 @: O" E% W2 E9 Z. p1 P4 q: S$ P

$ O3 G/ ^8 S* ~" l8 `# @2 E
    开启HSEM如下。

; a  e. L2 _: _# i) [: P7 W. u
微信图片_20230411181532.png
9 b& {0 s: A! S3 N& O, m# l- m
配置IPCC
+ l: z! k" H3 J! h* s3 z, y' N
    通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。% g; ^/ J8 _% c& z9 r

8 ]% ?- X0 e+ E& U$ I
微信图片_20230411181536.png

1 z: c8 M" s! E: R* \1 J
   
    开启如下所示。
; e( }% `8 I$ ~" h6 |
微信图片_20230411181542.png

7 d1 H$ e& ~: W配置RCC+ m) Y8 {# Z- X1 X' f
7 N- n! T2 y& E* D8 S" F
222.png

) A" ~3 c. F2 A7 ~启动RF1 u$ }8 S( c0 \$ B
! }# z9 f7 k5 n' w. F7 z' y+ e: s
微信图片_20230411181456.png
+ N* s2 f" u1 n0 q' f% `: C
配置USART4 Z# |5 }; r* {6 K

* T, Q  l7 E1 }7 L
    我们需要串口来打印数据,以方便我们查看信息。
    查看原理图可以的是PB6和PB7与ST_Link链接在一起,且为串口打印端口。

* Y5 n- \) K/ V4 f" @) K# r2 N
微信图片_20230411181451.png

1 z, _0 `; i( q) K# c; m0 U
微信图片_20230411181447.png
# v- n. E; d, j  N
    开启DMA。

+ ]5 z( @$ X, j& \
333.png
/ s( L& w3 ]" @
    开启中断。

* ~4 S) ?" w7 e5 Z7 u7 [) i5 i
微信图片_20230411181441.png

) P$ ]- S: V$ w7 k' Y
开启STM32_WPAN5 H4 o8 Y* k1 k
    由于我们使用的是蓝牙,故勾选BLE。

7 H: _2 ~5 [( W0 J6 L" g) r; }
微信图片_20230411181437.png

8 V1 q6 n4 x- F4 _7 p: ^* g  o
    配置自定义模板。
8 R  X. Z5 D0 b" t3 D% b! z/ y- ?
微信图片_20230411181432.png

( L: U/ |# M, y. r7 [
    设置串口1跟踪。
5 V+ j5 w0 R3 }  M& m
微信图片_20230411181427.png

. a5 g7 Y/ ~3 F1 ^# k6 e% S
    关闭MX_USART1_UART_Init函数的生成。
* ?9 \3 M) E! d0 H) s) }1 ]5 R+ B3 y1 e
微信图片_20230411181423.png

+ O+ Z# q" y. O/ m* ^
    启用串口1的tx的DMA。
2 d; }) z+ y( g8 i; ?
112.png

( y0 O* l3 B! ]) ?5 E/ ^4 q6 t
    启动串口1调试跟踪。
6 R! ]2 k  W- s6 X, q
微信图片_20230411181419.png

* }4 l8 @+ h9 M: H
    启用应用程序中的跟踪  。

8 D& Q, |; e. S# l. s
微信图片_20230411181411.png

; I' ]$ _4 ^, a& \, d8 I4 S% s5 I& H
    设置蓝牙名称,名称为MY_BLE_DEV。
' G* i! Y; G! w; Y& Z* W( U
微信图片_20230411181407.png

% q8 a- {6 @; h4 a4 S) c
    设置服务器配置。

/ U" \/ X3 |+ p/ C
微信图片_20230411181403.png
; G, ^" F6 s. c7 v4 h8 D4 i+ F
    设置特征名称。

' R$ Y1 @. [+ p2 \( j$ b
微信图片_20230411181330.png

9 j. R9 a2 p. |
    使能特征值读取。

6 B1 K6 r- q8 K' @0 q8 B
微信图片_20230411181317.png

# C0 u0 J$ F0 n$ ^0 T# {  f
    关闭GATT事件的返回。
+ Z7 U4 B7 ^4 o8 |" ~' m% f
微信图片_20230411181311.png
* e# I1 {* y$ r! @; I  I: |( y, V
设置RTC和RF的时钟。

" b3 J# }6 Z* D0 w4 g- I
微信图片_20230411181305.png
- c" e, j: y- j- i9 u! E
设置工程信息
" b- ^3 g) L$ j2 @6 D/ m
. T' @( K9 [* l6 N0 n/ b; }" g
微信图片_20230411181302.png
" s+ ~- Q+ K8 ]6 x* ^+ c
工程文件设置
6 w3 m  M( b* ]- V

: a# W) y1 F; g9 ~2 J
微信图片_20230411181233.png
7 [8 u2 g6 e" y3 ~/ r* ?% f
Keil工程配置
2 r7 R0 g( J2 g( d8 h( Y5 W( H% L8 k5 ~
微信图片_20230411181223.png 5 Q( U5 C- z- y5 i: \7 c6 s4 }
代码配置
* }+ G6 A0 w: y- @8 p, |8 l
    在main.c中添加如下头文件。
  1. /* USER CODE BEGIN Includes */- z5 F, P2 J4 f# N+ R& S) _
  2. #include "stm32_seq.h". b2 i7 b3 H8 E- N7 }
  3. /* USER CODE END Includes */
复制代码
7 O( k+ x7 M. F) q
    UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
  1.   /* USER CODE BEGIN WHILE */
    + n' z7 D! m/ p% \9 e
  2.   while (1)) K& Y5 I* N$ ?0 _4 D8 H
  3.   {
    $ o# w% W9 t9 ^
  4.     /* USER CODE END WHILE */2 ?% V: V5 c7 v& |# f+ p6 H
  5.     MX_APPE_Process();5 T3 Y, Y4 e% V0 i  m7 H
  6. 8 j! Y6 ]9 G5 V8 l. p9 w! Z0 Q
  7.     /* USER CODE BEGIN 3 */2 R9 N. _8 t$ t
  8.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);2 f4 \5 B/ T2 M: G# z3 ~
  9.   }( S- v  s" \3 ?; Z& I" V% j
  10.   /* USER CODE END 3 */1 A. Q0 P" b4 T- t6 A/ `; O# ?
  11. }
复制代码

' r, P* l# v4 I' i0 F9 t  d
    在app_entry.c中添加初始化 APPD_Init()。
  1. void MX_APPE_Init( void )+ @. S* u1 t7 V3 r% Z  o& d) ^  K
  2. {2 {' k: i$ n, ?- y
  3.   System_Init( );       /**< System initialization */" F0 R/ S3 ?8 y. x

  4. 4 I8 c" V7 `# I" J& K8 M
  5.   SystemPower_Config(); /**< Configure the system Power Mode */# G6 a0 E" H% Z. K" J) w
  6. 2 p& l! r5 A! ?3 I( ~: }
  7.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
    $ ~( i. M* q: C2 c; }; V5 l1 _. g
  8. 7 R! E/ T1 O7 [) C2 Q
  9. /* USER CODE BEGIN APPE_Init_1 */
    $ ~. {, W1 ~" M. \8 A" ]9 N
  10.     APPD_Init();
    5 z- P; d0 J" X6 r2 d$ ^
  11. /* USER CODE END APPE_Init_1 */
    9 {3 L- w  [4 i, {$ e1 E. e
  12.   appe_Tl_Init();  /* Initialize all transport layers */. o% g  C8 c- P0 s

  13. 9 s7 M1 \+ ~; k4 Y' [" f$ L! w& Z
  14.   /**
    " S* o( {' v! Q  n
  15.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
    + g/ I( G/ k2 w- }( y' |
  16.    * received on the system channel before starting the Stack: M& a1 j# b! n3 x, j
  17.    * This system event is received with APPE_SysUserEvtRx()
    3 i& s4 C5 E7 Z4 B" _4 B" H9 {
  18.    */
    ! D9 T  v4 @' L& n# Z
  19. /* USER CODE BEGIN APPE_Init_2 */
    ) x2 }0 s& |- C7 y" J3 e! n

  20. # q  a# G7 V% ~  v7 [9 u
  21. /* USER CODE END APPE_Init_2 */: O7 n! y0 c% R- x
  22.    return;- A( ]% A0 W9 i3 T3 M% W8 K& l
  23. }
复制代码

" I- b/ y7 @0 ]' L& n2 S3 }
! P+ y6 H/ d1 G9 W! c) z5 o
结果演示# U. i- a: Y+ D8 j& _
    下载完程序后,可以看到串口打印固件版本等信息。
% Y; J9 U3 Z: k; L/ L) P
微信图片_20230411181207.png

7 f) m2 A. A- D+ @0 K% Q+ P
    打开ST BLE ToolBox软件,可以看到该蓝牙已经可以搜索到。
( f6 Q' q. b1 j' R$ ?
微信图片_20230411181203.png

7 F- d6 p$ o6 b: M/ u% S5 @
    点击connect进行连接。
    连接之后可以看到串口打印了连接事件。

) E* w; J3 I# V/ I) n7 _0 G9 o
微信图片_20230411181159.png
7 S; e1 C; A9 H* o9 X
    同时手机也显示该蓝牙模块连接成功。
, w/ d6 Z$ u2 z( \, [0 B
微信图片_20230411181153.jpg
! I9 b  ]1 r5 n
转载自:记帖
如有侵权请联系删除
0 W% L. N9 ~4 M" w

  L; E9 K* D! U3 ^# Z  D
' a, \+ o2 y0 S6 [4 y  o9 B8 P: B
' \5 @& o3 M/ Y2 r0 o+ G5 |3 [, O
微信图片_20230411181212.png
微信图片_20230411181340.png
微信图片_20230411181507.png
赞 收藏 评论0 发布时间:2023-4-11 18:16

举报

0个回答

所属标签

相似技术帖

官网相关资源

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