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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述, _- \* Q6 B9 Y( v
在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。4 g$ e- H' S; A- S" R
8 V1 Q2 K( e/ m4 I
微信图片_20231203164005.png - `' Y8 M. s( d5 O

/ t; w& _6 d7 S2 K5 V选择芯片型号
# l( u- h8 w( n7 `1 {# |: d2 O. R
微信图片_20231203164001.png
/ q  T3 S/ V& |  A, h

9 _0 Y' W3 G6 y5 G$ f配置时钟源   E+ G, `( A8 C2 D
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
% D6 f' I1 V0 W2 p% D7 [9 R8 y: v3 B& v
微信图片_20231203163958.png : c: t; [' t- L( K+ x: o
3 F, I- h7 x; K8 \4 a, {; W
配置时钟树
4 |/ x8 f% W! e: k' Y2 s; H. X: h
" o0 J6 K/ l2 j0 d, w6 R# x
微信图片_20231203163955.png 8 O" B9 y8 q1 a. R
! E$ M5 W, D. R+ @9 c
RTC时钟配置
" {% ]- A4 U5 Q+ O; l3 g( S; _& g4 W7 o0 I( |+ l4 d. N* {& M5 T
微信图片_20231203163951.png
9 |. @0 S8 E& |5 C2 ~3 V& F5 C% w7 T9 u$ \% @$ s: ^
RFWKP时钟配置

# c9 w  m$ \' h8 S' K( Q: ~3 F. z, B5 C% O' h
微信图片_20231203163948.png
9 u9 D4 L$ C8 u  c& N: P  [  t/ k
查看开启STM32_WPAN条件 & V) ?" @( w  I* T% a& h
可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。$ W. U. Y) e! N: d

& R% x; T$ [) m' O% o7 c7 i  k: E 微信图片_20231203163945.png + p0 n# f2 Z1 U* q

  {- F1 K7 b/ h2 D% S配置HSEM / j. Q& d9 J, z# T
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。1 L) |7 n% `5 u; ?, j9 a" x
开启HSEM如下。
3 s( p+ P5 e* D$ B
( x& N8 B* J: h9 u" d 微信图片_20231203163942.png
, g# k3 B' E7 c

) N- L5 ^  _1 n5 A& \配置IPCC
2 d+ r: ~+ I' g4 U/ [! C通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
# s; n2 G* p) l* @0 U" T$ G( S. K7 X开启如下所示。
/ F+ ]: S. U& _' b
/ H6 P$ C, O3 \, a+ _
微信图片_20231203163939.png
: C- k; j4 y" ^2 u" Z4 _
7 J* n/ S7 L! F  o5 q/ h配置RTC + c; f- G! h# x4 C  F+ J6 T3 H
/ q/ h9 I0 C$ V. V5 c, F
微信图片_20231203163936.png 2 C' C+ I2 h/ s( L+ z

4 O/ @  w* |  x2 v; A- R3 g& {启动RF
9 a2 G2 M5 h- v) t1 a3 F

& ^5 X6 ~7 ]3 q, A* W 微信图片_20231203163932.png 0 H5 R$ }4 T$ e  @6 y; @9 T
5 I9 G- K& b6 s2 x% x5 C
开启蓝牙
" U/ e! Y  U3 C7 g9 k3 i0 P4 F5 W+ ~$ v* {$ H
微信图片_20231203163929.png 7 f% }" s6 [7 N$ h- J

6 ]' m4 \& _) q) N9 `8 O开启串口调试

( n8 \7 a% K  m; |$ R) P) Y9 eCFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。
2 N6 y% O* M% v8 U
- H' ^0 Q2 D  C7 W% z
微信图片_20231203163910.png
4 x- M- f  y. a' j+ X( L
# q( x$ V; K' \% k6 t  u$ v2 k  U
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。
9 n4 a: @" j1 N* ?' u& h! O
& K0 z, j) |) i; M/ `7 [1 b7 P
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。7 r0 N4 w: ?" L% a0 U, g
- b4 I8 y, ~) Q, u& h# i
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。
* I# r" |1 w$ n9 \' u
3 k4 E+ G& A, o3 R* ^, J7 n
微信图片_20231203163906.png " S% `. k1 u* ~' l' u. J0 L: }

2 `' K9 {: g6 p  g7 P3 J! R0 [$ n* |" c
串口配置如下。
( v* X2 }$ U7 U3 u$ d8 n" D4 o0 n# j2 z+ L& E3 A
微信图片_20231203163900.png : X+ ]* E1 E) I6 [
9 Y, T- E9 E# O4 U6 S' W* d, B2 |
开启CFG_HW_USART1_ENABLED。7 ?3 e5 J; v' G5 m

' w- _, Q; w& t9 o
微信图片_20231203163856.png ) G. G8 y' T3 A" J2 G

9 W: l. C% j% F& B8 _! T( ~关闭MX_USART1_UART_Init函数的生成。6 J9 g: h' u& x/ @# s

; M1 v" G6 H1 |5 u- ~, Q5 A5 u/ q
微信图片_20231203163851.png 0 R. d1 ]7 [6 [9 R, ?2 j

6 s' C- z0 _) N: u8 L* ~* F* P  eCFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。/ @9 o: C& V" w1 e5 q
1 N8 K& ^+ \7 x- l$ g
当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
: ^9 _! G+ f! Z7 R9 x! X9 J$ W( h/ M- I+ D4 U  @8 y/ b
微信图片_20231203163846.png
5 s$ Y* |+ ]+ \
# k0 h5 |: x" b9 ]2 V/ d: o
开启DMA。0 _& ~; S- r& ~9 P8 G9 z! F1 Z- y
& ?$ m; \& T# N; \7 i, ?
微信图片_20231203163842.png
; w$ n1 [/ e9 r- x% E, h

2 S: _/ h" I7 u( J开启中断。
( S% |5 |+ z& B0 c. n, L* _5 [8 ^1 k* w, T0 F4 \. T) T
微信图片_20231203163839.png , c& _2 L) c  N: s) f7 f$ L
* h% v, E% V% M, V
启用串口1的tx的DMA。* {: h5 o9 j: q2 v9 g5 v! ]4 W8 M
# [* t. T# p: @
微信图片_20231203163836.png - \5 Z" @. G9 d8 b

7 o! l3 ?, l5 w, @2 y; n3 q若无法开启可以重新打开BLE配置。
, f. K; s, u- q4 C, n4 Y% v, D. K
: |- y  @: x, W2 d 微信图片_20231203163833.png ; Q$ K' M! \9 Y+ J3 @

$ h! X8 R3 \5 a0 x+ T7 s+ [启动串口1调试跟踪。
: \% E' W) _/ t/ F* _; D* A3 t9 v. u" |: C* A% g0 z
微信图片_20231203163830.png # U7 O6 I9 k) Z2 n
. I8 ]: o9 J. ?+ @% m- P
启用应用程序中的跟踪 。
% Z- `$ R% a0 u+ m. \( g6 r8 v) V. `& L0 l% A/ _
微信图片_20231203163826.png
6 d+ S5 s* S. `' k! y/ l
3 I: o# T' ]  z9 f  C# |
配置蓝牙参数 & N0 w) K" q: t1 m1 e: b
配置为自定义模板。0 z' y' |' C: q" [( G

* H; L5 {, h( r  Z 微信图片_20231203163822.png
* b# @$ z. L. ]: s" I
5 D- d5 R$ j+ g$ v* T6 |
命名设备名+ {* w/ t; Q' w* k+ Q1 x* U# `

! v- j% k" z# G4 W6 r' y 微信图片_20231203163818.png
6 f4 P' @1 G: B1 `( Q2 n# K/ Z; V) y! P

& n& x. G9 @% H( s* k配置BLE GATT& n# j7 e) O7 E! o: t
2 y# p) `: n) \$ I* \2 z  }% t6 u7 _
微信图片_20231203163815.png   c& R/ E* f' d5 x& R

3 J- [) r( G' R( e3 V+ `; r配置SVC
- K8 k6 k6 e2 A0 L. U: n7 G, T& s/ v4 H* d
微信图片_20231203163811.png 8 q  e2 v, U8 ~

" b, q: J6 _$ J: x& L8 X0 c设置工程信息 $ h: D" O! u1 S7 R" r
0 Q0 {  s( y1 M) j; N$ e
微信图片_20231203163808.png
" ]! {* h. R( _+ B

) i0 v$ W5 T# m" l+ [工程文件设置
1 ^7 m) ?5 V. u% W" c
/ y, M: U' [  b7 D
微信图片_20231203163805.png
9 Z% N6 p/ r: F+ T/ {$ g$ W7 }; B4 x
0 `% l* c7 M8 `. A# e3 W% t
Keil工程配置
3 ]' _) F4 \, y0 [; b1 u
6 I, M: ?- ~; O6 H9 v8 N/ F! w
微信图片_20231203163802.png * b0 e2 ?* l( j/ K, t9 G  H
& @2 A! l1 s5 d5 L7 y+ Z. F7 u
代码配置
) {1 L; s8 V8 X9 y2 X
在main.c中添加如下头文件。
8 f7 v2 m9 f$ O$ E  H8 m
  1. /* USER CODE BEGIN Includes */5 G) I7 y$ U2 I; g
  2. #include "stm32_seq.h": M1 Y4 J$ a, d, h$ k
  3. /* USER CODE END Includes */
复制代码

, w# J! U6 g0 {$ HUTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。$ @- ~; |0 Z0 p4 D5 V* U& e
  1.   /* USER CODE BEGIN WHILE */$ j0 L6 ]+ R, i4 ?! U' c& Q' Z3 w
  2.   while (1)
    " N) G  A. ~) x; R
  3.   {2 J7 M7 q" U4 h0 s. Y
  4.     /* USER CODE END WHILE */+ p/ ?# }# B; G
  5.     MX_APPE_Process();
    1 X, d& G* e* A# I; r
  6. - `0 n7 \6 T# f( h

  7. 1 [# Z" s7 c: p$ q
  8.     /* USER CODE BEGIN 3 */* Z* c7 i* s9 e5 V: B9 A1 u
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);2 ~& D% Y. `1 N+ p* |
  10.   }" n/ L4 x3 z. t% p- g& S
  11.   /* USER CODE END 3 */& B+ b+ D; T  e9 K! a
  12. }
复制代码

: t9 X& d" @" p# D: a在app_entry.c中添加初始化 APPD_Init()。
0 [  a5 j8 p0 v7 m7 ~) x  n; l
  1. void MX_APPE_Init( void )( i; a: V& Z: g% C3 b6 i; Q) g
  2. {# B* f% s3 C2 I7 T6 c
  3.   System_Init( );       /**< System initialization */7 w, f! p/ p8 _
  4. 4 C6 f* Z' {, r
  5. 1 h7 {6 V! _" y
  6.   SystemPower_Config(); /**< Configure the system Power Mode */  z: {4 U9 h7 L5 ]3 C% y. s
  7. % w( j( `/ [6 }7 n
  8. 4 P/ A/ W! ^, ^7 ]! p: \
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
    - ^( _/ l- _7 U+ B$ t

  10. + U" |+ S8 F0 t0 h+ v# ]# ?& I$ u
  11. 8 B; }  ?% U: `
  12. /* USER CODE BEGIN APPE_Init_1 */7 ]% n$ z/ f% @4 B) h9 t/ m/ @( L
  13.     APPD_Init();
    . F) e" b+ f6 V+ T$ q
  14. /* USER CODE END APPE_Init_1 */' h+ C, S5 W( d+ \( i# l! ^
  15.   appe_Tl_Init();  /* Initialize all transport layers */5 y5 m0 p+ n0 Z' s& D
  16. " |2 C6 r: W0 H4 k  Z

  17. ; T0 `2 c: T# e9 L- n! D* g
  18.   /**
      f: }9 a" }( G) w
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )9 t$ X: E) P7 {7 K' E- O/ @! o
  20.    * received on the system channel before starting the Stack
    5 z, V% f$ ^  h+ t+ s7 x
  21.    * This system event is received with APPE_SysUserEvtRx()- x, ^, [( T& P' s
  22.    */. c" Z* F; a6 g! t  k1 p! e# t
  23. /* USER CODE BEGIN APPE_Init_2 */' [( e  E- X7 s1 c
  24. ! p' D/ o# ?5 `; k

  25. / O% o- {) M7 c9 n+ ~
  26. /* USER CODE END APPE_Init_2 */
    7 Z1 Q2 J9 q' p6 z' h! o$ d* l
  27.    return;, b" W! q  ~3 x6 z2 d
  28. }
复制代码

! C+ H0 ~# l, h' j3 }! `; {结果演示
7 `3 q7 y# @4 K( l在app_ble.c中,数组a_AdvData定义了设备名称。
2 q% O. ]0 `: x9 O8 H
8 k) M5 Q3 u* i7 y 微信图片_20231203163757.png
& |- q$ y. U" F8 ]0 J  F/ F

/ `- C* c/ \- t0 q5 w+ {将设备设置为一般可发现模式,若成功会打印如下参数。0 q5 }% @7 B! i$ f+ K; k  d2 K
0 Q  d8 F9 n7 w2 s3 Y
微信图片_20231203163754.png
" A% K: ~; H: k& n2 a( G) m
, b: [$ f& [1 Q  Y$ M) k6 l6 o
串口打印如下所示。& o+ H4 A, J, v4 N: j

) U1 D' N. }/ ^) s0 j2 }8 W
微信图片_20231203163750.png 9 @" ]% H3 ~/ I+ \' t, R1 f
转载自:记帖5 {/ `* F& z3 W  r5 j5 ^! n! u8 w
如有侵权请联系删除
: V$ q0 `/ V7 B
" k& [7 i& O! F4 |5 C7 B* S2 \1 Y/ B6 s- L

8 s/ s7 n/ u. F' h" n
收藏 评论0 发布时间:2023-12-3 16:40

举报

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