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

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

[复制链接]
STMCU小助手 发布时间:2021-12-6 10:20
错误代码段如下9 m# O1 C- i+ i- H4 x

1 z6 ]; r! ]- N8 b& ]+ d( _  h. K* Q
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
    2 T( }8 l3 ?% o" S
  2. {
    - }/ F3 A  Q" [4 s8 O+ ~* X$ I9 w
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
    2 v- m* u. {2 X5 L' Z8 S' c& V9 k
  4. 7 J) {4 W. e9 g6 t: j. v
  5.   FlagStatus bitstatus = RESET;  7 @- J  G0 L; [9 Y1 p9 R! S, `
  6. 4 D- n: |7 b  z- l
  7.   switch(TimerIdx)
    $ V9 l$ Q- l2 t
  8.   {
    8 [0 P1 L" y- R: [
  9.     case HRTIM_TIMERINDEX_MASTER:
    : \! L5 H3 z( g+ `; c# Y
  10.     {, f& E" X* u  O  h$ {9 u- _
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
    ( x/ F2 s$ K) T
  12.       {
    / k! ?* T  Q+ v3 x( W
  13.         bitstatus = SET;
    1 u; M6 {) X6 t/ \$ V
  14.       }! F/ @& g) q( p  h4 V
  15.       else2 z0 d! ~% K" P8 f5 D, S; V! L
  16.       {
    $ z1 G  B6 f1 o' v- N8 o
  17.         bitstatus = RESET;7 @+ e- G( t* B8 _
  18.       }
    2 k9 r. B0 W9 {5 e2 z. f% a. q
  19.     }  W7 s1 ]6 ^  S- k
  20.     break;, M) M% B- b" }

  21.   D2 ]0 j' C& N# S+ F$ E
  22.     case HRTIM_TIMERINDEX_TIMER_A:
    ' U! g6 Z8 e0 N% e( B% X0 L
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    . Z& g/ v( w0 M$ a4 A
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    & w0 P+ _7 e. @( m
  25.     case HRTIM_TIMERINDEX_TIMER_D:8 H# _8 d8 @2 L% x* ^7 N3 K% e  I
  26.     case HRTIM_TIMERINDEX_TIMER_E:  t4 a& e! x) O& e4 T6 J: W
  27.     {. {8 R& t8 O) _2 g; `: \5 A/ W
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    0 d5 ]; ?# j8 U8 X2 s( N: m. G# U: j
  29.       {' }2 J/ B+ q2 P8 N4 R
  30.         bitstatus = SET;4 f- K+ y, Y  b3 m7 t
  31.       }
    + v7 u% b- i. ^, D5 r  @$ X
  32.       else
    7 s( X, M* S6 N* l/ E. ]& L( F
  33.       {6 o! j; S  d3 R( n3 d( U( B$ x, H
  34.         bitstatus = RESET;
    0 E9 W6 `; m& i0 i  A2 {/ F
  35.       }9 I/ q: l4 @  P  V. \9 k
  36.     }& r( K/ C1 R5 h0 e
  37.     break;3 k/ E3 V3 O) H
  38. " o* m3 n/ l! a" b  L4 h
  39.     default:
    0 W* i- h) M3 w$ O3 f
  40.     break;  4 N7 Y; U: r' Y+ i2 M
  41.   }    2 b. a1 B' ?/ _; l/ z
  42.   return bitstatus;0 S3 L% ^6 S* h* N% }8 Q* F
  43. }
复制代码

" a4 _! g, r: M! ?. h编译报错如下4 O8 J/ _/ O3 y- S, E

2 [: @5 n3 H$ \& w, n, A
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
复制代码

' _3 q% R" N  R: \0 |修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。
  J4 w7 F: \5 d
& v4 I8 M1 [& _  ^2 [+ H" g# r6 X即变量的定义要在语句之前。
. |% L1 m1 L; \4 L; ]  p4 Y5 e9 A  z9 i  a2 d' }: H* |4 m
修改后的代码如下:+ p. x. X- G, @% W2 E: V1 ~
) D! A0 d; x9 C* ^/ H
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
    & H6 e& D) v+ }) k
  2. {* \3 V! ]9 E. a6 J; F" q5 t# J& X
  3.         FlagStatus bitstatus = RESET;$ b) }( l/ v3 q8 \( B% }: i
  4.         
    3 q! k# X* K, @6 `
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  : `5 G% |- \% H4 R' p' {' D
  6. * n- L, h7 g0 y5 X* h6 @
  7.   switch(TimerIdx)
    8 {2 w; O4 ~5 m+ M
  8.   {: d2 C; V, U5 v
  9.     case HRTIM_TIMERINDEX_MASTER:
    , d$ [  t9 B7 X" [
  10.     {
    5 s) r! A: x3 E: f% F, N( I5 h
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
    3 P! V) _* {4 U# ?% Y) l1 g
  12.       {  q+ b! [  H2 \
  13.         bitstatus = SET;; Q# T- c% G. S+ F9 t) s
  14.       }$ e( Z' \  K5 ?8 @+ x- k& O3 ^4 J
  15.       else
    , ^6 t; z+ w3 B; c9 u0 T
  16.       {8 c) k! B' D9 I! r# \
  17.         bitstatus = RESET;
    ! o% Z8 @) U% m  U$ S# f' m
  18.       }# d1 P5 L! _0 F6 S$ d# D
  19.     }
    . _8 B# z& Q  N! v5 y
  20.     break;
    5 G  S5 U: b5 s$ N; h# R1 m+ M

  21. # L& |, d& U9 K* X# b
  22.     case HRTIM_TIMERINDEX_TIMER_A:: F, E6 U" i; ]' e* S+ _% [
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    % |. Q" `- N0 ^* N7 Q+ E  q! G
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    " k5 Z9 a3 m* a* X; [' E( s( V% Z0 K
  25.     case HRTIM_TIMERINDEX_TIMER_D:) k0 |2 C$ ?, x
  26.     case HRTIM_TIMERINDEX_TIMER_E:! Z  H+ s8 X8 o- m9 S% m" J- W
  27.     {
    + @- G$ C5 @+ g+ q  \
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    0 ~+ B/ m0 a( d' @+ ?' A. c
  29.       {
    & W' U% l: y# o; J( G
  30.         bitstatus = SET;0 F6 m5 ~, f6 ?' R
  31.       }+ I4 `' D# H! C+ s3 s# P; X
  32.       else
    * t7 O8 f2 w$ ~$ P
  33.       {( Y) f2 B& g4 i
  34.         bitstatus = RESET;& n7 K, y+ j& U; q4 j( q5 p
  35.       }
    9 e3 n4 k4 z9 u$ e
  36.     }, _/ j: p( _6 ^# s. a. p4 j
  37.     break;
    5 q9 T& ^4 v) ^- \

  38. $ w( j7 }2 D7 q  C7 K
  39.     default:
      T  v; e1 A( ?6 t  M1 x$ B
  40.     break;  
    2 ^% U- E5 z" D7 ~1 J) v# D
  41.   }    ) D. A  k' {$ G9 [# f4 y2 `
  42.   return bitstatus;
    9 Q0 t4 f, [# D; Y% y  ]
  43. }# D7 K* ?/ [& u

  44. & R7 M1 C! ?- A" n# V3 P
复制代码

, _/ x) C6 a& E, @7 y3 H3 v
收藏 评论0 发布时间:2021-12-6 10:20

举报

0个回答

所属标签

相似技术帖

官网相关资源

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