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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述
; a# p) g7 ]* ?+ Q在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
9 x& s/ R8 m3 Q, M$ z! m6 y2 H
! U& ~3 b2 ^* X; K
微信图片_20231203164005.png / _8 E% @8 Q7 N# |

$ @6 ~  |6 Q& E' X' A3 |选择芯片型号 7 X3 i6 y, ~1 A& b# o$ p1 S

! j( ?1 v+ F. x: j5 f 微信图片_20231203164001.png
% S+ a% y: I  A; f9 x" q
* k2 A+ j$ G5 B6 d; b6 b
配置时钟源
: o. W$ d7 b* C% l! g3 Z! f# [% SHSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:. |& v3 h: g5 o7 O3 \2 T
0 j. Z; o& `( n$ [
微信图片_20231203163958.png : {' S- d$ T2 e/ b

( ~8 h, `& w! K* y1 r/ {1 R% H配置时钟树
3 p" V" t" h9 v3 Q, w0 _8 [' E( C
" c# |8 [' s+ J% m, t4 ^
微信图片_20231203163955.png
% z% E& e: L  i0 _
5 f0 o2 v( s) m9 Q
RTC时钟配置 # u: W' M7 x2 `7 Z9 T
) p5 P. D7 i* D# g
微信图片_20231203163951.png ! i3 W/ t5 ^* W; Q! C" F/ w
! a+ c( E: |  X$ G8 ?8 ]. z7 g. [# J3 o
RFWKP时钟配置
" _" D6 n2 c2 k+ d
  F: V. N2 }  M2 {2 g6 j% [
微信图片_20231203163948.png $ `# P9 r' Z' {4 p0 U

# @* M1 q  {+ ~5 a
查看开启STM32_WPAN条件
! r6 M: l# O  h# C, z' ^' G4 i可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。* M4 z! Q2 L7 L: R3 u, e

* z8 O2 ~+ H+ v" Q! y2 p 微信图片_20231203163945.png 0 B% G9 o4 M: q8 I8 Y, J
, l0 j" P; ~' Y5 c/ k
配置HSEM / I% c' [5 ]/ W9 O
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。: g3 V2 M0 k3 a- b9 }
开启HSEM如下。5 c& {8 K0 w/ ^+ u

: i7 k' G) o/ K2 u' ~; N* l 微信图片_20231203163942.png
* V2 N# y/ h+ g+ |, d
, ~' l2 H5 g: w* Q! \
配置IPCC 7 D% F& h# O: {! H3 o
通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。
/ w2 B1 J; y" `* g5 Y* E$ f开启如下所示。. y9 s1 t" |: c* \; F
. F8 W' S( ?6 O- m6 ^
微信图片_20231203163939.png
- X0 {9 n# ~( W! h: r. b% a7 P  U7 N4 i9 Z5 G& g! k( \2 x$ Z
配置RTC . ?+ U& q/ h$ x3 y) Z

8 d" e' m5 Y3 q 微信图片_20231203163936.png
) x' @: {: F$ k) p
- C6 T3 v" e  a0 }: _8 M
启动RF
( s$ `' P7 _2 Z& W

3 l0 E9 x, |- `* T6 U7 K' i) P) { 微信图片_20231203163932.png
. ?( x/ B2 v: ?' I$ a
6 A( f# Z& x8 w
开启蓝牙
, b, }4 i0 R/ r& y
7 x, ~+ ^# |4 h" k 微信图片_20231203163929.png . a6 D% o# `& V+ C, E; N

+ Y3 K0 c& K" _# L开启串口调试
+ O9 s0 f# \2 g! F" Z  {1 {/ M; [
CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。$ D% k; l. H* ]' q: C/ V6 B" |
( {$ d! v( M  f6 n( E) W
微信图片_20231203163910.png 5 F. O3 F3 Q: V! k1 b) L
+ e7 C! E7 D; i4 _
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。# J  I1 N' A% y$ v. b2 P& @! D. v

& F# z+ y; {' r+ H: Q; W) V4 n/ `
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。5 [- N1 h# e8 ~; _9 A; y. z

$ N& q1 W% T  ~
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。
- c) g% z: _' N. c% ?* J$ T( t' I2 t# E; Q( o
微信图片_20231203163906.png " P2 p; r. V$ \. j* v8 ^
# h- x1 I/ P) O6 j
串口配置如下。
# `0 A/ n) w& [: `" `. R& x2 h" t$ p) @
2 E  V# i* R% f2 T 微信图片_20231203163900.png
6 P( I! \& E. J( K# \2 z9 c' }+ X- Y
5 d: V# V! V1 x2 v4 Z
开启CFG_HW_USART1_ENABLED。+ U4 A; k  k% P

" M: r5 t2 H, b* {  P4 ~) {
微信图片_20231203163856.png
$ F2 R8 X' a7 k& k/ s8 K
6 a; |% l1 M, l: L关闭MX_USART1_UART_Init函数的生成。6 `! L+ P" \# r  h

$ d6 s( K6 e; ]! E% H/ O: H) S" y0 H
微信图片_20231203163851.png " ^" u+ l: |& X+ ]  d4 d

  n  a" \, A- I: Q7 X* oCFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。+ |3 H% M4 o/ T- h7 d

4 G/ E  C+ s) v$ j: g当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
- g' D) ~4 S: S3 I1 z( B7 u8 @* ]; Z$ f7 D& {& z- x
微信图片_20231203163846.png
  i" r' W' k: E  M5 T9 r

/ h+ Y/ n, ]1 O/ V  r, P/ S1 B" f; k开启DMA。+ f6 e! b  R' p7 L% P
- {% o. ~( w( {% r
微信图片_20231203163842.png
' s! p1 j+ f% [9 o7 N

( c" c, F- s, I/ z! j8 x5 ~开启中断。) L; E9 N- z7 O. P( z# h
3 Z1 J# @5 {- }+ o
微信图片_20231203163839.png   z6 T" u! k# v: S/ G
5 l- m$ X$ c2 G
启用串口1的tx的DMA。. |4 ?3 e3 N3 Y
% ^- h6 p( v! D  A! J2 G# T
微信图片_20231203163836.png
4 D& r( M( }* i4 p

( R: p: f1 p. a若无法开启可以重新打开BLE配置。0 U7 }; c, n, v' \% A" x& R2 c
; O" T# b0 u) S: d. Z
微信图片_20231203163833.png
3 x/ n- u5 q: I" c/ @
4 u( z* r! k# a& `9 c
启动串口1调试跟踪。! X% d' D' V$ @* r2 B, ?& ^$ K% K

# c! \0 X6 Z! q3 G# N 微信图片_20231203163830.png
1 {( Y9 x9 I- H& ]; C4 t6 @" l

$ I* z9 O' V  M! P, R7 K启用应用程序中的跟踪 。2 l6 \3 u7 x1 D. L$ {
) K' [) ]0 M; Z3 b  l( v0 B( I
微信图片_20231203163826.png 0 G  l2 v1 }; Q; @/ |- q2 O' @
$ N1 S+ D6 {' z+ ]
配置蓝牙参数
" G* Z3 r% w5 F3 |配置为自定义模板。
. M  Q" l4 p' d  I5 P& v
4 v% P; W9 q2 D) j0 Z, j 微信图片_20231203163822.png " P3 @$ T2 k& k* r4 _" t* `% ]6 ]

0 Y1 @+ r) Z' ?8 I/ U$ }+ V, d命名设备名: b' n  D, n* P: j! p
8 ?; Z9 K! L) |6 a
微信图片_20231203163818.png 3 N* s, s3 U& s# S. p+ P# o6 Q

' o9 @0 r5 K1 r5 t6 S3 `2 {配置BLE GATT4 f8 x) s+ n! h) e

" T/ n; a% D, j8 C 微信图片_20231203163815.png
$ ?, R' ~+ ^0 e% r# K& b( Y
9 S) q' n/ [% t( u6 Q7 a
配置SVC
# S5 i" U+ ^) _2 t7 j3 o5 p
5 e- q# |5 u9 Y3 D9 t: N+ t
微信图片_20231203163811.png ) R0 Q: Z  s* l0 @) `

& }3 L3 {9 Y! v0 v; |8 R# V; b8 }设置工程信息
8 c' h6 r* w1 n* W
/ |& ^0 A3 E; [4 X& m 微信图片_20231203163808.png   B/ \( ^+ x" b
% L; N# C" B# a+ a
工程文件设置 ) [, c; B; [: y# K* Y. N+ g) `
9 \& r5 ?1 D0 q: V1 z
微信图片_20231203163805.png : V' _3 [( H; U4 \8 m  Y

1 y( `; E+ B4 I6 VKeil工程配置
( z' H1 a, u6 w$ Q% g# J, G5 H7 p+ q: ^" x8 u# `) t
微信图片_20231203163802.png
/ F2 _: ?; h* F: W8 |/ d
" C) i- A# ^3 @8 _! P8 c
代码配置
+ p2 _, G7 ^; w. v8 A  S/ d) I
在main.c中添加如下头文件。# \9 A. `3 d3 E, X4 ?
  1. /* USER CODE BEGIN Includes */
    . @3 b+ r( M' R* g
  2. #include "stm32_seq.h"+ n# k9 e4 V8 ]0 K1 `9 k7 o& A
  3. /* USER CODE END Includes */
复制代码
5 N  Q* G- p4 V0 X- L
UTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
7 X4 C9 o' ^$ F5 n
  1.   /* USER CODE BEGIN WHILE */+ W+ g7 r2 K8 U3 P. H
  2.   while (1)
    , I( J# c4 T; s6 o& g
  3.   {( K: b) h0 ]0 M
  4.     /* USER CODE END WHILE *// s. g* p3 [' j1 [! f0 m
  5.     MX_APPE_Process();
    ( w3 P3 x/ H- B+ _
  6. 6 X" q/ _1 G" ~- s# g6 g
  7. 1 {% o; T) F; `9 N! @
  8.     /* USER CODE BEGIN 3 */$ [2 k  c, P& l, Y; Q
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);" T, }* z1 O7 ^/ }
  10.   }
    - t# h% R# k( h
  11.   /* USER CODE END 3 */
    3 e) ~- p) @9 s$ a, z# t
  12. }
复制代码
* x* Z2 r% U+ k6 ~: G) S
在app_entry.c中添加初始化 APPD_Init()。2 E" y& J- G+ V+ O' T" d
  1. void MX_APPE_Init( void )8 P1 N5 {' |( v( B9 K
  2. {* ~* j/ |6 u0 _! f( c0 _' @' Y
  3.   System_Init( );       /**< System initialization */+ K( C9 ?3 B2 [1 J! s" I0 g& Q0 }

  4. 6 ]1 p0 `( k' |6 R5 ^: U, U

  5. # f9 \, w$ x* V. J, p& P
  6.   SystemPower_Config(); /**< Configure the system Power Mode */$ u- f  ?: k5 \! Y5 d! M2 M8 ?
  7. 1 ]/ f- F6 O: I9 h- s

  8. " ?: a- y" c. z$ J9 @7 U
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */, y7 l. y  K% T
  10. 3 p$ x- G) e" o: b+ Z% [
  11. # y7 U, c5 x5 Y% y; u7 ]
  12. /* USER CODE BEGIN APPE_Init_1 */
    ) \9 x1 K. i7 [$ N  i5 h
  13.     APPD_Init();
    * J+ n2 z/ D# d& |3 _; ~) e& K
  14. /* USER CODE END APPE_Init_1 */5 D$ E6 F( Z& f' c9 N
  15.   appe_Tl_Init();  /* Initialize all transport layers */
    $ k) I  T, Q7 |
  16. / u2 ?: Q: Z  c1 p) I

  17. - I# r2 M* y; c1 M; g5 A2 O% E$ x
  18.   /**
    1 d. u. p& U, {& t3 ?8 X
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready )
    4 m) P! s7 a1 e9 s9 h2 [% g
  20.    * received on the system channel before starting the Stack9 W0 F( P; p6 a7 u
  21.    * This system event is received with APPE_SysUserEvtRx()0 ~# v. Y7 [" S, [
  22.    */+ P# v9 c' P( E  d( j2 z( {( I  N
  23. /* USER CODE BEGIN APPE_Init_2 */
    % h" u/ i; X2 ?* M

  24. / R" f( D- ]: W" S9 L

  25. " i5 w' a$ i7 R# p1 Y
  26. /* USER CODE END APPE_Init_2 */; U% g( Q  f/ w
  27.    return;7 ~. J+ \) _' K' _3 r# T
  28. }
复制代码
& n# k4 f( f% v; S
结果演示 3 r+ R5 V- v6 `. ^0 @' u. H, n7 `; }
在app_ble.c中,数组a_AdvData定义了设备名称。* m! [) I# O, D6 |$ ^
( Y6 q# v7 B( \  o
微信图片_20231203163757.png
& W8 P4 Z2 X9 d  V* ~. f) a
  y" Q# f7 X. A% S. V3 I6 Y* v1 _
将设备设置为一般可发现模式,若成功会打印如下参数。4 R8 @3 Z/ l: d

9 e2 B$ ~3 t( r" O5 R, t' N' d) \ 微信图片_20231203163754.png
5 J; w$ T9 @0 t" P( A

6 q3 v2 G. v2 G2 k4 P2 a串口打印如下所示。& L9 S5 B: `1 J8 `' y) s
, |! b8 o9 _+ A0 ^
微信图片_20231203163750.png
8 i8 _% ?$ p! C9 Z, x) d: v% B转载自:记帖
3 }  u- H3 i  C. v6 D) u- A如有侵权请联系删除& {1 n! I2 L; {- i( D

5 s, p+ b3 P) Q" |+ y: x# z
* y, T0 C5 r3 b" S* O+ |: c
; z% @6 S. K/ T6 b; u( W
收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

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