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

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

[复制链接]
STMCU小助手 发布时间:2021-12-6 10:20
错误代码段如下
/ ?3 w7 T. P* X) i& U; N: n$ Z! U8 @" T' A+ ]+ d
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG), j  P0 _3 u5 F- Z
  2. {
    , X9 O: f+ a6 I3 L' f7 ?; h
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));7 s. [9 g6 f* ?8 G# g
  4. & F* Q! C) u1 Q4 |. `- B
  5.   FlagStatus bitstatus = RESET;  
    ( Y6 S% K5 m* a9 \( B

  6. 8 L$ T$ Q1 u& e, @+ w. S2 X2 g
  7.   switch(TimerIdx)
    # G( L4 V" ^, y5 G' \% Y+ }( e
  8.   {. [, Y# L: K9 p7 W
  9.     case HRTIM_TIMERINDEX_MASTER:
    * P4 B2 Y% H( Z. n/ \) D" E
  10.     {$ d2 ~6 C+ y6 D( z
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)4 m9 n7 d* ^8 Q
  12.       {
    7 U! b% g' ]6 F- r. ]1 X& N7 L8 l
  13.         bitstatus = SET;8 B$ U2 b/ N) H5 R1 u) f: C# \
  14.       }+ h# Y0 Q; a5 s5 A& m. ^3 v$ n* H
  15.       else
    9 {+ H/ k) i& K: l
  16.       {
    & T1 @4 s$ Z* V
  17.         bitstatus = RESET;& F2 I6 l% d/ u7 d% D
  18.       }! ^$ Z7 ]( y" X1 T6 ~2 j6 Y
  19.     }  t5 t, W0 D/ a; _; j9 _
  20.     break;
    , f, L# d5 N5 S! g( a

  21. 4 e! l( M  G& _8 O, t
  22.     case HRTIM_TIMERINDEX_TIMER_A:
    . x. X" l$ U: }+ S& w# J
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    3 W# [7 j) d) p" m1 T9 w
  24.     case HRTIM_TIMERINDEX_TIMER_C:4 D( j1 `% b" m6 F5 w% s, F7 C1 S( V
  25.     case HRTIM_TIMERINDEX_TIMER_D:1 y2 i2 ^$ z. J$ A6 L6 ]
  26.     case HRTIM_TIMERINDEX_TIMER_E:5 Q0 ~) H+ O/ y- u6 n
  27.     {
    ) u7 ]% ~7 \2 r. f0 H
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
      V: V7 {, ~4 {
  29.       {
    . J! ?, f" X3 x6 j
  30.         bitstatus = SET;5 W2 }/ m0 g1 i& _8 V
  31.       }: A9 B. t6 \, H- Y/ Q" ^
  32.       else) r# P4 G9 E: o2 ?1 e4 D& p
  33.       {+ t& ]7 C4 A0 r0 F8 M# O9 P/ @
  34.         bitstatus = RESET;
    / |) {: R& v( D! v
  35.       }
    4 y& d7 G  Z" M
  36.     }
      I# L$ g5 z3 [0 z  J
  37.     break;) E  ^/ o# L  i. k) j4 D4 Y

  38. # \; S: [" |& v) n7 I" F
  39.     default:: N+ E% I+ N! q( }
  40.     break;  
    , b4 [, L; A0 i) Q  V$ j1 t
  41.   }    * P* A* R3 @6 S- y% W
  42.   return bitstatus;! |$ @2 X/ @. H/ g* i( A
  43. }
复制代码

; [5 ?4 n& n0 l8 t编译报错如下
# w& H4 B/ C$ @! c$ s7 q4 p& s/ W4 w: F8 p
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
复制代码
1 v  U  A3 t' b
修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。: U4 u; M: s5 {% {1 k

2 l! f# A, W6 E! \# |- i& g7 j即变量的定义要在语句之前。
( x# F0 S) A  Z9 {" x
- P- a1 t0 |) M! F! O; b& f修改后的代码如下:
1 g! p- T" ?/ E+ }9 D
% F2 z! G( }" |- [: l8 r2 c
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG), N! p1 s4 G6 Z) V% w' R8 F
  2. {
    5 z8 f- M' l) z% @3 s
  3.         FlagStatus bitstatus = RESET;$ f; {4 A" l# q% R/ V% ]( g
  4.         . e0 K' j, z8 ^+ Y" _$ s7 X; @
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  
    3 B1 w- `4 {  d5 U- f. F) ~# g

  6. * S, S$ K# M. E8 u3 b! Y7 @
  7.   switch(TimerIdx)0 o# J2 L. r- B) W( s) j& w
  8.   {$ l$ \& E$ F- @
  9.     case HRTIM_TIMERINDEX_MASTER:
    / B6 W( [% W* B4 Y. i* n/ ~
  10.     {
    # D; E" J4 Y# s( y' E  W5 H
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)" n3 c8 _3 H4 E* g( ?9 E- `
  12.       {5 j( J' }6 I* @2 z
  13.         bitstatus = SET;- q. \7 t9 a( f" ~
  14.       }! W( W5 O& U2 @. Q# P# E- D
  15.       else9 o( `2 Q3 R- I
  16.       {$ q' B2 b' K% U2 G. r" Z
  17.         bitstatus = RESET;
    % Z* O7 W9 z: f6 {$ {; H! K* M
  18.       }8 ], {% s) e2 l% r. q
  19.     }
    # i1 p6 A; k1 C3 ]& {, k
  20.     break;
    0 H6 ^' }0 i; U8 i: J* z
  21. 8 o! ]$ e" ]1 D  \3 `0 _5 i2 k- |* O
  22.     case HRTIM_TIMERINDEX_TIMER_A:
    3 U% S5 M& |3 [  o+ w
  23.     case HRTIM_TIMERINDEX_TIMER_B:) {" h* d. Q: Y% J; C. s
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    " t6 t, r" Y- ~9 P* N+ x# }
  25.     case HRTIM_TIMERINDEX_TIMER_D:. I& ?; P9 W! B5 w$ D
  26.     case HRTIM_TIMERINDEX_TIMER_E:9 ~2 s' ]: {& w
  27.     {& e9 e, ?0 H6 l3 ?
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)# t0 U: z- M/ `: B) E
  29.       {
    5 L, ]- a3 l; a$ w  P
  30.         bitstatus = SET;
    8 s- e4 B: l% j" f  L3 V7 X2 v
  31.       }
    + V+ Z) Q5 N( p/ e
  32.       else$ K, _/ V/ C9 T
  33.       {
    : Y9 d* A2 Q* `& X
  34.         bitstatus = RESET;+ S6 s) w# d. h2 B. U! F& \
  35.       }4 P, k; r+ C) X. E* m
  36.     }# o+ w+ |1 `- a+ w" b
  37.     break;& a( z4 X0 {" E4 C! \& ^
  38. 6 S* _" @8 |6 ]% h3 L
  39.     default:3 j5 {- [( ~3 X3 H9 I: i- v7 [6 H
  40.     break;    U% m8 O( x! _; C6 I; S6 p
  41.   }   
    " C3 H  l2 B* @) |
  42.   return bitstatus;
    ) G- F* w; [, U. e3 ^# E
  43. }; y) t( [: C* V: v0 B$ V
  44. 7 u, o* b2 G( t8 z
复制代码
6 ~# {7 M. c& W  q5 Z
收藏 评论0 发布时间:2021-12-6 10:20

举报

0个回答

所属标签

相似分享

官网相关资源

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