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

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

[复制链接]
攻城狮Melo 发布时间:2023-12-3 16:40
套件概述
8 X# r. D. O/ N6 D) P' e在STM32WB55系列微控制器上进行开发时,实时监控应用程序的运行情况和调试潜在问题是至关重要的。使用串口(USART/UART)进行Debug信息打印是一种简便、高效的方法。下面是如何在STM32WB55上配置串口来打印调试信息的概述。
) q, g9 ]* i/ x% @* l2 H) b0 d" R6 }% q+ ?
微信图片_20231203164005.png 9 X" j" H. g+ m, a! N  p4 ]

0 x6 B0 [* W- ^3 {0 _5 R* p$ g选择芯片型号
1 ?. G: v5 x7 X# t. x2 v5 ~8 v' O' L' M6 U9 N5 r6 R* A! R+ o
微信图片_20231203164001.png
  l* G0 D, f- W4 `) K* T
8 d, N- s+ O! y& ^# F
配置时钟源 + ^4 p  U: u, R3 B
HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用外置的时钟源,故都选择Crystal/Ceramic Resonator选项,如下所示:
% z4 q7 }. B1 o  }
: z/ m  w, \+ }. [( [  ^* L 微信图片_20231203163958.png % G. w* K: [4 Y, I0 ~: F, u1 w

5 F" i+ j; D5 g) w8 i! t- J' O配置时钟树 ' \4 |7 h, s8 ?( ^' m: I9 c

/ r# F3 {$ _" m) a9 r+ b
微信图片_20231203163955.png 0 Z7 p2 ]& B& n* C4 l# K' T) |8 c

6 w9 ^9 e0 |" |RTC时钟配置 & E  A( @, A( Q% p* w4 E: W2 ^

3 G4 Q2 O1 G& @" D
微信图片_20231203163951.png ! i) J3 m. s& Y' C& L& D
; q$ F* U) J! q5 A
RFWKP时钟配置

/ [+ F3 s* _# e+ O$ L1 s: K) j! N
; b5 R; H8 F* U- @
微信图片_20231203163948.png
$ {: N2 w$ y0 y$ O) a/ t5 A2 e) o$ j, O! P8 o) b. n* W, o4 o* _0 w
查看开启STM32_WPAN条件
9 n+ g9 w% g! X" p; q) k可以看到,需要开启RF、RTC、RCC、IPCC、HSEM。( A- W- ]4 E  y7 z6 I

5 H9 |$ D: X8 W  f 微信图片_20231203163945.png 2 k! F) F- G' l2 N8 t5 E! n
  A' U3 h5 o! M' h) f- q* Q" P0 E
配置HSEM 3 C( ~: F9 l' j
硬件信号量(HSEM)模块用于管理多个进程之间共享的访问权限和资源同步。. B7 k) T% ]& T+ v
开启HSEM如下。
! t, k/ |* U/ h2 l  P9 Y
$ @3 y0 a4 g3 |0 H8 \ 微信图片_20231203163942.png 4 E+ c4 ]& O$ k+ ~" [+ C7 F

) k0 e. t2 m- H- |+ n8 u配置IPCC
5 v/ q* l% r/ A' Y- X通信控制器(IPCC)模块的主要用于cpu之间的信号消息交换。0 A, g2 a! f5 N- J2 Q- p
开启如下所示。- H) E2 c4 F8 B

4 d1 V7 K( q9 [* u5 l
微信图片_20231203163939.png
5 q+ Z0 N+ D4 r/ ?
8 o6 @4 i" `- c" K3 i' d配置RTC
* W# p9 w# R( b$ f
7 M& z- h' _* h/ H& G1 D  c 微信图片_20231203163936.png
, [9 w2 Z$ K- `/ P5 w7 `$ K4 u
) {& A0 [# q% p& Q, d$ _
启动RF

6 D3 T" W$ A! \  w, q7 v! z' V2 Y  n) G
微信图片_20231203163932.png - B& D  y/ y' p$ f

. {  }1 v7 |$ a开启蓝牙
8 l9 ?7 C9 i" ?" C; ~, |6 a9 M1 Y' i$ I( j- W4 J
微信图片_20231203163929.png # E; c; U( p' T8 A  x
- e8 P& J' o# l5 q# _) P( b
开启串口调试
9 T3 H1 G1 d" g  X; I
CFG_HW_USART1_ENABLED允许开发者选择是否使用USART1作为跟踪输出的通道,并且这个配置只在特定的设置下可用。这样的配置通常用于嵌入式系统的调试,使得开发者可以实时查看设备的状态和输出信息。
0 B* o+ g/ q5 O6 v- z1 z7 g( l$ `
6 E1 v1 r5 Q  G- Q3 N
微信图片_20231203163910.png * u5 F* g- A+ o( _; o+ {6 |

4 Y& O$ F$ H2 w( P) n7 }
CFG_HW_USART1_ENABLED这是一个配置标志,当设置为启用时,USART1会被用作输出跟踪的通道。当禁用时,USART1不会用于这个目的。7 G  ]+ |3 o! Z% j" M' J+ Q9 N

& G! G' r( y) [" O
仅当USART1由CubeMX用户界面配置时,此特定的硬件配置才可用:这意味着只有在使用ST的CubeMX工具配置USART1时,才可以使用CFG_HW_USART1_ENABLED这一特定的配置选项。: U$ A0 x' ~2 L4 e- ^. W+ H# C0 p

4 _6 F, O( x; l8 v
查看原理图可以的是PA9和PA10与CH340链接在一起,且为串口打印端口。  ~" r8 j% J5 L2 {( X6 q4 `( z, {
' H; ~6 g; R3 z% F" t) f
微信图片_20231203163906.png & a! i. V! y3 t

: b3 M  b  p! h) n6 U
串口配置如下。
; u4 j4 u& b, W) k, W2 }
; G9 q- I# A# _$ [  A 微信图片_20231203163900.png & N9 X7 q* n4 m1 n3 a) R* U& m

* I. \3 x: W" \0 a% H9 O开启CFG_HW_USART1_ENABLED。; c. O# M, v+ h  y; }  a. r

" D5 ^& Q6 y$ j2 V0 O; T& d4 c8 Y  E
微信图片_20231203163856.png - I% {. M: c9 G/ ~, _

% I& Q* N) n. w9 a2 `* L5 [, u6 J关闭MX_USART1_UART_Init函数的生成。% S8 w4 a7 s, i( o) w
: _/ V0 r/ \( `+ N3 o6 e$ V
微信图片_20231203163851.png 5 l/ [; P  I) C( T. K

; D' ^) }0 A# @3 SCFG_HW_USART1_DMA_TX_SUPPORTED允许开发者启用USART1的DMA发送功能。启用此功能可以提高USART1发送数据时的效率,但在配置上可能需要更多的步骤和注意事项。
* g# ?# v! a: `3 j# }

$ D' R* i6 j7 D当其被设置为启用时,USART1将使用DMA来进行数据发送(TX)。DMA允许数据从内存直接发送到外设(在这种情况下是USART1),而不需要CPU的干预,从而提高效率和数据传输速度。
3 ~7 D# q/ ]5 U6 L$ E3 p, d# C7 J/ @. J, f! d; ^. V
微信图片_20231203163846.png ) `! ]1 S9 I; s0 X

7 N3 }) V$ R. S6 L开启DMA。
+ s! V+ ~/ V+ k5 E+ O1 y5 s& p8 n1 t8 O! H) m
微信图片_20231203163842.png
& [# Z: c. l+ R
: d6 U. W4 `# O3 _- K) ^1 b
开启中断。
- k- h3 m+ L$ C+ y$ x. X/ `& b( o; e
微信图片_20231203163839.png . m8 @  o4 g  q

1 }4 K- ?6 k# q, E2 T! M& P  A启用串口1的tx的DMA。/ c, X& ~: F2 v' a) r( c
: T- ^" H, O  A% h" H& V5 k" Y; `) q, H
微信图片_20231203163836.png " R! ~) Y4 \5 x  w

: I& N, x. f9 p/ w1 n3 v若无法开启可以重新打开BLE配置。3 C, \" c1 F; r) e

- C; ]; m( E9 r: y: j* P( ]# x- B 微信图片_20231203163833.png # p* p! `$ q/ O, C/ r' F: I7 a: T$ F; n

0 |% M0 T! `$ v; w启动串口1调试跟踪。2 _) A" [, r( Y5 [0 m
4 p0 G5 V  F% l( H7 ~" d
微信图片_20231203163830.png ! t# J; }+ J1 K0 l; c; `
1 G; `+ r& E0 Y9 \2 t7 h& `4 J# @
启用应用程序中的跟踪 。
2 T  E" s9 O) y3 o- i+ P# }( b4 ?% f$ ]: J
微信图片_20231203163826.png
% K3 @- D" ]- i7 j. u# r+ q' R4 e

$ q) H2 U5 H/ }配置蓝牙参数 9 B" c+ \  Y0 O2 O. ^
配置为自定义模板。4 z) s. ?/ m* I
/ s* M% r* q& X: J! \' Z5 U* e. _
微信图片_20231203163822.png
7 W, Z, ?* g- Y4 o
4 T! M( z- b& `
命名设备名
0 F. s  @2 `& _. O* P
% h' v- y) v4 F 微信图片_20231203163818.png 5 c( ]+ T. e/ W+ w
" j( B$ I# O* q) ~9 G/ A/ u( W
配置BLE GATT4 E1 P, K( ~- e' }; Q) ?% u

4 Y) Q5 a: S0 @& I9 { 微信图片_20231203163815.png 6 ?4 W- g- V* d+ Z
4 _; g5 G  B8 _+ _. u
配置SVC
) A6 r; s' X5 E: c* q/ b+ X; F4 f% @& d4 [
微信图片_20231203163811.png
, k2 H: U6 M( g. e6 X9 p+ h
% {( l$ ^9 B& S# e
设置工程信息
. U* W3 j- j( {1 S8 s9 U
& P1 X, `: z' q2 t5 H 微信图片_20231203163808.png % b. Q0 v; L- V1 ?4 ?, D
* Y  D5 k+ u- ~, _2 k, h' E
工程文件设置 - R3 o' @  v2 H, G9 [  C9 X

5 V: P& N$ [4 s& f+ N# n/ P3 L# T 微信图片_20231203163805.png # s# S& C. |+ I# ~4 G
/ `3 G& U4 ?2 B. F4 ^
Keil工程配置 4 N' ]8 z; m4 j3 v! Y- M4 o6 C
, V( N* k4 Z4 o7 Q3 o" g7 p1 Q
微信图片_20231203163802.png
1 `- B- r% D* L# s
, L- }2 n- j4 _4 [  `
代码配置
. p: X1 Q6 W/ V( n0 u% ]" n# k
在main.c中添加如下头文件。
8 ]/ J% C4 @$ w5 ?; O1 ^. ~
  1. /* USER CODE BEGIN Includes */
    ( U$ f7 e3 ?% J, a2 ~% G6 {
  2. #include "stm32_seq.h"
    3 z4 g- J+ C! }! Y" u
  3. /* USER CODE END Includes */
复制代码

- r5 |' x6 b6 m" yUTIL_SEQ_Run(UTIL_SEQ_DEFAULT)函数应该在应用程序的while循环中,启动任务调度。
: d  F5 j! C% k; R' E
  1.   /* USER CODE BEGIN WHILE */6 Z7 p, H& a/ n- }2 Q3 X
  2.   while (1)) z- v" p# F. C( L7 E1 v1 @
  3.   {
    ; h5 d1 u6 y+ |( W7 i. [/ p. u
  4.     /* USER CODE END WHILE */
    * O; N. e& ~9 _. c
  5.     MX_APPE_Process();- }9 ?: S" P& f: t2 E; ^! ?
  6. 6 i. v5 k- h# G$ O
  7. & ]( X+ a- Z0 t/ ]4 `9 u/ r* m; H
  8.     /* USER CODE BEGIN 3 */# h7 c6 J2 R6 B7 n: r
  9.     UTIL_SEQ_Run(UTIL_SEQ_DEFAULT);
    & J3 J' C, x8 \4 ^: s- n
  10.   }+ r) i# X" I& ~/ Q' t
  11.   /* USER CODE END 3 */. r9 [/ G/ ?' i, H+ l
  12. }
复制代码

4 a+ m5 W& V2 b+ S: I在app_entry.c中添加初始化 APPD_Init()。/ J) k8 A7 f+ I# @$ ^2 Z
  1. void MX_APPE_Init( void )
    + H0 C2 j) x) n' k$ K/ R$ A9 x
  2. {
    6 f% d. e% d0 q
  3.   System_Init( );       /**< System initialization */
    : }2 W, ~. Z4 ]8 e) O& `% {* W
  4. ' Q) C# U# [8 T; I8 g
  5. / Z& M! _0 `: ]  K$ W
  6.   SystemPower_Config(); /**< Configure the system Power Mode */
    ) }* e  c6 Q& R4 S. v2 O( w) }1 Y
  7. $ f/ j; P8 }( \, |1 W' j+ W- [
  8. 9 M& \. [1 @) v. |/ L9 S/ F4 @
  9.   HW_TS_Init(hw_ts_InitMode_Full, &hrtc); /**< Initialize the TimerServer */
    , f2 |* N  W! H0 e

  10. " @+ ^3 o8 g2 Y$ f* B* C% l# c
  11. 6 A3 n. g4 r8 {) J4 \% o5 F# s) r
  12. /* USER CODE BEGIN APPE_Init_1 */5 v8 `* r$ ]8 }2 B. i8 {
  13.     APPD_Init();
    % V- ~# n. I- {; Z. p* f4 w( r9 `
  14. /* USER CODE END APPE_Init_1 */
    % C& y8 b) k: M" y* T
  15.   appe_Tl_Init();  /* Initialize all transport layers */
    - \7 I) g- s! e7 Q" I/ d. W0 S

  16. 1 K% t" G% V1 X

  17. 3 A! I  W$ J% |, Q( Y* n& A
  18.   /**
    0 o- [1 R  ^! ?3 T" ]8 F- k3 K
  19.    * From now, the application is waiting for the ready event ( VS_HCI_C2_Ready ). |: Q, B4 U. A
  20.    * received on the system channel before starting the Stack
    ! m: r. O3 M; h: i% @% Q  {
  21.    * This system event is received with APPE_SysUserEvtRx()
    4 |' y- E/ v. j
  22.    */5 Y# x! l, m& c1 i7 i+ m) e" x2 K5 `4 o: z
  23. /* USER CODE BEGIN APPE_Init_2 */
    * |5 W% {, B1 g! E2 u; P$ y
  24. . ?) F( F5 {& B9 `
  25. , Y' ]' h( U6 W( \. R! _9 Q/ x  g: L
  26. /* USER CODE END APPE_Init_2 */8 F3 a0 j& u5 K
  27.    return;1 n' _; j; S$ X
  28. }
复制代码

) @  M1 m. g; U' D$ Q% o结果演示 ; s/ n4 L+ F5 a# ~* C
在app_ble.c中,数组a_AdvData定义了设备名称。- Q1 Z( q( ^. F/ M' I

( p8 x* m3 _6 Q 微信图片_20231203163757.png 1 S- f+ O# L$ @% \5 n6 }$ c, a

/ s7 Z- K1 X) l: A  l) ~将设备设置为一般可发现模式,若成功会打印如下参数。
( ~5 K6 Q  [1 ~% k1 c* s: _* h: c2 t. I2 U4 C* v0 Q) v
微信图片_20231203163754.png
. v6 ?' y/ k; V
: I$ X, K5 q3 E  `. J. `7 G% S, t
串口打印如下所示。
* r" J+ D$ _  p( [+ U; B9 W
  T+ ?3 ]' ?0 O3 ]9 u- {4 V9 E
微信图片_20231203163750.png
; g5 Q  V! e+ }. f转载自:记帖
: Q. B0 j% [* t6 O如有侵权请联系删除1 L, Y7 E8 X! T/ n. U% H
1 E/ `7 s( O* N) s  l) r

8 z; w- n$ T5 f( l/ a5 m. T
3 ]5 n: D  o( d
赞 收藏 评论0 发布时间:2023-12-3 16:40

举报

0个回答

所属标签

相似技术帖

官网相关资源

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