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

基于STM32WB55的配置串口打印Debug经验分享

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述4 \2 h& A. t9 |9 L
在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
( E- e5 v1 \4 ^0 W  c& J6 }6 H3 @; l
微信图片_20231203164005.png . n6 \% ?4 K6 K/ R; v

, k. s3 L8 {. s3 X4 |选择芯片型号
3 d% [9 E1 V& M
" d* |/ z- }: h 微信图片_20231203164001.png ' o' Q) d4 F: Y, c/ T- x8 L7 \( z5 X
5 I& ]4 R/ c7 u8 _8 K* q( o
配置时钟源 8 A2 @1 z/ h4 Y7 I/ Z; b
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:1 ~+ s2 K' g- ]$ q1 Q0 p
2 `/ M3 ]) m( k7 F5 K5 n
微信图片_20231203163958.png
( W5 Y3 p4 h  Q' `' @* w' X* ?2 c

- i8 ^; Z+ ?2 c* j- c1 {8 w: n配置时钟树 7 O5 M# I: p  e

: n, f/ n( k8 w' J  |+ z* z
微信图片_20231203163955.png * ^8 W7 G0 r* N, ]" j4 Q# ~
8 S# Z  R3 ^7 z' _
RTC时钟配置 5 {1 C5 k! t8 I: O7 g0 _( ~/ ]$ f

# M; s& i8 c& H* @' ]& J3 a. `
微信图片_20231203163951.png
. M* u1 U+ e: Y6 D6 b1 u1 n2 c' k
: z8 S, o& [4 s  _RFWKP时钟配置
# U4 d" u3 t2 D, j8 S4 ]/ Y# r
+ _6 y5 q4 a( u/ d
微信图片_20231203163948.png
: B8 j1 Z- w& X. D- a9 U6 r+ o9 K8 {3 i. N
查看开启STM32_WPAN条件 + o  L: S* n' C1 z% ^. X' P/ j
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
% e! ]7 F8 ?+ p6 ~2 E* W. Y1 Y) H$ m
微信图片_20231203163945.png 4 E. I2 \, G' t# K

  a+ ~' u$ o& ^+ w1 x0 N, h! S/ ?配置HSEM . Z6 P# {/ O" |* x! [+ a& W6 R6 i
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。; m  b$ D2 s+ g( J- C) f  f* K
开启HSEM如下。
2 ^& @$ L. y7 y$ {; m6 y/ _3 @- }: m: G) m$ j  j
微信图片_20231203163942.png 5 }9 P) h; G, z7 h6 o
  o4 |: e0 a: b9 I; V- @
配置IPCC
# \9 T: _- E. r% m6 ^通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。, S; B# i- l7 F% ^! h) g; Z- m; O
开启如下所示。: _0 T- }: f) f# Z. i
* k; m/ y# ?3 j
微信图片_20231203163939.png
# W' u% r9 |& r* |* \
6 e0 H: L# a$ Z配置RTC
8 U) U$ `" [+ O  a2 d0 d1 W, s$ _4 L. N9 R
微信图片_20231203163936.png 4 [) K; P- Q/ N( Q1 d/ h
% [6 Q+ i; C! c) B4 w
启动RF

! ]' ?; i7 L  T: f) g+ N: h7 x1 s  Z8 p
微信图片_20231203163932.png
! a; h; D8 q2 m1 |! K

% k2 p8 O3 J: k; p) u0 w5 v/ E开启蓝牙 . k: {2 D5 o9 {

* q1 y: E1 |9 J 微信图片_20231203163929.png
$ L* q; E+ E% t+ X" N

5 P8 t: R- N' }0 J' N0 l/ o开启串口调试
% r8 _6 ^# _% t) [" R
CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。- e# H/ k' u- \1 w
2 h! ^' u% ?4 b+ @$ i8 E9 ~
微信图片_20231203163910.png * ]; e( M) C  _4 o; P7 D6 C( K
3 Y$ Y3 K1 d1 l: O3 U
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。
0 c# q  m0 Y: ^
! x4 \1 B9 m2 y
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。# J3 E8 K3 N* `
/ T6 K& D& N) {$ J  l$ w  @
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。' g) \- \3 O  B
9 G: b5 P- |+ q- H( o
微信图片_20231203163906.png 5 p& W& ~; n0 P( D) G8 o
: K' p5 _* o, Y+ ^9 h
串口配置如下。
) a- V, V1 V8 Z& u9 a0 }
- E9 |! n, @+ [$ z/ F( V- i 微信图片_20231203163900.png
, c/ }0 |  o) q  x& Y7 w# U: Z

8 V* N3 r8 @- ], _9 }5 y' o2 C9 [开启CFG_HW_USART1_ENABLED。; C; G- `4 |3 x( I' G
! E+ \- C$ G5 B8 m
微信图片_20231203163856.png 8 E. f/ n  O1 c$ p5 r
! [, U- P6 x( ?" J
关闭MX_USART1_UART_Init函数的生成。& L1 J# {9 D1 ^- J# ], H

/ w4 X1 n1 E7 l
微信图片_20231203163851.png
  F5 v# ^/ q/ W& j/ x4 ?# e* z

. ~7 c" s% e# A* u" I; c. Q- ECFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
7 B1 `% P9 Q! B( ]8 u8 |
0 F# n* T: }; C2 K; T# V# J, Q5 D! d
当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。' x7 r- T, c$ i
( G; h3 Z; a3 N6 F: t
微信图片_20231203163846.png 2 N' \2 @4 W" O2 H+ S& L. C0 @
& c1 z+ p, s. y" k
开启DMA。
( k1 d2 m! N4 I. s; h
2 \# _/ z& R$ E% s9 p5 a. Q4 o 微信图片_20231203163842.png
; N: @0 r5 @. B2 L7 H

5 z: D0 X$ n6 c  P  r& S8 }9 o3 ^" ~开启中断。& ?( P$ X* B5 s  x
  x5 b* K; n7 O5 P  G4 Q
微信图片_20231203163839.png 7 U2 Z4 F! b  d: {) `, h0 F$ U

+ t, B- ^6 ~8 j8 H( E( |4 \启用串口1的tx的DMA。
( \! c4 G  x  }' P) H! O4 @8 U: _! u5 g+ w
微信图片_20231203163836.png 1 A1 _: |- D4 j* ~" ?- W- G& F" N
! M1 I/ f. \$ f- A$ k9 d
若无法开启可以重新打开BLE配置。
4 F# U4 A  w$ m9 }
4 C5 P2 @  `% R9 T) h' X 微信图片_20231203163833.png ) x% F! ?. H+ e" p8 q3 z0 {

9 c2 b3 C% S: }# U/ Z0 ~  D启动串口1调试跟踪。
9 _1 r, H$ j5 m3 f* L
  t. z" q6 U7 U. [, W8 w, j 微信图片_20231203163830.png - J- j) x, r' g9 a

0 c7 n% _+ Z! x启用应用程序中的跟踪 。& d8 ^" D. D( j4 O/ T% J

$ Z/ ~4 Y  _: g2 i 微信图片_20231203163826.png
% C1 J: d0 L9 c0 w0 u. }
7 Q3 {0 E9 _+ T& y
配置蓝牙参数 7 g& f7 Q7 |# K) s$ ~
配置为自定义模板。
. t+ l' b! n; n" }& {- |
1 R- t3 y7 |' L- r 微信图片_20231203163822.png 2 o- z, n+ C& U, j) j- K
' W) Q3 F) s  _. n! {
命名设备名
& T& o. N3 f% d% g8 G- z, I
2 [9 Y7 ^- Y$ A9 {/ x, A 微信图片_20231203163818.png 2 t" a0 H6 u/ F" \+ B

/ x5 T8 ~# U& x配置BLE GATT
" b% K$ [* n9 c. j4 C: _3 `$ C) v
4 {# h$ b! l; d7 d 微信图片_20231203163815.png / I, S; B( Q. c  u9 f, @

& i) ^6 f* ], b: Q0 N4 S' {0 L配置SVC
/ e- i8 T, r5 u5 l/ P
/ I4 `' X# o& P7 B4 W3 R# K
微信图片_20231203163811.png
  h: ?* n* B5 q7 }3 k; E; h2 _9 J

( ~$ q  G' [" A4 Y, S* P& e设置工程信息
, U7 C# |# g& ?% D+ ^7 h% S
; P; v5 }* _' ?, ?$ R( n; v. \& b, ^ 微信图片_20231203163808.png
! p! Y) S8 B0 K0 [
5 A! z: B; e  Z8 \
工程文件设置   }# f) y$ K; G$ ~& @
2 t9 t8 d0 ?/ J; s) I. B% E
微信图片_20231203163805.png # \! r' \# g4 c
6 w3 m* k& Q; |0 H/ [- A) A  ^
Keil工程配置
5 }1 Q# R: w% h7 j
, Z8 s, X5 W( S0 G3 c2 z
微信图片_20231203163802.png
7 S  ?3 V5 M, j' @! f2 @
' V; M4 k! l, I
代码配置
% Q/ l$ w* B% D& w3 l. M
在main.c中添加如下头文件。) i0 d) a& F, H1 M5 F* j/ Z: M7 c
  1. /* USER CODE BEGIN Includes */( h- ?5 g: }) {* L* u
  2. #include "stm32_seq.h"3 A, C; f) ^, e- N/ r% {
  3. /* USER CODE END Includes */
复制代码
3 C5 y$ l+ h) |) s/ k+ g) p$ r; l0 p
UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
! H" f1 o- v# y  e( j5 o) ~/ x  D+ b
  1.   /* USER CODE BEGIN WHILE */
    8 n2 v/ G$ N! ~4 I
  2.   while (1)
      i9 ?+ _7 N7 B8 u0 m2 H# Z
  3.   {- H% y  g  L" |& k! D1 L
  4.     /* USER CODE END WHILE */
    , K8 [% v5 m1 |* U5 x
  5.     MX_APPE_Process();
    - B2 m% x6 R( F% u' f

  6. 1 f3 `5 u2 f/ @; Q+ r! r

  7. # X% y2 c9 j3 r8 |8 ?% w
  8.     /* USER CODE BEGIN 3 */
    ! r$ Z1 J5 N% r9 E5 t: t1 u6 v+ R
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);
    * ~( T! f# |* Y, `% m# F
  10.   }
    : C/ p) n6 }# h4 d2 ?$ l
  11.   /* USER CODE END 3 */
    % F* y4 Y- P- a7 e3 A
  12. }
复制代码
# w; |2 w% I( |
在app_entry.c中添加初始化 APPD_Init()。
) X7 P% Q2 W6 W6 j! a
  1. void MX_APPE_Init( void )) o7 X0 t, f$ F3 p, j: k# q( \6 \. T
  2. {4 E5 T* }4 n* T( l2 V& ]
  3.   System_Init( );       /**< System initialization */! O( H6 w$ P4 y* F
  4. ' @# r+ U+ ?4 i" B

  5. ( X8 x7 a1 g8 [; ?9 N! R5 {! _& X
  6.   SystemPower_Config(); /**< Configure the system Power Mode *// g0 i+ {" f2 I# c* ?, ?& A

  7. & \9 y" @9 s, c4 _' Z9 W4 m7 _
  8. + w; p1 H' t4 K$ }1 D
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
    . a$ e  z& a" O- v% Z1 v

  10. " e4 A9 i: X4 v- V
  11. 1 {( R/ S$ ^8 L+ I1 r
  12. /* USER CODE BEGIN APPE_Init_1 */
    0 |' Z( d/ h6 H* }3 T
  13.     APPD_Init();8 E) M4 U, X' C4 U
  14. /* USER CODE END APPE_Init_1 */% y( ?( C* v( G6 [+ |
  15.   appe_Tl_Init();  /* Initialize all transport layers */
    2 W$ o5 z2 f, Y* G( E( F3 o2 G2 u/ v

  16. & L: O$ j9 @9 j& f& l
  17. 2 i* U8 H+ C. Q5 c. S* q
  18.   /**
    ' Z! K5 T* z* b! s. s/ |
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
    . @6 K+ |) g% m( S8 b9 V% D! ]
  20.    * received on the system channel before starting the Stack# W/ }& t; `3 W6 H( }
  21.    * This system event is received with APPE_SysUserEvtRx()
    " Q5 A! I1 Q  @8 q
  22.    */
    , i. U0 m# ]" G* C
  23. /* USER CODE BEGIN APPE_Init_2 */6 F" v# t% R% j" K/ a& C1 x. L

  24. 6 I+ I; R5 r4 E! d

  25. 6 `8 o0 ~; c/ r* @
  26. /* USER CODE END APPE_Init_2 */
    6 X/ U: N! w# o' D0 r
  27.    return;
    ( V+ @# |0 q/ J2 B/ c9 m
  28. }
复制代码

. i" \8 h9 I1 L7 o4 p- s结果演示 & g; @7 [3 i2 v, D4 c5 |$ n9 k- k
在app_ble.c中,数组a_AdvData定义了设备名称。4 y: z/ k# ^4 a

3 y( b: d/ @6 P 微信图片_20231203163757.png
  L. X7 L8 x2 y5 g5 N  k

% H' v5 _$ w* I2 r将设备设置为一般可发现模式,若成功会打印如下参数。8 o# {% M; a* q. v
" L6 G5 B4 Z2 v# j0 K# O3 r
微信图片_20231203163754.png 8 K; W  d* y, W' m7 E4 d, U) B- T
8 k* j7 q" X! X
串口打印如下所示。
# i( |% M) d/ ]" D
) B$ h$ J9 h* ]4 A9 w
微信图片_20231203163750.png
5 Y$ u; @+ T. G转载自:记帖' B* a' W" I9 b  z+ Z
如有侵权请联系删除2 r( L' u2 w: E" {
  @9 ~+ D+ V7 ?  g. @

$ K3 @9 a& r9 s: j( B+ T+ \% [/ R- K6 |
收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版