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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述" }8 e/ A  G& C0 F5 ^. M
在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
3 [; I6 X0 U2 b$ U2 `8 b- J3 U; ^8 O6 {3 b/ k" ^
微信图片_20231203164005.png ) n* y+ R' \+ a4 b8 H2 J
& s) {2 ]* C: r& C% V, Y
选择芯片型号 & I2 l7 m- e& m( Y; w6 S0 P

! j# C! {" q  A7 y- [" D 微信图片_20231203164001.png 3 l& o9 {' [" R( M1 t
0 f# g9 y% n. C) W
配置时钟源 & a: F' d6 I8 @- z# T
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
: y1 C. H0 p( g; ^+ K4 T' D5 i- f: o6 x5 P
微信图片_20231203163958.png
" B  {/ d7 z! d3 k0 F- ~
) m# l" h* L8 C* ]9 t
配置时钟树
- D0 u& Q, U2 N0 r# ~7 F1 d+ q6 o  [- G( p
微信图片_20231203163955.png
, L& U, z: q4 U# i+ ]2 F! d

) E4 T5 s7 o! l. YRTC时钟配置
. [8 k( F, f2 V7 }1 R$ n8 c, B/ j; F) }
微信图片_20231203163951.png 5 a- V2 c6 Y! B) p
" G8 ?0 ?! b' Y; C% s( [
RFWKP时钟配置
, e5 O0 A+ Z" O# T

( ~; h( c7 O6 \& y
微信图片_20231203163948.png
: A8 }2 J7 ^, ?5 i3 K% s" ^; Q5 p- I5 X3 [, m1 b! m/ E/ t
查看开启STM32_WPAN条件 + i" i/ {; q. e7 F  r. Y
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。. n( N: U; @, C5 t: Z
# o( K. _( V; A# v0 z. M3 k; b7 X
微信图片_20231203163945.png
( p1 @/ Z1 U# w1 Q: y

8 S3 ]/ M5 c; `# d/ p" ~配置HSEM   k2 {% O2 O0 L
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
, ^  N! u9 Q* J5 r3 P/ g开启HSEM如下。* e  k$ A8 r0 q
7 t5 e0 C8 Y7 ?
微信图片_20231203163942.png ! q# V9 H" d$ U9 T

) n" h; P! z% Y+ a配置IPCC ! C3 W9 ~3 a0 E! v' r: Q( e- ?
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。6 N6 n+ w% `/ t% c' J
开启如下所示。7 n8 u( e4 f( V9 p  U' e

. Z- Q8 n* P2 X+ B6 B
微信图片_20231203163939.png
8 h* }) |9 v6 p
+ o5 ]3 a: n( e7 O配置RTC
. h" e/ ~1 T9 P7 h2 Q3 a" u) x' d' m* E+ l
微信图片_20231203163936.png 2 b; T2 V  y7 N+ N) m8 ^" a% I

+ G+ U' s  X4 b3 K; N3 `- j0 @启动RF
5 u% c" H$ i% j4 G; r! [

1 G1 z- ]- P/ P$ o6 z% g& A8 L 微信图片_20231203163932.png ; S: d. j+ j( l/ F! C8 e/ J

- P  _3 u7 Q8 R6 o5 v% f& e! a开启蓝牙 + G5 R1 G$ c& y1 f/ x
" ~* C9 e, _  U. a1 S& ~
微信图片_20231203163929.png
! q+ F  S! X3 i1 V% I
1 B4 K( Z: H1 q. m2 |) U, r2 N8 X6 M
开启串口调试

% I4 F; F. A, aCFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。& e1 L9 i  h# L

* D# F! k, R# M# |) z3 K
微信图片_20231203163910.png
. K) x! L! m; d: `: Q6 _
6 I+ _( a. Q) U' w  g, T: \
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。! T8 |1 {7 ?! ]: S4 e6 H, A1 G
) x0 u  M9 `% X0 I- R
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。
% |8 S' C0 I* _$ W9 [& W- ?' P2 r" D% M
0 j# p4 _' v8 Q5 P/ k
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。
7 i3 P( N2 j6 K3 G3 x% C
2 W( l- k' n: {, x
微信图片_20231203163906.png
7 P9 C; f. V( T, V; B/ M+ Z, A
8 ~5 B6 b5 N. e: Q' ^
串口配置如下。
% k6 J6 S2 n$ K# M) m8 S- t
& M5 D: ^- z5 ^( O( l5 _% h3 G! z 微信图片_20231203163900.png : f9 b! p% y. ^) [0 C

" J  W( S9 b+ x3 R+ g开启CFG_HW_USART1_ENABLED。$ W- W: s8 X6 s% w  s) [" B
# u# o0 Q# J. ^/ l. m
微信图片_20231203163856.png 9 k5 z& m3 D: D; g

5 A* o$ L' {7 D1 o$ G3 M8 i关闭MX_USART1_UART_Init函数的生成。- i1 K, v: h7 Z3 }% J
+ U7 f8 j% I8 v2 o1 H  [
微信图片_20231203163851.png 2 h' b/ e, `2 v& ~: X; g: x9 U

5 o. g& x* C6 M2 p2 Q, |2 ?( X. c& i" hCFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
" \' D2 j/ U8 d/ ?0 B$ j

" z6 ~# S) z1 W( Q0 W当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
8 x0 l* d/ Z! n
  G. U. D% P1 R! [ 微信图片_20231203163846.png - q! n) E0 o( }* D/ |

. j$ @9 H: ^! C& j5 p6 e开启DMA。/ G# J" |( R2 ?% f' Q
3 l+ A: B' W  L
微信图片_20231203163842.png
& J5 k5 ~) s9 H
- f7 o5 d! B, C( D3 w: p
开启中断。
1 W7 L- |2 @& P7 ]7 S7 m+ j- Q9 A
微信图片_20231203163839.png
5 g+ d) `' d; M3 p, C# H
- z& }8 [$ ]9 `' E0 H2 y0 ~  l) }: F( _
启用串口1的tx的DMA。
' i% p) x0 P( q  U3 d
; P% I, J$ c2 q7 a7 s6 ~" Z
微信图片_20231203163836.png & E6 v5 N* F# `( X' H% B6 @1 o; H
6 N; }. p* {) _# C: v: Z& F
若无法开启可以重新打开BLE配置。- c2 P2 ]+ c) o1 W: b% x5 [

6 d- u4 F" C$ M$ a, ^) Z 微信图片_20231203163833.png
# d& E% v  W4 h, \8 ^
5 [* |0 ?7 U; w7 ^% ^
启动串口1调试跟踪。6 ^" @. [; x: Y% A, l

, P# q' D; n1 D" R3 y 微信图片_20231203163830.png ! Y) j2 C+ _8 y
' @  P3 f. \! c1 I& Q: ]: [6 N
启用应用程序中的跟踪 。
/ m. j0 k# c- c+ e, q& V+ r: l. j. ~2 n1 H, X
微信图片_20231203163826.png
6 j# E) P/ A! `2 V' T# X# V/ u

1 N5 m- ^5 b) M5 S% w8 K# _/ G# L配置蓝牙参数
0 X, N9 F8 }9 W9 g: ?# R. [配置为自定义模板。
' P7 `( @0 f- j! H; I
# e8 X" L: S( P+ B5 J 微信图片_20231203163822.png
& F/ t& F4 M. r
& W6 d+ |% ^/ r4 p
命名设备名% r8 k1 \& A+ j& R, |" A4 s+ k
% M) \: e4 N9 n
微信图片_20231203163818.png 5 M1 ~1 T  Y# G$ k3 O

/ X- K( ^$ H) q配置BLE GATT$ q2 |8 S( V5 i; V

4 Y1 ?- f; S" s- T" X5 L* c9 z 微信图片_20231203163815.png & t/ \7 e3 _4 p% K- F
3 f; i: O. d; G. p' [/ S" ?
配置SVC. P; t! c* e# q6 G* e# ?
5 _6 R$ J% ~+ F" V, v# N  h
微信图片_20231203163811.png # F! Q7 K4 R1 [/ @

. n' ^  R$ o/ Q; V# ?  J; }设置工程信息
9 v" d4 F4 C* y, E* g. P2 J1 Z+ T8 K2 L
微信图片_20231203163808.png ) |1 X% V+ S# t, I  r, @' O2 v

' ]$ Y' f. E( y) S8 l工程文件设置 8 K9 _, H5 f, p0 ]6 B2 w0 p/ q
# J  ?( Q- \7 }. ]6 r5 ]
微信图片_20231203163805.png
  b1 i, p( _' @
3 z  f  u3 N0 |; ~8 B
Keil工程配置
) c4 ]. u$ `1 g9 O! I) k& Y
) \( T( y% Y/ k5 H) K
微信图片_20231203163802.png
) B  a0 M0 _" _+ o1 \- B
5 e2 b8 X+ Q  i$ Y
代码配置
& q0 o5 U" g( |( v9 o
在main.c中添加如下头文件。! O2 u$ M! a5 }3 ~3 u
  1. /* USER CODE BEGIN Includes */
    1 u% C) c' y( e1 V3 X8 K: @% G- c
  2. #include "stm32_seq.h"
    . Q( i& d( ]. R  X: s
  3. /* USER CODE END Includes */
复制代码

- n% j/ x8 u. }6 M1 mUTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。7 g+ ~' j: T0 O" Q4 ?0 @" k
  1.   /* USER CODE BEGIN WHILE */0 p" B! c( I/ Y+ d' i; B* X; q+ I
  2.   while (1)
    ( W1 z2 Q& ^7 [, U+ G  o0 t. T
  3.   {' x( {9 U+ W/ ~3 d
  4.     /* USER CODE END WHILE */
    ) T/ W* S- F" ~+ Y3 f
  5.     MX_APPE_Process();: }9 ^- E# E0 A2 e# w7 m

  6. 9 E( L' O+ |, O0 N! }6 U# ^  b3 |

  7. ! Q1 w# D$ _7 v) g
  8.     /* USER CODE BEGIN 3 */% L, b4 i+ ~' p) a
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);' A& }# h& N4 t2 W% X
  10.   }
    7 {, C3 e7 U6 g+ @" X! b
  11.   /* USER CODE END 3 */
    ; i9 z5 U7 Y! k' p
  12. }
复制代码
% V7 n1 V4 c  r( `* R
在app_entry.c中添加初始化 APPD_Init()。
. c/ @1 v, w3 v- W# l; n8 V, E2 K
  1. void MX_APPE_Init( void )
    ( O+ Q3 S) H( W- T8 u
  2. {
    7 i" _! M( V7 C4 L  G
  3.   System_Init( );       /**< System initialization *// Y' K& M/ Q( t2 ^% n$ K
  4. 8 C, `) v$ J' y2 r* ?. g$ w" T( c

  5. 2 K  t1 \/ V$ t7 c9 k  a5 ]
  6.   SystemPower_Config(); /**< Configure the system Power Mode */4 Q7 f$ e4 k, R! c0 o! U

  7. ' w& P. ?: f5 t( _0 N: k" |
  8. 8 |3 m4 e0 P% q5 ^# H# ?
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */6 u+ Q- K1 B7 g6 p, J7 ?

  10. - e1 L' Y' f! W
  11. / X3 r& D, Y; a6 H9 |6 Z
  12. /* USER CODE BEGIN APPE_Init_1 */
    , G5 \7 {  H& d+ B& S1 |
  13.     APPD_Init();
    & e4 I$ g3 N+ V$ U+ b
  14. /* USER CODE END APPE_Init_1 */
    ; _* D6 R. D$ S. B/ u  N
  15.   appe_Tl_Init();  /* Initialize all transport layers */# R4 R3 S8 u3 O9 g8 C

  16. ' e9 C* [7 R/ v3 j2 G) r; O$ z# l

  17. + f0 C! e5 z. X
  18.   /**+ D( g; U  y5 ]" G: S1 t) r
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
    # ?3 z- f' f0 d/ C: Q" e- U9 H
  20.    * received on the system channel before starting the Stack
    / i. D' r0 o& n
  21.    * This system event is received with APPE_SysUserEvtRx()/ G3 ]" W3 @. Z8 d1 p* P" l& |
  22.    */8 l3 r% m. n; t: b. W' [2 m
  23. /* USER CODE BEGIN APPE_Init_2 */) c- z$ o+ V! P* M7 y- Q; d. }3 k2 L
  24. ; f2 a9 s- q# [+ m( d2 s, a

  25. " G- |  H6 w6 h0 a
  26. /* USER CODE END APPE_Init_2 */
    % A" C: Q: A: z
  27.    return;$ T9 m7 H# I7 _/ G
  28. }
复制代码

* C' g9 Q& T' T; P/ N" R" p5 n3 }结果演示 7 J* ^$ X! W7 {1 n. s- U
在app_ble.c中,数组a_AdvData定义了设备名称。
: J1 G/ ^' i3 q& E) ?6 C7 P. d9 b+ F$ i/ z
微信图片_20231203163757.png
) p" k- v/ ?! a: \
# P& s6 |# e& |
将设备设置为一般可发现模式,若成功会打印如下参数。5 F. b2 f' G9 P2 \- O+ G: w
, o0 }) c2 H  y/ J( z
微信图片_20231203163754.png
+ ~( s& C% k* G4 v

& ~' R, X, ^, [" m6 u串口打印如下所示。
& N4 ?5 s/ t* n2 \% j% [4 |8 }* u8 g: l5 g5 Z
微信图片_20231203163750.png 1 S/ y% N7 ^1 k/ @+ r
转载自:记帖. @" ?* x' ]8 _8 \; ]8 [
如有侵权请联系删除
0 E; e$ u- k: O7 R6 ~8 w( ?+ {$ g! `3 N- k. ]5 Z

/ L/ E0 j% e/ @' i% K, R. R
8 ]- o8 _4 A7 l
收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答

所属标签

相似分享

官网相关资源

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