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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述
+ U; I- Q' j" n5 b( m: x8 p在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
. p* E9 R$ V0 p1 z/ {$ p3 m' `$ E& I$ G$ X
微信图片_20231203164005.png " m* K* Y$ g* [( |* j
( W/ i* C8 [/ \+ t
选择芯片型号
  U2 o* V, ~0 G$ \+ x8 k9 t
- _( ~: H" u: V+ }) K/ ~ 微信图片_20231203164001.png # S! b- J( P; F7 c' g, l* H
2 s% c6 b- B; x% o, K( X7 x  @: A
配置时钟源
0 B. }1 f, R7 n1 L4 l3 S4 SHSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:8 N6 L- A6 e% E

+ d* ^1 a( K4 _6 G 微信图片_20231203163958.png ' `' L4 m. q4 V( y- H3 u8 a
4 N7 v% R+ E; [6 G. Z, p1 r/ p
配置时钟树 ) @; e; F* R4 R& L
, l" y- i# d+ c8 y% J7 a- y
微信图片_20231203163955.png ' Q8 a7 w3 ?6 S/ ?' s9 j1 p6 O
: K- \  x( g& e
RTC时钟配置 : Q) @: F2 H2 N3 x; W" Z
( D- a- U. Z9 L
微信图片_20231203163951.png
: U9 n; @6 g; q+ `- k0 T" y5 N4 Q- g" H! \% g$ @  @, E; G0 V5 d4 K2 i
RFWKP时钟配置
, A) E  O& h3 w7 H* J
1 \6 p! [! n" y0 X7 y' F
微信图片_20231203163948.png ) d8 o1 ~" `6 l

$ y1 A) D( n2 a6 u
查看开启STM32_WPAN条件 + c% Q& |# f  ]: ^. i
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。( T' |6 x$ p& h9 Y/ r# K
& X/ A" w. K2 f+ G/ S3 l' [. @# F2 G" T; [
微信图片_20231203163945.png
: i6 w2 C( E0 t3 n

9 ^/ t- f/ }1 R配置HSEM 5 i0 A1 E/ T2 Z, S0 X
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。! `; _3 o+ s4 r* {' I  w3 x4 ^, l
开启HSEM如下。. }. O' P! v  G1 E

3 ]  h+ _2 a; w- K  l( D: v- I 微信图片_20231203163942.png
" f9 Z0 K% _9 Q1 `6 t

6 \; ~5 U& y7 b3 h* P9 W配置IPCC 4 [, D7 g' _  t" Y( W
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
7 R' K- K- p( V! y开启如下所示。
7 _/ p$ l7 w# {
; X. `4 j' R( J, p& r
微信图片_20231203163939.png " o: n0 g7 a% {7 D( J; Z/ K; X

& H6 }+ h! @+ ]4 q配置RTC
& H4 Y; w0 O5 {" H0 }3 u. _7 a! d
/ a, r  J0 ]: F. z, X9 Y8 P% y/ `/ p. k  I 微信图片_20231203163936.png
. F+ \5 k4 m  J6 u+ \1 k
1 |: n( Q6 R. b& e
启动RF
; S4 R' {9 {3 r% E! r9 D
; |/ H8 z% ]3 s6 [( h* u: U
微信图片_20231203163932.png
. c8 v  p. {) B! J; E
7 u( {& K) M8 P% p' J
开启蓝牙
/ U  v  {3 [2 C* i) x' y% H- u. t) v' v" H/ K: b* N/ M
微信图片_20231203163929.png
0 ~! @% @! o6 J1 q
$ Y+ z6 _! e) v- S6 u+ s
开启串口调试
; G0 i; \4 }3 p# O* U/ F) L# y
CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。
7 `! ]( M# _( H3 D/ f) o& d3 w% n
微信图片_20231203163910.png $ w# ^( [& W/ i' X- @

1 D# Q' X. i1 r# [/ s
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。
. n* T/ R# t6 d' Q
( i) s6 y: [3 u
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。4 i/ c% ]0 U. `

. y+ K# P5 h% m; Z# v9 ^, B5 N
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。2 F: P5 g" A, I4 W9 X! x3 e0 a1 V! S

! G* s/ y3 v+ p) m! O0 @
微信图片_20231203163906.png ; B6 b0 i( r3 G
7 A1 |2 z5 @& D: d: ~
串口配置如下。# e' C& H5 R" u& @

. G. ^% `( v( ? 微信图片_20231203163900.png ) Q/ I/ _9 Z) z$ q3 K2 t: u

+ D7 F3 X/ u+ _* h3 k2 a开启CFG_HW_USART1_ENABLED。& b% e/ s2 J1 \
/ L  P# ?# g# I5 {, I
微信图片_20231203163856.png ( J( \& I) [* c! p8 ~
% f7 t' E8 F' b
关闭MX_USART1_UART_Init函数的生成。* }5 R( V6 W" u
0 k6 {; |( h2 X5 U( R5 j
微信图片_20231203163851.png
4 W1 x1 {' j& B# o. p; A! G3 Y  M% M

9 `5 u1 `2 g" k1 gCFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。2 I- e  k* h: i7 n/ g

8 M# ^  ?4 G5 k+ o: z- a当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。" W; c6 I5 v+ H* s7 u9 p
$ [, q- j' t' W5 S0 o) f  \
微信图片_20231203163846.png   \% e5 I3 H" r5 e# n

& X* ]2 o. d3 V6 i: G7 I4 W  |开启DMA。
; R- M- B- Q# R
- k* }" J0 H8 n9 X7 P: e6 m 微信图片_20231203163842.png # w6 N4 u( q6 e2 u/ M8 R3 Z& ]
- L5 @8 C) f" t: |. P9 f
开启中断。" {) ]: F; Q" Q$ p

$ Z# [; X& E  s 微信图片_20231203163839.png
# G/ G5 Y) T' T2 r4 p! q" {2 y6 w/ F
4 o' j' P5 @9 s2 p7 z7 H4 C1 L+ x
启用串口1的tx的DMA。
; s% R3 T" S$ Q
4 v' z( {1 `! k4 P
微信图片_20231203163836.png
) T' q6 }) D7 M3 J

8 d. q4 W7 q2 W* W5 K" C若无法开启可以重新打开BLE配置。
9 C; M% {0 N) U; \5 Y) S; T
9 e6 c# ^, K- k: f: ^# m 微信图片_20231203163833.png 4 ~9 J6 C3 g. C% \* {7 l- c% ^: H/ @

6 I2 U1 I, K$ T& W/ M6 c启动串口1调试跟踪。3 a& U: b3 v0 Q5 a. H2 I' q  e0 N

* H1 I3 K& B! }% K 微信图片_20231203163830.png & ^6 g5 n8 b  f& l7 _# z7 u1 b$ u
0 ^7 N' j, B. k+ e3 s! Z
启用应用程序中的跟踪 。
$ X$ p! ]6 _3 m0 Y: o. ~; |/ x5 I( t% l& r+ S
微信图片_20231203163826.png
' a9 r* M# r: |& C; I0 C2 G

7 z9 F2 L+ O# a5 n配置蓝牙参数 ! F+ Q: ^2 R8 K* M7 N9 U" L0 W
配置为自定义模板。
' z: I1 t! l' [! O; x" `1 W, o" ]+ ?0 @3 K+ p4 h' p( [: |9 y
微信图片_20231203163822.png 6 }: y0 b! z8 ?9 _6 {
0 S3 F  }/ t0 P% |5 N0 M0 a' @
命名设备名( s/ y5 R8 q$ y4 _6 j) p+ d. Y
% m# W! L8 m+ ~* @# S6 q, S
微信图片_20231203163818.png - V9 ~& i2 x) h6 }. M4 c

; c* p3 T- q4 b6 q" ^配置BLE GATT2 p, S3 L7 c+ ^

7 ^" U( u$ l' r* B6 I 微信图片_20231203163815.png # L% h3 @7 o3 G0 ]+ p
" {, M! R  W7 {& M; Y* @  z
配置SVC% H# b' Z+ Z. O" e  W( ?8 w
  `% s. c8 Q  I: j+ M# i
微信图片_20231203163811.png
, n2 a' b" k+ O7 `  `7 B* I1 j
* E# Z3 p: H9 Y( I# u8 |; x0 Z
设置工程信息
0 w1 }1 }# i8 ^4 o( e  k+ {3 N! M3 i- K
微信图片_20231203163808.png
) \/ Z! v. l; T
; I% Z: H% q* F& z' H1 Y" C4 Z
工程文件设置 1 |& a' L: v2 o+ a& X/ w2 @- |
8 W4 J% f) N7 C
微信图片_20231203163805.png : D& v. Y" x6 q3 Z2 |. ]
& }6 h5 \  s/ o- s5 ?, d' Q8 k
Keil工程配置
* l6 r# M' a3 L4 n& d& V# v6 N  K2 K$ I- d
微信图片_20231203163802.png " X% T+ e. [0 `1 v
: `' k) L$ S9 Y0 n6 n
代码配置
. t  h7 ?6 |# p1 ?% Z. b
在main.c中添加如下头文件。
! R! @& v4 e( b5 g
  1. /* USER CODE BEGIN Includes */
    / R- @$ a% n/ u
  2. #include "stm32_seq.h"( H/ a7 K& W$ L3 Y  y
  3. /* USER CODE END Includes */
复制代码

6 j3 M: [+ R$ r+ V( ?4 hUTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。8 M) P0 w# u1 X# d2 P
  1.   /* USER CODE BEGIN WHILE */) T  [6 N% S2 P3 y8 m9 k  p
  2.   while (1)
    9 H8 h8 @. _, b
  3.   {
    % ^7 L6 V- g4 n% Z* L
  4.     /* USER CODE END WHILE */
    5 a* a. r$ @. K4 e
  5.     MX_APPE_Process();
    " q! W" a# `) _8 }1 t3 U
  6. & |/ y1 l( T4 `* J/ }' F
  7. " L' T" K, |- Z: s" F& F
  8.     /* USER CODE BEGIN 3 */3 f+ g# F# C+ f4 E) _+ m% ^4 W) e
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);) C$ ~+ M: N7 D7 R8 |
  10.   }
      e5 K0 P) j$ W3 m6 N  K) s6 J# U, g8 Y
  11.   /* USER CODE END 3 */
    + e6 B- I; b7 ]8 ~. `5 Z. P6 D
  12. }
复制代码

) ?$ [. j2 B; d0 u& X3 G0 F在app_entry.c中添加初始化 APPD_Init()。
9 v4 B: k/ B8 V( i
  1. void MX_APPE_Init( void )
    ( p) K% A3 O+ w: ]% \
  2. {* O. \0 C  a* K# Y
  3.   System_Init( );       /**< System initialization */
    2 t1 G+ a, ~$ o8 x' T
  4. . c1 W: i- C+ ~! A" ^$ y  m. R8 `3 F

  5. . P. Z! B1 r6 J  R
  6.   SystemPower_Config(); /**< Configure the system Power Mode */9 O; A, I2 q, o

  7. / E3 ?7 K% }" k8 l9 J
  8. 1 ^, S+ F7 u* a# @, n3 s4 N- G
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */0 R0 R7 ?5 j* u0 j% h2 X

  10. 7 l% u( H( a- L( `! m% U) j5 K& l

  11. / g, @0 i$ v' J9 r% u0 `& c2 S( @
  12. /* USER CODE BEGIN APPE_Init_1 */4 l, Z& D2 y& }
  13.     APPD_Init();
    7 N+ i! `! m4 H8 D# ?* z* k" s1 a2 n
  14. /* USER CODE END APPE_Init_1 */$ y4 |, _; F$ ]3 q7 q* x+ |% o% ?
  15.   appe_Tl_Init();  /* Initialize all transport layers */
    4 o! ]3 r) F% a

  16. % Y# `6 m( o5 x  f8 Z/ Q" t+ y
  17. 5 C% L1 Z% L  X9 p+ K5 |
  18.   /**
    / B+ s3 ]& B' R- D+ e. f% h( g
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
      Q2 s2 C3 v. N( n: d; O* t
  20.    * received on the system channel before starting the Stack
    , t, M7 K: H$ Q$ f2 ~+ O
  21.    * This system event is received with APPE_SysUserEvtRx()
    2 Y' w, C& h  i4 w# y1 ~: _
  22.    */
    & p- }$ |& `' a' U1 P8 p9 P; Y5 H7 C$ U' \
  23. /* USER CODE BEGIN APPE_Init_2 */
    $ D9 S: I2 {3 l# n* V

  24. 5 O4 M9 g0 d1 w( G) H! B  X  Z
  25. : A$ z3 a, H5 I% L! U' e9 S
  26. /* USER CODE END APPE_Init_2 */
    - V3 m/ |' F% s3 k% u# Q# r; q
  27.    return;7 k6 B1 ]( \& w
  28. }
复制代码
: T0 x$ H  b) e% N1 I( [$ T0 ~
结果演示 " s, X4 @0 p/ b, o% z" L
在app_ble.c中,数组a_AdvData定义了设备名称。
# i* U( i8 T  q+ x
' ]: z7 Q- b% d% F1 K0 @8 X+ {& c 微信图片_20231203163757.png 1 Z8 B1 C2 s9 R' ?1 r, _; q

; ]+ B" `$ r/ V2 S6 S- B将设备设置为一般可发现模式,若成功会打印如下参数。$ A' h  h5 I; y% Z4 j
9 b1 O4 P! J! |1 f- ^6 [8 v
微信图片_20231203163754.png 0 T) c& l, S' C9 Y4 n4 D7 Z: s

: X7 s6 Q4 @0 P  W! e' t串口打印如下所示。
% L9 E; V& ?! P, m' r7 h' _
# }, L% d2 x9 W/ J( q  c8 E6 \
微信图片_20231203163750.png
& `0 i4 M) n+ Y3 m+ }2 J转载自:记帖$ _8 ]) T& j! m* ?8 w; S
如有侵权请联系删除
; ]8 s! M: ]! A0 ]' S1 G
3 n/ w6 R! l0 ]- f' {8 m! O
% c5 ~: i- D; a. S- E4 X! M! J, U( T% ~
收藏 评论0 发布时间:2023-12-3 16:40

举报

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