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

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

[复制链接]
STMCU小助手 发布时间:2021-12-6 10:20
错误代码段如下
0 H  k4 r+ r" V$ o, h4 t: N3 x# ~/ p( f& w( E2 B. X
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
    : x* e* }1 r: h3 \5 A
  2. {# c& @3 T  {# }0 o5 b/ q
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));/ `) g$ U& j. y
  4. " ?5 g9 |: \4 Y
  5.   FlagStatus bitstatus = RESET;  $ I) F' K, I0 L  ~
  6. 7 s8 M2 F& g% F( c4 [& D
  7.   switch(TimerIdx)$ N0 g7 j' h$ s$ y0 n
  8.   {
    1 q' y( }6 h; b
  9.     case HRTIM_TIMERINDEX_MASTER:
    + q. x8 v4 Y4 N2 \
  10.     {, k; G; h1 M0 p" c
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)+ D& u+ ]+ H& |* x7 d0 M
  12.       {/ X6 e9 B2 [- s2 y# p: f& d
  13.         bitstatus = SET;
    3 |$ O4 g( K& R9 L% I
  14.       }1 Y7 n' }+ G1 s# E9 D7 q* R! T7 n
  15.       else
    ) F! m% K! D7 w
  16.       {& n7 P& g+ ?& R* @$ x4 A
  17.         bitstatus = RESET;  O3 Y, \! x# X1 U; \
  18.       }
    + V( u7 o4 X: S& c8 o
  19.     }# y  x2 M3 u% [3 c
  20.     break;3 r5 W; `5 j. F
  21. # }; F. s/ C) z7 m6 ?- x
  22.     case HRTIM_TIMERINDEX_TIMER_A:  ?5 P( d+ u3 i; W& z+ p! q3 \
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    - R# {8 I7 L# _/ ]& Z
  24.     case HRTIM_TIMERINDEX_TIMER_C:1 p# j. \; v/ J+ X3 g
  25.     case HRTIM_TIMERINDEX_TIMER_D:5 p% l$ _, F2 y3 j, O! Y
  26.     case HRTIM_TIMERINDEX_TIMER_E:: c' G1 ]- E$ f! m+ \
  27.     {
    . u" S7 M9 ]' x: g# s/ ]/ o$ a. |
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)- x4 A) l7 |9 L7 w
  29.       {7 T4 W/ M7 N6 A8 Q; v0 t" b0 H2 Z1 [
  30.         bitstatus = SET;6 A: K0 o2 F, j) u
  31.       }5 g7 q4 k. U: m- d  J4 a% V' L
  32.       else
    - O% ?1 Z. V6 L# g( {
  33.       {5 k6 f2 F) @* Y/ s' ^" l" b$ D9 {
  34.         bitstatus = RESET;
    9 ]- {, Q- S2 I' X
  35.       }
    " ]4 |* g  [) d% Z3 e! L# V
  36.     }# k" u& P/ B8 \1 o2 N/ `4 |
  37.     break;7 J6 S* X6 @2 S( w5 L/ G

  38. ( H# l& Q6 ^  z$ t& E
  39.     default:( E/ f" N4 X, W5 K- E. ]
  40.     break;  
    ; s8 O- S1 {. L7 C( |. g5 U
  41.   }   
    6 z, `. y- t7 x; S, p  m0 _
  42.   return bitstatus;
    7 o- _& G3 ]& o
  43. }
复制代码

* Q! X& @& p0 j3 l! C$ j3 @编译报错如下' Q3 s* N% b9 N8 b
6 S, I+ w5 [7 R8 D& F
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
复制代码

8 L- v  O$ X: f; S6 P/ [3 D修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。8 n9 e% I) e# V4 i# ?, i

" N4 p! W# C! I6 V即变量的定义要在语句之前。1 |4 [8 ]! _! L8 U) \  R
! V/ A" l( X$ A- R+ ?6 h
修改后的代码如下:- u- E& g7 y+ W8 k
: T( o+ n5 ^8 E6 }5 I& i
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)& m- e* i, `$ Z" K/ U2 H) q
  2. {- x# ^; H% J4 c. W1 J; L
  3.         FlagStatus bitstatus = RESET;! t1 D) k# s4 e, ?
  4.         
    4 F  y2 L8 G. J
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  
    1 o8 b7 e' O- T

  6. 7 x$ N4 u  K) I
  7.   switch(TimerIdx): G2 w/ @% [0 C9 [# W3 E9 _' j
  8.   {
    7 z4 y8 T& t, K! U2 b8 l9 R
  9.     case HRTIM_TIMERINDEX_MASTER:
    ) }* Z3 ^  i& b) \4 M+ j
  10.     {
    9 J5 i4 m) S1 c, V$ i
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
    % p# O: u6 l  [* J3 w2 E9 U# x
  12.       {" B* G1 L/ R; n* K
  13.         bitstatus = SET;( k6 g& [0 W* t
  14.       }0 F# ]) i2 k# N1 L5 v% i
  15.       else
    & h2 q  A+ m$ e% D2 Y1 E1 p
  16.       {
      d; A3 D' T2 K
  17.         bitstatus = RESET;
    ! F! u( B, K- K( e  L
  18.       }) J+ d, c& O$ G0 c+ e; q
  19.     }
    6 F% [+ Y9 m1 m$ w1 t. u% S3 F
  20.     break;
    3 |- v* ~4 A/ z1 R' Q, o" w$ S

  21. + ?% n* m- y* ^4 H3 e- k
  22.     case HRTIM_TIMERINDEX_TIMER_A:
    ! d4 N& l- L2 g9 b* w
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    5 x' L( ]# ]* ^1 N6 \
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    ) r8 f% {5 T: h( {4 g) m( V
  25.     case HRTIM_TIMERINDEX_TIMER_D:
    - z2 p0 m/ I( `8 i. s. j( ^0 t0 M  Y
  26.     case HRTIM_TIMERINDEX_TIMER_E:7 G: B( J. L: a2 x
  27.     {( H$ ]1 e/ X" h: u$ {. D
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    0 o7 u/ F5 k, p1 l- O& c8 g6 \
  29.       {1 p5 \+ J. n1 o& b; i9 w, d4 ~2 W
  30.         bitstatus = SET;
    7 d3 t! l9 r# M7 G/ I2 F! k
  31.       }
    # i$ ]6 p3 B: W2 V7 f
  32.       else
    # q4 x0 N- c( E" O6 I5 G. L9 x
  33.       {/ j6 @! d) o- q- H1 @
  34.         bitstatus = RESET;
    . G9 l+ V$ h/ f6 N7 d4 t" D0 u" R
  35.       }- y' F2 k6 Y; D& t
  36.     }
    7 L4 p. P* [# @, x2 G. V5 c
  37.     break;, m% x$ b, C% s& t2 u) `5 B7 d, ?

  38. - h! f7 c3 M7 f$ z
  39.     default:/ U9 A$ B7 I, z+ J- h% q% C
  40.     break;  " D3 ]1 J$ q5 \" ?8 b5 C/ g
  41.   }   
    # O) q' C2 l6 k
  42.   return bitstatus;! m( o* x3 T  a! m2 U3 {) |. i
  43. }
    / M! H7 M  y* p( i3 N5 n
  44. 1 U8 h$ \+ g" w5 k4 D7 i
复制代码
1 a5 a* D3 o$ z
收藏 评论0 发布时间:2021-12-6 10:20

举报

0个回答

所属标签

相似技术帖

官网相关资源

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