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

【经验分享】关于STM32F3标准外设库中的一个语法错误

[复制链接]
STMCU小助手 发布时间:2021-12-6 10:20
错误代码段如下1 U4 ?$ v! B( z! ~

$ s: @1 {: v: D
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)- x0 x/ O2 U& W0 n" g4 B- r
  2. {
    2 Q5 f/ B4 A9 c7 Q4 _' a0 u
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));1 c" O0 m4 z1 ~7 m3 N( D

  4. , |* y: g' p, f8 {0 i, |# ?( @
  5.   FlagStatus bitstatus = RESET;  
      ?7 R/ H, |8 \3 }1 P* S! D
  6. $ v  o1 y* A/ J0 r+ U
  7.   switch(TimerIdx)
    - n% l. |- U" d9 |9 \# c+ S% f
  8.   {
    % |$ L& B+ ~5 }8 T8 Z
  9.     case HRTIM_TIMERINDEX_MASTER:
    7 ~$ g/ J, c4 o& j+ F- ]
  10.     {
    7 l! T$ B- q$ Z; _  ]
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
    , f) m6 `4 ^) S- `4 C" \$ C  z3 `  O
  12.       {
    / E) I4 C+ y! \5 ^& a5 ^7 q
  13.         bitstatus = SET;+ n" ^2 v2 B+ \# j  A
  14.       }
    $ v2 F( L6 h- l: B/ v
  15.       else
    9 `5 P" _) F0 V2 t. w! r2 \* c6 f, |. y/ \
  16.       {9 T& `& S( o0 \
  17.         bitstatus = RESET;9 z$ c) \) P7 R' i* t
  18.       }
    3 H2 v+ m( ?9 M0 g
  19.     }' M8 s4 E4 P- |9 r$ z
  20.     break;
    ; h( x2 w0 v2 ?' u% I# P0 g( {

  21. 7 U% s5 Q( E. x) j7 t8 D0 o
  22.     case HRTIM_TIMERINDEX_TIMER_A:& p+ [: N" _( G  O
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    , B1 x/ C( I; T) v9 d# M
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    3 [$ A% b/ _. P; @8 \
  25.     case HRTIM_TIMERINDEX_TIMER_D:$ g0 Y6 D' K0 T& }) I. X$ d- C
  26.     case HRTIM_TIMERINDEX_TIMER_E:  P" x2 D9 S2 S1 I* ~$ A
  27.     {, }- D9 k$ _+ E) c6 b1 @& a
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    + j( g% q* R$ j4 M
  29.       {
    ) V3 t* v0 G# b) [8 a
  30.         bitstatus = SET;5 d7 ^  b+ |, L3 }/ [5 m, ]
  31.       }
    & f7 H. _# J  v+ @7 g! G9 c
  32.       else( T0 m5 |2 T# Y. P
  33.       {
    4 p! e+ r: O) b% w0 b& `$ X
  34.         bitstatus = RESET;* N& h( @- j& q
  35.       }8 x8 t6 a# F% V. ^+ S! z) K
  36.     }- w) |3 k, M. n) j/ }6 e. G
  37.     break;3 z9 }, C7 J, V/ n3 w7 O

  38. , ~- T: }0 W" b2 _' f5 e; H
  39.     default:
    % ~; x& \2 d2 x3 s
  40.     break;  
    2 a! e+ ?; H# ?
  41.   }   
    ; O+ E& ?$ D0 T% \  G
  42.   return bitstatus;1 M! X- ?: J+ ]3 H
  43. }
复制代码
2 Y: Q2 r  C) \
编译报错如下
) T/ G9 w' ^) O: o: A, Q1 \9 r1 ]) v% g/ x4 ]
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
复制代码

& I, o1 _: h' [+ b( j修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。
0 s) t" m6 [, q- f6 R) ?" X
: D) Z* }; C3 O9 b即变量的定义要在语句之前。5 i$ ]7 e/ a0 J5 x
/ [- V  X4 A0 |
修改后的代码如下:" b& R7 D' i( ?. d) \

# ?1 [, Q) d1 k
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)% L+ M$ y# |( l& s) f2 e( {# C
  2. {
    ' B# C8 ?9 |5 ]% @- r, t# t( T
  3.         FlagStatus bitstatus = RESET;
    & G! g" h$ D# z; K% E" x
  4.         
    0 G6 P; K% X4 D/ h& i0 {4 ]
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  ) _. T' Q& A. x8 ~) ]: T" [8 i
  6. . @0 H7 Q' U+ O
  7.   switch(TimerIdx)
    - R. Q1 B4 P. k7 G/ l9 |
  8.   {
    * N* [) {% k" ]4 Q; P4 Y, F+ f9 l
  9.     case HRTIM_TIMERINDEX_MASTER:2 Z7 N- A. p1 E2 z
  10.     {
    # w/ r6 G, E4 E, Y# P
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)5 R: X. P8 c* [2 P
  12.       {
    5 e0 Z+ F: i: Z0 u% Z3 ^
  13.         bitstatus = SET;$ |0 k# f, h3 N9 k
  14.       }- w+ C. A8 N8 Z) l8 ^" R. B. s
  15.       else
    2 X+ P$ k7 W9 c8 {6 E+ _: h
  16.       {
    & a1 R6 u! a2 q& X  I
  17.         bitstatus = RESET;
    6 q* {- {& }& n
  18.       }
    5 S! s* c: ~5 F8 s) K; {# X: ~
  19.     }: R) f. P8 [/ s: _# L
  20.     break;& a3 s* F1 q( }1 b
  21. ! r0 P$ w, [: k# A0 P
  22.     case HRTIM_TIMERINDEX_TIMER_A:1 e" @4 L2 E0 I# m
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    + V4 D% n7 C! ~  j7 S
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    9 Y3 U$ y6 Q4 |" e4 ?% A. O
  25.     case HRTIM_TIMERINDEX_TIMER_D:
    0 H* W. l( B1 I7 v
  26.     case HRTIM_TIMERINDEX_TIMER_E:
    8 k; a# h; y* P. N2 l+ q. z
  27.     {
    2 ^6 M% b9 p& T5 g; L
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    5 L. \& v+ U/ |: G0 L
  29.       {
    6 Z5 q5 i% o. Z, k+ s
  30.         bitstatus = SET;
    - Z$ k$ b* Y+ o* E
  31.       }
      S+ p2 l0 R+ B
  32.       else7 l6 z+ s% P. z/ w
  33.       {
    4 p/ v0 l  j0 Z% M5 R. X1 r/ S* q
  34.         bitstatus = RESET;
    % o& ~7 X+ ?* o: C; V
  35.       }- J, @& k3 Z7 V7 d3 R
  36.     }  w6 Y# G, u3 Q+ |7 h3 u# j5 B$ ^, J( N+ Y
  37.     break;
    ! |: l3 `3 q; ~  x# M3 @6 B

  38. , g4 w+ w7 y! a# k: N- w3 I, m
  39.     default:4 M+ X' ~1 m# y$ m5 q* V& o
  40.     break;  : \# d- _6 i$ f) {% X, n$ H2 A9 [( R
  41.   }    7 h8 C) s. w& |# G8 R
  42.   return bitstatus;
    $ z( C6 \8 L% @$ ]% r
  43. }
    . ?) ?4 t" N4 t8 ~* L  t- w3 c
  44. 6 h# Z5 h) g  l- L# b
复制代码
/ a( R# v. a. g: Z0 P8 B, b
收藏 评论0 发布时间:2021-12-6 10:20

举报

0个回答

所属标签

相似分享

官网相关资源

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