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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述/ |$ f7 O+ P4 |, A. {
在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
+ p5 ]& y5 o0 u/ Q9 Z+ Q
$ ~. G) }+ G$ o7 g5 g/ [! t. w  {- W
微信图片_20231203164005.png 5 B- m4 Q& {& g4 ~- X

! O4 C; E' A# M/ l$ g选择芯片型号
1 f" D/ I6 [9 k+ K* E+ J6 a$ g8 B" w4 _" f& I+ [! a
微信图片_20231203164001.png , {! L3 f( U  |( _. ~

: Y/ W/ f3 L8 n! M配置时钟源 + e3 g3 b3 }) F. R$ f
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:, r4 T7 n  Z5 N2 ~, m% H! \/ g
& A/ B+ C/ C  k+ M) E
微信图片_20231203163958.png 7 k" C- w9 g  o5 Z1 g% c
2 e* X- V. C& \
配置时钟树
. J" ~  |( _( o& B7 S% Z
% j" ^! g1 i5 x; T) ?' n5 \# z9 b/ |
微信图片_20231203163955.png
6 J+ g3 k0 `  I7 F7 x+ X
  k  r; S' a1 D
RTC时钟配置
9 Z# o1 A. a* J0 F# p
  T2 c' f' V; A+ M
微信图片_20231203163951.png & H( v, R$ v! u6 J9 ^- x, k

* p% M8 b- m+ n" k# e8 |* G1 VRFWKP时钟配置
) p" o, X6 M6 B+ h- Y
) b3 u- O$ m3 X4 s
微信图片_20231203163948.png - A8 H- b) f0 ~6 m( F3 Y
4 @$ F( x4 s& a6 M
查看开启STM32_WPAN条件
3 f% x! x* p6 F0 q6 T  G/ ^可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。8 B  T" U# w! `+ N

8 s# W- s# ?2 ^ 微信图片_20231203163945.png 2 }6 w9 H8 M3 \% @+ Q- e

) |4 ?1 B  f2 W# C+ ?配置HSEM
; D4 i* A' g0 T& Y! l0 S0 [& j* x硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。# B; Q4 m: A; `- ?# j7 A* B3 [
开启HSEM如下。* S1 H  a5 p) ^0 E% ]! q

9 t4 r) Z- f9 i0 A4 H6 X% L* ^( d 微信图片_20231203163942.png . ^) I( B+ G7 I) j, V* z4 Z
+ Z# N+ I# q  b- L  ~
配置IPCC ) H# j# y2 M3 u3 x) W$ z& K
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。0 Y, i/ ~: s, L5 s' ^0 k+ w. z
开启如下所示。
3 _/ ~4 t+ r2 F. P+ d
" }& G+ M5 S# W1 u
微信图片_20231203163939.png
- r' ~* N! [! r4 g) v2 F* z8 T; m8 n
* O  s2 m, h& m( z配置RTC - H2 t; K  H1 x3 I
& i! T& H& x8 v7 L( i
微信图片_20231203163936.png 0 M9 J: A: c' i2 e, D
4 C% _9 A' O2 ]
启动RF
  j5 K2 u" b$ {& S. y/ O

# E9 w) i1 a7 Z3 J/ D" F 微信图片_20231203163932.png ! R% {/ M% u1 [3 q8 P$ B

% S3 t2 u( m" z' r! H! R; L3 ~开启蓝牙
7 L: i9 k5 ]. c  n6 a9 o8 Z# U1 F3 K5 S* A/ f7 f
微信图片_20231203163929.png $ ]# h. J1 g; [/ x) s- \2 X% l

2 ]7 e4 h9 E. c1 m5 n. }开启串口调试

5 ]: `8 c) T9 r1 _1 BCFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。( q" L$ ~! `' v9 G, D1 ~; X. X/ c
1 `$ _- v4 U, h: Z; \' D* t, o% p' r
微信图片_20231203163910.png
( b) _5 k& P" }/ Y- H! T
% \; R9 M/ Z! M% p8 m( Z: U1 `
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。  W3 X, V# [1 |+ O5 `

0 z* p% a. O; X6 s) ]
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。3 d  J& _$ \6 t1 ~5 |
$ e# \& @- x' c; C6 d
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。8 H. w, c# n: p! m; v9 |2 _0 c5 E! y

( Q; y4 }9 G) x3 q$ A+ v8 ?
微信图片_20231203163906.png 3 i9 E# G" E) X% W

' ^1 i7 u3 z  }9 T
串口配置如下。
& Y$ M+ \* I4 j" G, D1 y% S5 m
5 I, X( G/ k3 x0 ~5 p4 a+ C 微信图片_20231203163900.png ; V2 O5 ~" Z4 i. k! p' z
) M8 [! j5 D" f2 K! |
开启CFG_HW_USART1_ENABLED。
( l4 b4 b* k1 i: V( C" [/ v) F. V) h# D% e
微信图片_20231203163856.png
! b- g+ U0 j5 P& r  \' o8 [. [; S  `: s$ i1 q6 U) _/ m
关闭MX_USART1_UART_Init函数的生成。
. J: o& K1 I& Y' W( e5 s* ]# @; Q8 T/ f# y5 o6 m
微信图片_20231203163851.png
, }# K  i3 a: D3 m7 {7 ?# ?
  k) I/ b4 \# }- E. t. p0 k
CFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。. N2 c. H& g; c, f  ^0 @9 D2 E
) |7 {2 V* Q% \' y" Y  S: G. [
当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
9 E9 O( v; Z5 h8 V
" d0 ~4 o+ j$ b; b0 D 微信图片_20231203163846.png
* u( D$ [1 @5 u6 I

9 T; [3 C- P' X6 p% H开启DMA。
. S9 e7 S! Q- _, z$ F1 u+ z' m$ K, Y. P  R+ G9 P8 \
微信图片_20231203163842.png
* D( `$ h% n3 I! o: I& h
0 y' `5 [$ @3 s
开启中断。5 u  m1 E/ r9 z
* N" W, `% X+ j. {$ G1 j
微信图片_20231203163839.png - S6 ~6 @- N4 ]9 n3 |' I
9 B5 b' c: m, F# f. q
启用串口1的tx的DMA。: }  ~  }$ w  z" a1 e/ d& X% U7 D

8 }; Q/ Y. K" I; t/ p. |
微信图片_20231203163836.png
( [0 D. v; m6 E' y7 K4 h9 E% r# s6 ~
1 O8 d1 O3 d$ b. @" c
若无法开启可以重新打开BLE配置。6 k0 b: Q  @1 n) H+ s
; c  Q, N( R+ c$ x
微信图片_20231203163833.png 1 d  r* ]. n3 O1 ~, w6 S. i, M" f

! V# E: |5 U- z, ^启动串口1调试跟踪。) F1 l. ]. ?- Q6 q; Z4 S

0 F) H: ~" `& v* m& J% r) ? 微信图片_20231203163830.png & y5 [! T+ O2 O4 }( `- d1 G. m
+ }$ a) H! [6 Q/ ]; `& a. \2 h
启用应用程序中的跟踪 。) C$ p9 t  P! K4 @

: d5 e- l# F7 k 微信图片_20231203163826.png
, U4 U% t- t9 c4 }' _8 }
) j% A$ s, E& X: Q
配置蓝牙参数 ! K9 E3 u, \) z  y8 A$ X
配置为自定义模板。
1 \3 P( ^. x9 s2 l
( v3 e# u( f7 T3 y( a& c 微信图片_20231203163822.png
- V' ^' |* `9 _  b
+ t5 y! O6 d2 F+ T4 i
命名设备名  G) q* i, N* T$ ~8 c- D

5 A2 R1 Y8 ?* A* {4 a1 a 微信图片_20231203163818.png
& p& u* i* d) d; f) Y+ @( n2 d
% q: d( x; [( {/ F; V* u9 t/ A. P
配置BLE GATT
. m3 i. x3 P7 k+ f. a0 s
6 _  q+ W* F" C  q# `. u- e 微信图片_20231203163815.png
7 W: R7 |+ K; {4 k/ Y- g# g* I

+ S% n  H! V/ U# r* l配置SVC: [* B4 E: Q$ v3 w

% u& g# E: t1 Q; U' w( M
微信图片_20231203163811.png
) P* x, ]# s% l' |

7 Z0 n2 y5 R) ]1 w( }1 f1 Y设置工程信息 / ?0 h2 g$ H3 ]& h

. f3 q; Z3 {( Y 微信图片_20231203163808.png 8 ~& S2 u1 x- g: w7 C) W  ^) E

+ o5 D4 Q0 t; v- K" B! `工程文件设置 $ m# f! d* g( H- |1 W

( @1 L* O& o! e% b0 t* k 微信图片_20231203163805.png
2 z6 ~3 c- Q3 y; L1 j
# ?( n/ ?* o! T2 D
Keil工程配置 4 _3 e& m0 ?8 l
8 x* W6 `0 J1 O0 r! N3 }  e
微信图片_20231203163802.png
% ~2 I. B" e( o1 r  T
# @) `0 d& a+ c
代码配置

4 P6 @4 Q0 F  t  i8 {在main.c中添加如下头文件。
% K; T, W" E* X) q9 o: I9 n
  1. /* USER CODE BEGIN Includes */
    4 ^4 A: r( X+ f4 C
  2. #include "stm32_seq.h"
    3 N; O6 G- _! [$ e$ V
  3. /* USER CODE END Includes */
复制代码
6 D9 R: I* w" K! d9 s$ |1 M* D: `
UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。. f+ b' ]9 \1 N' C2 H) }" L
  1.   /* USER CODE BEGIN WHILE */
    , q5 w. P1 p* B  c/ }* q; _3 l1 v5 H
  2.   while (1)( |% m; ?6 x- n1 W3 g! j
  3.   {
    1 o7 e  P' u" H; d3 {
  4.     /* USER CODE END WHILE */2 \1 g8 t4 _. K. M$ h
  5.     MX_APPE_Process();
    $ [3 b+ B4 B0 [) N

  6. 1 X0 k0 W8 |, G7 q3 f
  7. " S  p! w: J( \5 h+ {# S
  8.     /* USER CODE BEGIN 3 */0 i; b+ a7 s7 ~2 T
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);' D  y: ]& k6 G
  10.   }
    % a0 M1 d& A. p& a9 ^1 C: b
  11.   /* USER CODE END 3 */
    6 F- Z9 Z3 j& `: @
  12. }
复制代码
, l# n, v( V1 w" {. j8 ^, z. {
在app_entry.c中添加初始化 APPD_Init()。
' J0 e) v) P' l' |+ x! p2 Q
  1. void MX_APPE_Init( void )  z% l5 \3 m3 B  u  a, ^, n
  2. {
    , p. B1 \* a" F% Y: s% P
  3.   System_Init( );       /**< System initialization */
    ) x0 m$ X0 l  h9 Z

  4. 1 R2 K+ p/ L, R% c' g

  5. 6 l5 s" `2 J  g
  6.   SystemPower_Config(); /**< Configure the system Power Mode */
    3 |0 _5 f: R$ \( [. t; g$ S
  7. $ D! Z. K6 \" [0 e
  8. ( m1 z- m6 H6 r
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
    ) e9 W4 u7 H: y1 L9 n( `3 x. g& E

  10. " x; f( d; z* t7 a$ Q* W" k

  11. + q2 S; r7 i1 ]
  12. /* USER CODE BEGIN APPE_Init_1 */" k2 h; R4 c6 c  D! [$ x
  13.     APPD_Init();
    0 E+ z7 l  b$ Z1 \! |1 R1 u6 l
  14. /* USER CODE END APPE_Init_1 */
    6 T# _$ N1 l+ e+ m/ P+ l
  15.   appe_Tl_Init();  /* Initialize all transport layers */5 h. [9 r& k* g) B4 H
  16. ! Z7 k, U# V1 G4 P9 M2 @
  17. * O  v1 k% Y3 @. \4 P. n/ x
  18.   /**0 e3 ]9 J& V8 E1 d- I# @
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )& F( ~; J; f8 {
  20.    * received on the system channel before starting the Stack
    . B" w! c$ {" H3 B7 L
  21.    * This system event is received with APPE_SysUserEvtRx()( q3 H5 c( k+ |, Z  z. n8 B
  22.    */0 j) J) a6 g$ B" S- d) y$ a2 Y
  23. /* USER CODE BEGIN APPE_Init_2 */' P# d' P5 d* w/ W  @) a( }1 z

  24. ! X0 V5 d/ a: g' [

  25. / }. W2 p* r1 ?: L$ ~  D! v' j
  26. /* USER CODE END APPE_Init_2 */7 {6 ^0 g: m+ N/ a7 l1 H
  27.    return;
    + _  i( d: j$ \( K
  28. }
复制代码

1 h0 x% S& r! P! v6 a% [. T4 f结果演示
7 [* ?6 A. l' j" N/ T2 D在app_ble.c中,数组a_AdvData定义了设备名称。+ t7 B) j+ Z1 `3 J# G$ Z) B( E
- f4 C: L) ]+ [8 P7 [% r( N0 ~' }# L' V
微信图片_20231203163757.png
: _$ d" _) Y3 I# v
( r! |$ m4 w" P$ {' v
将设备设置为一般可发现模式,若成功会打印如下参数。
* x0 r0 Y# U" a2 R* g* y9 {; Q0 E; k- ]4 J% N1 P/ R7 X' t
微信图片_20231203163754.png $ }' I! {% L# f( V* }

9 q! Q- U! E8 n( U0 g' H  [串口打印如下所示。9 p7 Z  R, w/ c5 [7 \1 T5 m
0 R2 I) I9 X  i+ y
微信图片_20231203163750.png
& E( ~: b, ^+ |/ F+ _2 S转载自:记帖& D6 z9 g2 o9 s) X3 t
如有侵权请联系删除
, q! N) b) G+ b1 ?0 G# {. ?8 a. D* R# V6 r* \8 l' \2 A

1 h0 J; @; J% \  ]0 y# _7 o
, z2 ?3 ^- W2 d' T# b
收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

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