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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述. e% r2 l8 h6 N% `! b: w3 a
在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。- ~+ ?/ Q0 `+ j: t& v
+ U! w6 m" x% _) {9 q
微信图片_20231203164005.png
) M" T9 C  K" Z2 J3 x
) N0 r/ i6 _6 x* R- A8 J7 [# R: T选择芯片型号
+ V7 A( G( J$ }4 z1 D7 R8 \1 c% q3 ?6 e
微信图片_20231203164001.png 7 V. h1 v* A/ g- l% Y2 [% w% C
2 c2 w( t2 O, n
配置时钟源 4 u  R- n* b' G% K' w. w
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:0 H6 R7 I' _; J8 @

% I9 ]5 Q( n- b  v8 U5 x4 v+ y# S" c 微信图片_20231203163958.png 9 V' f5 R! v' h# |- B
3 X( Y3 N9 Z% o; b5 d. k; \5 f7 w
配置时钟树 % A: p: U+ ?4 R8 a) N* M2 v: O

2 P# ^: T9 ?6 H/ N
微信图片_20231203163955.png
- l7 Y' D  _4 u( s9 q

5 o  W5 a+ w* f1 b9 c/ b+ vRTC时钟配置
. M5 C8 G; R' Y) o) \3 E  m/ E: v8 n4 I  r
微信图片_20231203163951.png
& {1 ^* u  [- ^
4 a+ H7 v" k  KRFWKP时钟配置
+ [. G+ ^) T& W

6 K  i9 D# h! A; I" O
微信图片_20231203163948.png
2 a2 F: Z+ N" W( z* c* ]) v+ ~' E8 v& m0 b6 O2 p
查看开启STM32_WPAN条件
2 j9 o: H1 z5 M- p  E3 x7 A可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。
% K  y4 N. j) B! h% ]0 r1 \- }  T" i% h0 }# b
微信图片_20231203163945.png
5 B8 n. y% _1 n; y  K: k
8 y1 F; k7 N. N$ F3 }
配置HSEM ( i$ j+ t" ^/ R0 C
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。( h" W% q2 ]. [7 }* R4 q4 u
开启HSEM如下。- N4 ?; |  H% n7 P" t- J3 `
' S, S, P5 q& P2 A4 @, C4 n/ Q
微信图片_20231203163942.png 8 F! c( L) C+ O0 q2 J# Y1 v: }0 |

, X1 \' R: j7 j! q" i2 r8 s配置IPCC
$ f$ d+ y) }' d1 V% d' c4 Q通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
6 I( U4 |' }' E# V; G开启如下所示。
, d. c) j1 S" U: @! c: f3 y, J
, ?3 e0 o7 \5 d! |  W- _. e& U
微信图片_20231203163939.png
( p7 i9 Z9 Q+ P% j
) I  T1 S% |6 h: V7 `' A配置RTC
, _3 {/ }. g4 o. \2 g: ^. I
# H/ r& c- ^+ A; r! S6 @ 微信图片_20231203163936.png
! S1 W  }  K1 L4 t% P5 B% p

! S- B4 W2 t/ _8 j) p启动RF

6 k: i4 L+ J7 s6 W& j" @2 Y
) @1 [; Y+ L: L- X  g 微信图片_20231203163932.png
! \* p$ _; w. R# @+ P) u
; E) l% c# p4 Z/ ^9 o9 i/ i: |
开启蓝牙
4 C/ N0 U' a1 H" s0 U7 U4 H* R0 B
0 y  ~# j$ t0 W  Y# e( I 微信图片_20231203163929.png 5 w8 y; ~5 L9 L1 {& _5 B  t( H
4 K. Y  D- ~  \- ^9 L/ p/ U% j& J
开启串口调试

2 e8 E* O+ i% y* t- n! u3 X% ECFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。  S$ W9 @1 Q( i; \* k

2 ^$ G- n$ j, R/ v9 C
微信图片_20231203163910.png , {4 b0 X- k: _( O* Q
7 n" g3 H4 `7 X$ e5 `
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。2 P, \6 S' j! m
9 }7 `6 W: n* ]' e1 D7 p
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。
2 @. h! G9 G; W- C9 z' {. o  Z$ I0 V/ |8 ]" l! e3 n  [
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。. `  N* _9 F/ _+ d' Y# `+ W) x8 q& X" E
( v% r) m6 W) E. W0 b1 j" Z
微信图片_20231203163906.png
7 y) [) o3 f. p$ M9 }! ^; M( E6 u; h# ~9 V. h# X. _
串口配置如下。, N1 ~" H, f) Y  [; \4 Y$ l
% |8 E7 f+ V/ {
微信图片_20231203163900.png : X0 O3 @- {8 w! _  B6 ?+ L7 d2 K
& T* t$ j6 X' w! ^! @# y; O, c
开启CFG_HW_USART1_ENABLED。* j0 G+ ], R7 |/ J; V* \5 N

1 K& A# V- L% j2 \- g' Q" |
微信图片_20231203163856.png
$ E% U# f' U' J* x8 `6 a1 H- R' ?; p$ o: N* Z
关闭MX_USART1_UART_Init函数的生成。
. `: k; X3 Z+ U
3 z' h+ o& X3 a  ^3 g% s/ e
微信图片_20231203163851.png
  p& V& a5 U! I; y
9 [0 o4 i7 z" W/ q$ L
CFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
7 l+ D/ s5 j+ b1 Y1 h. O( m4 B
" U( r4 l* H0 `" h* e
当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
' o, ?7 K! V* I  g! I1 p. U! s7 p1 x2 L7 D# K
微信图片_20231203163846.png
' W1 W  [/ q, w+ X( i6 L

/ T% x9 y. b& b开启DMA。
2 d2 a9 A+ p/ \: F/ k3 z7 e1 q$ A  m( e% e3 N/ o
微信图片_20231203163842.png + D: c2 ~4 u$ ~& H' x1 p# k% S
; `  C2 I  V3 ^) P( k
开启中断。
& Q* d/ z( e% [( b0 Q* X- U4 X  g/ s# [
微信图片_20231203163839.png ( @) s: u! b; G; x) c7 _# b, g
, }! E: a" F+ H) H% G  c
启用串口1的tx的DMA。$ @+ k2 K9 s* w7 E# h( r
7 D$ ?% k+ A- K- v- _0 D1 T  t8 T0 y
微信图片_20231203163836.png & u" Z, ?( j; D
5 X& X+ J6 l  `5 W) }( M8 Z4 g3 M! E
若无法开启可以重新打开BLE配置。
' K2 |" l+ z4 R: D9 n1 t6 a) s( O8 M1 o4 r- B% s
微信图片_20231203163833.png
" M- D$ C; c* w. P/ H

6 @9 m, i! J0 o! P8 f0 P启动串口1调试跟踪。  v. m" K% x) e  a& n

" L8 J( ]8 ^7 a5 s 微信图片_20231203163830.png
: B) f* T' O3 O2 `% z
2 \4 W7 T6 H; O7 _0 @- c4 M
启用应用程序中的跟踪 。  O- `% ?& t' E" c% z

6 f7 b/ N, @# V' D/ H 微信图片_20231203163826.png % ]4 C; ], B+ B

' b) a5 j+ A- P; q配置蓝牙参数
( i! U, m- {; F1 N; g! c配置为自定义模板。
, A. v! I. H; O# J& o! m. G0 d  g( O1 A% L
微信图片_20231203163822.png
. ]* M8 y) F/ U2 C/ r! K, u$ R

. O) a+ M, y# t% t' q9 L" o命名设备名+ _7 c" ]$ ~$ _9 O$ H" c! v% u
# o1 [6 C9 R, n& E3 Z
微信图片_20231203163818.png
5 R- }1 X  r$ I1 X

" [: o: y/ N6 u( ]8 y  P配置BLE GATT
3 a6 ]! ^. ]& d- c- t& G" C8 X' e) f* h6 f* N0 i0 A4 Z
微信图片_20231203163815.png
! B: N' x/ n/ q! }- f3 u: T
5 C0 R( `' I# f
配置SVC
  |! P0 V% [3 ~  [0 |
& ?+ ~; N  f, }2 C  G
微信图片_20231203163811.png
* w, F' t1 J4 f, B6 o& b

" _/ i- T3 r$ \9 V设置工程信息 5 x: N$ ]) r0 v7 C! \6 Y# n! V
. d5 E9 E2 S. A7 _
微信图片_20231203163808.png
  ~# W, z! [2 {+ D

9 R* L* v! ]2 W+ d7 m8 |工程文件设置 - P% U3 O% w7 a, W; N7 S5 U7 \
1 K# D# o9 ^+ M5 X
微信图片_20231203163805.png
: h" }6 H! `, U7 g
8 Y. c  M* l  t' y: R/ U' M
Keil工程配置 ) c' ?2 E1 K# s; y7 A; G
! ]2 h7 C  n7 @
微信图片_20231203163802.png ' b  b3 i8 p* g$ ~$ u9 G) B6 J
7 }2 g: W  q" r8 V" ]
代码配置
, q! o. W4 K9 K3 J' r4 n
在main.c中添加如下头文件。
9 q, |) M: v% e3 g: |
  1. /* USER CODE BEGIN Includes */
    1 \6 a1 v+ P0 O
  2. #include "stm32_seq.h"
    5 U+ D7 g- w+ b4 `! K; J8 C
  3. /* USER CODE END Includes */
复制代码
7 P' H7 r2 p/ n' }5 ^
UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。; r2 Q" ]2 }) Y: [
  1.   /* USER CODE BEGIN WHILE */5 N/ q. H5 n: }+ r6 Z3 q
  2.   while (1)) }, p) [$ Q  u  M
  3.   {! I8 |6 m! m  N, T/ P' w1 Q( p
  4.     /* USER CODE END WHILE */
    ) c8 C  r  a4 i, U3 [- V" W& j1 ]- L. k( m
  5.     MX_APPE_Process();
    1 @4 Q- X) W1 t& O# n& i- i. d

  6. : x3 E2 W0 |1 v
  7. ( Z' g. @1 V+ {1 @% P
  8.     /* USER CODE BEGIN 3 */  Q' @9 t8 J. F0 y
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);, ?# `% |9 ?0 I: ~3 L5 @
  10.   }
    . c& s2 C9 j. c+ G3 i  \0 ]+ H; A
  11.   /* USER CODE END 3 */
    : e8 H& y% G( G) Y8 r9 V
  12. }
复制代码
# b! Y# |6 E8 w+ }1 g! J
在app_entry.c中添加初始化 APPD_Init()。
" V8 d9 x5 I* _" W/ P- w/ j
  1. void MX_APPE_Init( void )
    , G( i! b; q" r9 q/ ^
  2. {2 }6 ~/ [) \# T
  3.   System_Init( );       /**< System initialization *// `. d+ K7 O0 h  S' A

  4. ' x2 Y# \+ p* }' r( a" R+ N

  5. 7 T& B, G3 q; @  B
  6.   SystemPower_Config(); /**< Configure the system Power Mode */
    / K2 a& Q1 l) H8 F. P8 g

  7. ' {' T  a$ p+ u& z/ s" |/ ?
  8. 5 [& R) p' U" R# p
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
    ) G$ l  z& h$ u) y- O* B, Q

  10. ) ?. X$ B2 ]# ~( ]* u

  11. , k6 a( V, [( P4 g
  12. /* USER CODE BEGIN APPE_Init_1 */
    & x6 j: \1 [; K$ `( O
  13.     APPD_Init();
    . |( W9 `' o5 ?5 j) [% u6 l  Z
  14. /* USER CODE END APPE_Init_1 */
    ) ?+ _/ b7 T- w
  15.   appe_Tl_Init();  /* Initialize all transport layers */  q- L5 Y5 _5 s7 h3 j9 d& z7 v4 O, Y
  16. 0 I1 c1 ]8 w& m3 Z
  17. # o% y, l6 u2 m2 t3 P
  18.   /**
    ' c. Q2 s/ R) W. Q0 V0 a9 L/ o' }7 O
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )1 G& V9 E; d& C, ~8 H5 |
  20.    * received on the system channel before starting the Stack
    8 o; A6 r9 C5 X+ j0 |. e/ H& ~
  21.    * This system event is received with APPE_SysUserEvtRx()9 O( d, o, g9 \7 U" D+ l
  22.    *// A( ?$ M( y0 n, w, t2 }  z
  23. /* USER CODE BEGIN APPE_Init_2 */5 J, d- @( T# A

  24. 7 \& a& q5 u  k; `# A& Y2 z4 I
  25. 4 T3 t# u/ [$ I5 J+ Q+ y0 T
  26. /* USER CODE END APPE_Init_2 */
    - m/ v0 P) x% Z; ~
  27.    return;0 }( E5 |* s) H/ c5 T* a
  28. }
复制代码
3 b" d0 Y" X3 v1 U, {! q. n
结果演示
2 w' ^% M) y+ g在app_ble.c中,数组a_AdvData定义了设备名称。
  p0 S: T/ `( _* _' x& S4 [" `+ C3 ?7 X1 q4 Y& D1 r
微信图片_20231203163757.png
- W( {4 G8 o! y3 S, F0 V

2 ~0 R! E0 Y; |: o5 J# L3 e# C# s将设备设置为一般可发现模式,若成功会打印如下参数。% `: x2 }0 _& J4 u" f% `

! ~$ K# g0 m* |+ ]: j 微信图片_20231203163754.png
( L+ Z; D# W7 M6 _# v9 K# D6 O
5 K9 ~' u; \, K% y# p
串口打印如下所示。! i  E  T5 z& `7 H

- J$ p$ K/ O' w& S
微信图片_20231203163750.png % k* E' r* v3 X: G0 s, P" H! S  {
转载自:记帖, \/ b3 G3 B0 x1 c
如有侵权请联系删除
# l" J' `' L: Z( Q0 L1 j0 N
% o$ y$ Q; p' C2 A" o& {' a% Q  u, U1 C  o
) p+ K1 E4 z* P0 }& ?% u. ?# p3 V
收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答

所属标签

相似分享

官网相关资源

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