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

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

[复制链接]
STMCU小助手 发布时间:2021-12-6 10:20
错误代码段如下
( U8 B9 C2 n& T1 i3 m7 r2 I  V& q/ o- {0 h
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
    * C- `2 M7 s5 ]
  2. {  {4 H8 n$ D" ^- }
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
    4 Z5 S& f+ H9 z4 D
  4. + u, W/ \4 [) ^; e8 y
  5.   FlagStatus bitstatus = RESET;  
    2 P" d3 D1 @; R

  6. % E# I  [9 n* y- @1 ~8 ?, t: C5 c, n
  7.   switch(TimerIdx)/ J. b* h& T6 {% b6 K
  8.   {+ W9 Z% L# O/ z4 I( y' t
  9.     case HRTIM_TIMERINDEX_MASTER:2 d5 U1 _  }  G4 g7 V
  10.     {1 h; g- t% f- s- J; @8 c* M
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
    / A4 \7 i2 b" O3 N0 K: x" \
  12.       {
    & ^2 B$ Z, q( n2 ?) ]8 _
  13.         bitstatus = SET;
    : i& M1 D* A7 N* S
  14.       }( N" h$ _1 c, K$ }# j. L/ s
  15.       else
    0 }* ~6 p9 ]4 |+ v5 x: O, O, X
  16.       {" f# F8 I. v6 t' ~) [5 H2 r. u
  17.         bitstatus = RESET;
    1 P$ E; U+ r( r: Q8 y/ ~. V
  18.       }2 O3 b' O) _* w. F" M1 N/ W2 t
  19.     }
    ! D4 k# e/ L! i* M4 [* ]
  20.     break;
    1 e& z+ N' }; Q

  21. # ]% y. Q9 b+ Y5 [6 W
  22.     case HRTIM_TIMERINDEX_TIMER_A:, `0 _8 f3 E5 c
  23.     case HRTIM_TIMERINDEX_TIMER_B:9 W  \+ T! T+ Y! P: \4 e* V
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    3 v# s' K: h3 a0 p9 ~% A% n
  25.     case HRTIM_TIMERINDEX_TIMER_D:  i: o/ f( _' \. p8 ~
  26.     case HRTIM_TIMERINDEX_TIMER_E:- F! s1 m* s: S
  27.     {' d8 A0 r' N' l  b$ W+ ?0 Y/ b
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)/ {' F0 j% m  ?) u
  29.       {
    " s( N; |0 O+ K
  30.         bitstatus = SET;
    % z9 R% Z! M& h6 z6 @' |1 B2 |
  31.       }
    ! K) q+ W5 }5 h" @' S
  32.       else
    + P+ V/ g* a# R$ s
  33.       {
    9 j& i4 ?6 Z: I! e$ h# Z
  34.         bitstatus = RESET;
    6 S5 R' [& F: o1 E4 A4 `3 E9 B
  35.       }4 p6 k) |9 f. k% d! x: L/ ^  ?5 A
  36.     }, ^( I3 S# K) A0 a4 j; ^
  37.     break;
    4 h& g0 a7 D1 w

  38. " v7 K. k/ F1 O/ _$ }$ l, Q+ G
  39.     default:& U, u8 L2 k) k( O2 K! E' W5 O2 ]
  40.     break;  5 i" `1 k  y! L$ {/ n
  41.   }    ' b8 T+ g/ E6 w% n0 [
  42.   return bitstatus;' A* |  D, E& F3 ^( q
  43. }
复制代码

  q& n) {+ q( W8 E* ^! E% d1 A% J) b编译报错如下3 n$ s; T& U0 P3 e) V1 ~* F
8 F5 \& K& r, c5 V* [
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
复制代码

& r3 o! [4 ~8 g8 f修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。, @3 \+ |& g: U# H8 r" x

( H" M  G, h5 {% X$ Y& g即变量的定义要在语句之前。. i- L+ l) R1 d

1 x0 J3 \% O/ _! B# I修改后的代码如下:
* {7 N/ v9 y+ X; Z* W
$ p  m5 R" V3 f7 i
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)7 s: V  ?, o) h1 T. L; |
  2. {
    - x, x" d% h2 E$ n' V, q' o2 m
  3.         FlagStatus bitstatus = RESET;/ ~2 F  }" K, _
  4.         
    . L/ N3 `7 U1 t# [3 D5 ~4 t
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  ' O7 v  {9 _) C$ [& V8 H- \
  6. & p. m% e3 p$ A. R
  7.   switch(TimerIdx)
    / C: p  u9 x& O% ~& a8 J
  8.   {
    ! \4 ?+ G7 U6 C( k/ h& c; \  ]
  9.     case HRTIM_TIMERINDEX_MASTER:
    ) e3 B  t$ O& N1 X# |. @6 \
  10.     {( A( k4 L+ b$ Z' r5 P, T( {
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)8 \* |- T" ~. B6 d0 C- |5 W
  12.       {
    4 a, g# e/ E1 r4 z
  13.         bitstatus = SET;3 {9 Y9 a" J0 y* J$ E: N
  14.       }9 r* }& }! b) E9 [
  15.       else
    8 x& A  ]" n+ m
  16.       {
    % R! ^, H% V' ]" W
  17.         bitstatus = RESET;
    ; }+ y- Z/ W+ I
  18.       }
    ; B& Y# f) u- u  A
  19.     }
    & v; C/ R" s+ ]# c0 D( l! ^
  20.     break;9 i  C2 p% j- j$ e" m6 S( K
  21. 4 [: f& @# M& K# H2 N6 ?: |3 @
  22.     case HRTIM_TIMERINDEX_TIMER_A:; M) `$ _/ M# F. Y, p
  23.     case HRTIM_TIMERINDEX_TIMER_B:! F+ L- l" _# r. }3 I) C- c; w
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    5 j: n0 E) |7 o/ D# O2 J! r
  25.     case HRTIM_TIMERINDEX_TIMER_D:
    + N7 u3 ?+ x7 h' s7 Y, O
  26.     case HRTIM_TIMERINDEX_TIMER_E:
    ; L' G4 i6 k  J2 s  B
  27.     {
    ! ^% W2 E" B1 |2 v& J
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
      }% A7 G1 @/ E8 ^. _7 v
  29.       {
    4 M& x) I5 V) H" b0 K1 D$ ^
  30.         bitstatus = SET;
    4 d/ A! M: _' ]7 s
  31.       }
    * p+ g! p2 I% ]& |" e5 Q- I% b
  32.       else
    6 S4 ^& Z% i8 G1 [  {$ P
  33.       {
    7 ?( T: E4 j; R+ A8 @! q) C& X
  34.         bitstatus = RESET;
    ! t, k+ S2 D6 }% b+ \
  35.       }& ^8 M/ h4 R$ Q4 v0 y
  36.     }
      r! P9 O3 n% [
  37.     break;
    % y7 }; H4 ^! _4 V0 B/ X) r

  38. - e: y2 T8 b: x9 E$ ?9 a; ~
  39.     default:; M4 m* |; ^8 i* z7 F# U
  40.     break;  , h8 J# k+ G" Q) x. o, W* {
  41.   }    7 [# ~, a3 y  D* N7 }1 C! c0 U$ [
  42.   return bitstatus;7 I6 _6 \6 B# x* h
  43. }
    5 p$ j& {+ {, Q6 U* c" i
  44. . H- ^% Z. y8 `! s3 {# e0 v) `/ ^$ h% O
复制代码
, E. Z: k" J; Q8 [* c7 `8 v& r
收藏 评论0 发布时间:2021-12-6 10:20

举报

0个回答

所属标签

相似分享

官网相关资源

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