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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述
# q1 y6 V9 f& P# R( c: a5 }9 g+ M1 v在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。) J/ c* ]0 b) A
, t8 O: z3 }# {0 U+ e3 L
微信图片_20231203164005.png , y& K4 z+ t. \! L, ]2 F

+ n: @+ ^  r; a  N: o" _选择芯片型号 1 U2 q$ Z* C  ?+ q

) C, R! g9 X: z& a  a/ H5 o 微信图片_20231203164001.png
+ N, h( n: t, x& R* |

" W* M9 h! C) R配置时钟源 6 F" Z9 J; X! P& w8 |  T% D% y
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:1 r# Y% Y' v& e$ Z% w. j, n
% ^% ]- V! z2 R; F
微信图片_20231203163958.png
9 H6 O, X. M  j
* t1 {5 t7 H7 E2 i* L7 W
配置时钟树 8 b+ E& Q0 I3 ^: b- Z
  o4 [! M3 s9 R2 B
微信图片_20231203163955.png * `( U( {7 `& E' P& e( v/ H

! @8 s4 @" z7 E0 f3 c" C; [RTC时钟配置 # g6 H) h" ]) M2 h0 g0 ?8 o
. _5 Q0 J& t/ Z. z  ~2 ^
微信图片_20231203163951.png
! |$ M: Q8 P+ h6 ?+ {
2 F( y/ h/ E2 c* @  W; D- @( \RFWKP时钟配置
* m  p$ P- L. G5 Q7 t' E

# Y- n- M% y3 h1 e. [! m
微信图片_20231203163948.png
  v- e6 M; [/ M$ ]# i% ?
/ h0 q+ t" S7 ~/ t4 _' J% ]; j
查看开启STM32_WPAN条件
+ O* p( m- x; ~' z1 r: p可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。5 u" N) ?! w( M( D* O# z4 E* \7 y+ S
# L# c# _  j  J( {8 Q
微信图片_20231203163945.png ) }0 J4 d6 B( |0 U- C% y
" ]& u4 q( n& Q% I% T9 [7 L
配置HSEM
) c2 u, ^" A4 w  F! b) [, A  r) Q硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。
( T5 g' V4 p+ ?, W5 M7 T2 W% j开启HSEM如下。( h! g, @) ?! ~" b- m9 O! X; o" U
1 t* k, z2 V# r" `
微信图片_20231203163942.png
; w$ N1 W# X& Z/ F: ^  W  {& }

% f: }. p3 C# P1 Y' z& G9 `/ o配置IPCC + y7 a; b  Y$ }1 C- @/ o. D, n
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。% q3 R2 ]0 s* A* i' q( }
开启如下所示。: n8 N  S; B) o, l- y
9 I3 q# @# [& O
微信图片_20231203163939.png $ p7 h1 ?' r8 j" |

. s: F; Z- j" a配置RTC
$ G; r9 U1 R( w+ A( l. |4 i7 G* g' J+ h- |0 o& X
微信图片_20231203163936.png
( k9 h( s8 z: u8 E
8 c, o% R' ]6 ]3 k& O* z6 c
启动RF

6 n# N* D6 l0 }; R" c8 r8 d( x" K9 L+ b( k2 o/ W0 e
微信图片_20231203163932.png / t9 U, o3 q4 ^) i( |# Q6 e1 Z! v

9 o0 y+ w2 }" ?  |* u4 X5 y开启蓝牙
9 C5 o% z$ g% `- g8 ?6 X* J/ @* R" N* C4 Q9 U2 `- P; I
微信图片_20231203163929.png 6 V) W' A& l& O1 B! A$ p( ~4 G/ y
7 y2 ~. L1 c; Q; ^" E
开启串口调试

% }( U8 {! T& q5 ~CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。
% @! d$ o7 |0 m: H) z
, W' ?; \+ v0 y+ ~( w, h
微信图片_20231203163910.png 0 s% ~" u  ?! _
+ A- e) h# G9 U' |& }3 A# ?& M
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。
( f# V0 C; k* |' K
& W% h  Y- H1 ~% w# s/ {( {
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。
* J. d) t) e. E! I. H$ \4 t
7 S: z6 \. @( A% G
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。7 s& |* b3 K6 r  k. `

; z* j; N- E( |6 l" ]
微信图片_20231203163906.png
9 N' L! z4 u3 A7 h+ Q; u2 D
; K" ^! S( D" d0 l1 T" O: X  U( d
串口配置如下。
: P' N% e$ x& y  S2 j5 V6 P& N3 i1 Q" e/ }
微信图片_20231203163900.png
% J( s) s4 R" Y3 ^8 O

& b  x" g0 e: m- S1 g开启CFG_HW_USART1_ENABLED。
) {( g- n6 h) k6 w# [2 E+ S  k+ P
1 Q* k( l% y4 X  x
微信图片_20231203163856.png
4 ?9 ~: R% k# P3 k  L$ f9 ]) z! Z8 P$ }# M4 H
关闭MX_USART1_UART_Init函数的生成。
, b" G& U% T! z7 a' w+ l, m
. ]6 o7 f* H+ g: T4 h
微信图片_20231203163851.png 9 B4 T2 O! x6 ^$ V1 ^
" [* U& F6 z- S
CFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
8 v! c9 o+ L/ R& a: E

+ ^0 l; F7 v* A& {1 K9 F) m# H当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。( r. u. E6 q; s3 y0 @3 w

0 P4 r* L( H8 Q" h4 g- J 微信图片_20231203163846.png
1 y2 q( \! \( \& S$ \. K* q' G. h
2 P  C  t: R. \) L, c  ~6 ]* B
开启DMA。7 _2 z1 C" V1 ~" w3 B9 u( {4 |
  R  }8 s) T$ w
微信图片_20231203163842.png ' p% G8 r! s, u6 N0 b

8 F  z+ w: v+ A: z0 S: Q开启中断。
3 N3 |9 ]8 h2 i
: c. D0 I6 G7 {  t 微信图片_20231203163839.png
: |* z( l$ ~) ]" B% j3 n

& B2 [6 N6 m" [7 O, h2 i2 R9 a启用串口1的tx的DMA。! l  j3 N# J1 E0 J

$ q6 j8 T7 z! ]% B( U: e; O
微信图片_20231203163836.png . a" y% u- p7 l* D

. S, R  w0 R- t& d/ A% M若无法开启可以重新打开BLE配置。3 F  ?5 K- m1 L: p* n) Q. P
  A$ D2 I! J2 A. T, V
微信图片_20231203163833.png 1 n8 A9 I8 F( u  Q0 z" B

* H) A+ j9 }, e8 j3 ~, H启动串口1调试跟踪。! _' U/ N7 L! Y7 E, E* o. L

) X, @( F0 r( S 微信图片_20231203163830.png ; a8 d, G" h. q1 x. x; m

3 f6 w% G2 w7 W0 e' h1 n启用应用程序中的跟踪 。
4 Z8 @+ X' ]/ \! R' V1 @
2 e0 _; Y6 \* B- q1 C/ A 微信图片_20231203163826.png 0 t! E5 g8 w! g6 R$ h4 ~
! f$ q. _0 x8 W7 A
配置蓝牙参数 - D$ f5 }( v$ d$ h: |
配置为自定义模板。
  H) D# i3 Q1 f! z; h
2 v2 n- Q9 `, G0 E, `% l 微信图片_20231203163822.png $ S+ S# t5 r3 Q4 F. A( [
' |7 D( x/ F/ X8 y* O
命名设备名
0 _  J9 ~- j9 K  b  |) [4 [1 R- |  i0 F" c: S7 B2 o
微信图片_20231203163818.png . j+ e+ Z0 a* \- X

" ?; i: `* d7 Q0 c( Q4 o配置BLE GATT0 s6 X: ^! |# h! g$ r  M" j9 F

, M' M- g) F6 F: S# G 微信图片_20231203163815.png ; _0 o; H1 C) v. `9 C" K0 o+ ?2 ]* B3 g0 d
" K. i. i3 j; m
配置SVC* w" v6 k, g6 _" K3 z

( Q$ z' j0 C8 C1 q) `' w
微信图片_20231203163811.png
* m9 T5 {; {8 d' F1 r% u' o
  Q4 @9 t" d: P5 @
设置工程信息 4 d6 u% z$ y! L
4 |$ S5 Y4 B+ c2 m0 p
微信图片_20231203163808.png # T" @+ E, W  a5 h. [) _2 c2 r

% |4 w2 U- g7 D: ], d' N工程文件设置 - g( s' @% O( a5 ]
7 f1 R$ W3 |8 z# r2 X
微信图片_20231203163805.png
$ w3 l. p+ O  N& F0 y# \1 h0 T
0 }- L: l4 N1 _' J( T* E" }2 q4 M6 G3 @) o
Keil工程配置   M( X3 h, n/ N

4 f: d% R& M' E) a7 U9 ], X
微信图片_20231203163802.png 4 T$ U9 z* Y2 p2 p* w

- N* h0 C3 R" X3 J% l) [代码配置

5 C/ g1 v& C  i* k! |在main.c中添加如下头文件。! y5 Z* R5 c; V& N6 T
  1. /* USER CODE BEGIN Includes */& o; R) C0 C6 s5 I$ g, e( L
  2. #include "stm32_seq.h"2 S+ W4 K; m5 \. i( @
  3. /* USER CODE END Includes */
复制代码

4 @* v& Q7 |; C( ]) a8 D! e* |0 B3 UUTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
- a6 B6 X: K6 i1 [# `4 _
  1.   /* USER CODE BEGIN WHILE */+ ]8 S0 W7 i: ]5 i0 I
  2.   while (1)* u( j# C& w7 B9 Q# p! n; q
  3.   {
    6 y9 E( R- u4 u! J& ]& ^) ?1 H
  4.     /* USER CODE END WHILE */: h- W# Z1 W: ?. z: y4 v2 ?3 n" m
  5.     MX_APPE_Process();4 o6 O% O4 k, n2 H: K
  6. ' O" s  ]1 g1 M: K- N4 S  h

  7. + P* x" y4 d' u. \- A. ]
  8.     /* USER CODE BEGIN 3 */# W) P$ l  \6 W# _9 e) k' x
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);
    & U/ n  ]) ?, ~5 M& B0 Q, c, \
  10.   }5 Q4 a: O. C; O8 h% n: o. G
  11.   /* USER CODE END 3 */6 ^% G+ C3 z+ X0 S6 x! k
  12. }
复制代码

" }# @+ G$ [( T9 o+ u在app_entry.c中添加初始化 APPD_Init()。3 }& h( ?0 ^: ~  b
  1. void MX_APPE_Init( void )' z8 N# U0 j& e/ }
  2. {8 b8 X9 Z1 |  E& z5 ?( u5 A
  3.   System_Init( );       /**< System initialization */! E! E0 C4 x0 o2 {
  4. : I. T$ `# ^! O4 A- q9 F
  5. * u, }$ k3 P8 E" t" c
  6.   SystemPower_Config(); /**< Configure the system Power Mode */9 j- a: t6 V3 u* i

  7. 9 z7 Z6 `3 o; z8 Z. L8 S

  8. 2 J8 M5 N' h- d5 j2 l# S9 q& S
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */: [' v7 e& S1 t5 O9 I7 m* @
  10. 8 f, A4 C* K, y6 J, H; I' B6 M

  11. ) S& ]3 D9 R/ z$ }' i3 H
  12. /* USER CODE BEGIN APPE_Init_1 */0 c) Y2 `/ s  f# m8 U* D3 }
  13.     APPD_Init();
      c4 |0 ^4 h/ V/ l  {" B
  14. /* USER CODE END APPE_Init_1 */
    - @' X# r* K) N6 F# |: N
  15.   appe_Tl_Init();  /* Initialize all transport layers */
    9 u7 D9 z+ x7 r
  16. " Y* }( p4 C1 V" c9 q* X4 }

  17. 1 k9 f) \( d) n
  18.   /**$ t6 s9 Y5 s8 F, o  O
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )0 o: h; a6 q, i8 n
  20.    * received on the system channel before starting the Stack
    # D' [7 [' ]; x0 I- O
  21.    * This system event is received with APPE_SysUserEvtRx()
    0 h# c' x" l8 ^" W4 x8 Z+ D
  22.    */
    7 g# c. E; r# J, K4 q$ Y3 E: R
  23. /* USER CODE BEGIN APPE_Init_2 */* E8 Y' x$ c* G7 ]9 r

  24. $ R: x8 h4 R* ~& b! D+ h) c
  25. ; Q+ j$ N$ G: l- y  Q& r
  26. /* USER CODE END APPE_Init_2 */
    , K4 Y1 }$ X& g4 H0 n+ U1 {9 y, ~) U7 W
  27.    return;
    9 ~5 |4 G$ y, N+ L1 A. o  A
  28. }
复制代码

4 k$ w  H1 e# d$ c2 A结果演示
$ v% Y% l( l9 K在app_ble.c中,数组a_AdvData定义了设备名称。. h" M" C2 I, G6 {
3 p& S- ?2 l9 l8 p
微信图片_20231203163757.png
, f" h  z+ Y0 I+ b: N
4 A) {) f: }* Y- {- \9 h
将设备设置为一般可发现模式,若成功会打印如下参数。
: F/ Y$ s6 b) s6 O; j3 c  G" @' R& X. M$ R; Q# N5 ~! }+ E( z. y3 |/ N  C
微信图片_20231203163754.png
; U! H! ~& D: U# F

. l( C* E7 S- Z# u$ K串口打印如下所示。
7 n0 s* g+ x3 t% y# f4 ]4 g; v* l3 R
微信图片_20231203163750.png + K7 |4 H& u3 ~0 H( X6 p
转载自:记帖
1 e$ E6 u- V" [" p如有侵权请联系删除1 r8 ?2 u9 p' m4 b: U6 o
- {* [( `/ @0 z4 d: M
# u+ N0 W! G6 r/ ]0 s8 n

: H- ?0 ?2 s+ t5 A; V
赞 收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版