|
我们在STM32开发调试过程中,常常需要做些直观的输出,如果手头没有相关的设备或仪器,我们可以使用 IDE自带的工具。这里分享两个基于MDK IDE的调试输出技巧。* `7 ~3 i @4 U% z1 h 一、使用其自带的逻辑分析仪查看波形。. |; ]& G) F7 E% Q 0 H J" ^4 b( e7 l' d " ?* B' B, s ?+ n+ U# I 比方我们需要查看STM32定时器的PWM输出,手头又没有示波器或逻辑分析仪, 尤其学生族。我们可以用MDK自带的逻辑分析仪来察看结果。 8 Q" {1 C! L7 n5 s9 j1 f 假设基于某一款STM32F4芯片,输出一个脉宽为100us,占空比为40%的波形。使用TIM3的通道1输出PWM波形,用到GPIOA_6,即PA6., Z0 \- X7 C4 P9 c4 l0 \! X+ n ]) w9 f9 r/ @+ G ?: h# V STM32定时器的参数配置我这里就省略了。我开启定时器的比较中断和更新中断,在中断里将PA口的IDR值读到一个全局变量TIM3_CH1_OUT里。 ! E: ^2 z$ x/ x) Q: R 下面主要介绍跟LA[逻辑分析仪缩写]有关的配置: # d, Q4 G& t% n3 f% X. K: v' H6 f2 w: j 0 d$ N# r& i4 [, X. A. | 1、 3 V8 I' x- l) P% `; i [
2、 / s( G) `+ X! m) g3 E, y
3、联机进入调试状态,进一步配置:6 W; c. H8 c. c( q' @" X # ~6 Y5 ~8 _; f/ ~0 c3 H/ m ( f, ?" U& q/ k* \7 g# B
2 A/ C1 F: \# O& l6 R! v: [% X- p 4、运行看结果:# a4 P2 S. T6 |4 ^ 0 }- J% w' Y! t) m
( k. p- a! L; y3 `8 d' G3 x
" Y/ ]: d! Z3 m! {: _ ) ?$ `% f) I+ C0 i% m 结果出来了,比较直观,也具备较好的测量能力。比一般的示波器不会差。" ~* E7 i* X6 {0 \* s- C" D- F- G 二、使用调试工具自带的SWO功能做printf输出 我们在调试过程中往往需要做些printf输出,通常使用UART实现。顺便用下倒还好,不然得单独配置出UART,PC端需装应用软件和win驱动,还得辅以额外的硬件。" j1 A6 K( \5 j* x; G+ i) i$ U# V3 W* F ( n5 ]6 |( o0 t 其实,我们很多时候可能通过SWO方式做输出就好,只要芯片和调试器支持。+ V: u4 x; ]7 d3 N _% A4 g Z" x) _7 i' d $ }/ u3 b3 @/ j" k) ]& C& r SWO,serial wire output ,一种异步串行通信通道。目前基于Cortex M3,M4,M7内核芯片都支持。通过配置寄存器DBGMCU_CR里的TRACE_IOEN和TRACE_MODE来启用。当然用CUBEMX配置生成初始化代码就更简单了。像下面这样:
跟MDK有关的配置:" B. |) y3 M% z+ w1 R 9 M5 x3 v& i# K/ _4 Z % }$ r+ f8 L, j2 j; E0 ? 1、) o5 u, S$ O8 y. ?1 Y! ^- l/ a ! T4 J) p/ w) q6 Z 1 w& J- F' J2 r% k9 m% A
9 e1 x$ u3 [- S. o: F ( s4 [& q+ P( _6 X' Y$ { 2、进入调试状态,点击View/Serial Windows/Debug(printf)Viewer$ |, f: ]3 e9 C# D5 Q/ r' b, `! {0 A4 P : R! |+ [) R3 D5 N; M2 ? * z! T$ ^5 g" K2 `8 n+ S
3、用户代码里添加: #include “stdio.h” int fputc(int ch, FILE *f)# y! u; [) d0 G G" ~: C3 l) R { . D: B9 y1 F7 g/ w: U! E1 d5 h/ S - s3 T& j- w1 I+ w0 s& t2 a ITM_SendChar(ch); 8 Q' T) S1 }# e J3 X return (ch);0 a, O3 N% M: t" F/ l l+ n 1 L6 f6 y) e3 t! C . v0 M& x2 V3 C4 [$ e; t! M& f }) D, C W% F: ^- h1 z0 g& v 0 r5 L$ q+ ~' G* W; k+ ^ 4、运行看结果:' n' R* @5 t9 i) B ) Z0 g1 B# o1 R1 m- |! i: ~
V3 W& N9 m4 o! b/ m' X |
微信公众号
手机版