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

基于STM32开发中MDK IDE的调试输出技巧

[复制链接]
yumeii 发布时间:2020-1-6 16:05
我们在STM32开发调试过程中,常常需要做些直观的输出,如果手头没有相关的设备或仪器,我们可以使用 IDE自带的工具。这里分享两个基于MDK  IDE的调试输出技巧。* `7 ~3 i  @4 U% z1 h

+ g* \3 f6 y8 l% @. C

7 a! C7 e: K/ \4 C一、使用其自带的逻辑分析仪查看波形。. |; ]& G) F7 E% Q
0 H  J" ^4 b( e7 l' d
" ?* B' B, s  ?+ n+ U# I
比方我们需要查看STM32定时器的PWM输出,手头又没有示波器或逻辑分析仪, 尤其学生族。我们可以用MDK自带的逻辑分析仪来察看结果。
/ V! [. e0 m  W- v
8 u, C% b( f/ R% c+ Q  v, G3 \
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

3 B/ D1 {  y9 }0 L
  ]) w9 f9 r/ @+ G  ?: h# V
STM32定时器的参数配置我这里就省略了。我开启定时器的比较中断和更新中断,在中断里将PA口的IDR值读到一个全局变量TIM3_CH1_OUT里。
$ v4 S. Y4 K+ z( s  B! E: ^2 z$ x/ x) Q: R

# ^% o% ~/ `3 }% V, Q% r2 C下面主要介绍跟LA[逻辑分析仪缩写]有关的配置:
6 s5 k+ j) G7 O) G7 y, F) z# d, Q4 G& t% n3 f% X. K: v' H6 f2 w: j
0 d$ N# r& i4 [, X. A. |
1、
& ?4 c, L$ i! i2 S& R; r3 V8 I' x- l) P% `; i  [

6 g, K2 m9 g* S! @1 |; ? 1.png
" s/ v' ?+ _1 \3 d5 l
$ U% C4 w4 W; `4 U

$ q8 X6 v9 N4 H0 R2、
) H* @+ N- b5 X% u# ?# T/ s( G) `+ X! m) g3 E, y

  \' d  y) ?) u 2.png
$ }1 N- Q0 D( @8 h! P
# E  T9 `# S& \7 q7 F2 d- [

  X6 r+ g3 [, A6 t5 S5 }3 V) _2 _3 ^3、联机进入调试状态,进一步配置:6 W; c. H8 c. c( q' @" X
# ~6 Y5 ~8 _; f/ ~0 c3 H/ m
( f, ?" U& q/ k* \7 g# B
3.png
% b4 b  t5 V. i( O+ w, H2 A/ C1 F: \# O& l6 R! v: [% X- p

: D0 L! Q: g7 Z5 A5 {6 M- F4、运行看结果:# a4 P2 S. T6 |4 ^

7 {2 C3 y. G  e" y7 u0 x0 _6 S
0 }- J% w' Y! t) m
4.png 3 p) R$ N' K7 N6 u
( k. p- a! L; y3 `8 d' G3 x
5.png
$ D0 @' b: |1 s1 O9 C" Y/ ]: d! Z3 m! {: _
) ?$ `% f) I+ C0 i% m
结果出来了,比较直观,也具备较好的测量能力。比一般的示波器不会差。" ~* E7 i* X6 {0 \* s- C" D- F- G

5 m) D: w) r6 l  }: Z+ T

; L7 P! w1 j5 K* L2 n二、使用调试工具自带的SWO功能做printf输出
" {0 z& k. t4 Q2 K2 ~
% h0 H% h/ B1 F/ i  x3 y/ ?& E3 A

" _: v" l0 p; @7 }我们在调试过程中往往需要做些printf输出,通常使用UART实现。顺便用下倒还好,不然得单独配置出UART,PC端需装应用软件和win驱动,还得辅以额外的硬件。" j1 A6 K( \5 j* x; G+ i) i$ U# V3 W* F
( n5 ]6 |( o0 t

) s! D3 g; U6 a/ Z7 B其实,我们很多时候可能通过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配置生成初始化代码就更简单了。像下面这样:
4 P4 w, e4 l. s, u- C9 n
# ~; n& P% O/ n$ T; a/ i5 p

# i  ^( T6 Z$ B 6.png
7 d7 A" U6 T* @4 \7 n& E
+ {1 k: n3 }/ ?0 E; K/ N! [3 C! U

7 @% v+ }" ]2 y( z* J: x$ L跟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
7.png
% V* e# c0 X2 B2 I  A9 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
8.png
2 Y( m; K: }9 u, z
/ I4 [6 _+ V* c7 P6 [: L

: b/ |5 r% \+ m5 X3、用户代码里添加:
/ W$ j7 p( `, Y# _  f
% i1 U, y& [5 k; ^3 D7 ^) O

8 _* ~' m+ b" U1 N* v& l0 q- N#include “stdio.h”
: s8 t( a2 i/ n  r' Z( m0 [
. T7 A) P% o/ L0 w! R! U+ n; [; x

. R( n9 o4 U5 w1 m7 Eint fputc(int ch, FILE *f)# y! u; [) d0 G  G" ~: C3 l) R

3 K5 J* T9 s: D" }& `

9 S' t0 w6 G) g$ c( M/ l5 [{
% n- ~. v* M8 A% m0 S3 Q9 d. D: B9 y1 F7 g/ w: U! E1 d5 h/ S
- s3 T& j- w1 I+ w0 s& t2 a
ITM_SendChar(ch);
9 s& a# L, a$ A( ~- B
+ x3 m2 Y! I, `  Z/ t
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 }& }& n: B9 Q  `% q- Q; E/ h8 d
0 r5 L$ q+ ~' G* W; k+ ^
4、运行看结果:' n' R* @5 t9 i) B

# O9 Z4 B3 ~; @5 l, c+ P
) Z0 g1 B# o1 R1 m- |! i: ~
9.png
( f! ?( d) ^0 j" s( p* V
2 n9 i6 w7 c" K! h, y! ?% {! b4 r  V3 W& N9 m4 o! b/ m' X
赞 收藏 评论0 发布时间:2020-1-6 16:05

举报

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