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

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

[复制链接]
STMCU小助手 发布时间:2021-12-6 10:20
错误代码段如下
- o$ ]: ?# b( T. C1 o4 }0 B6 T7 p
4 i! }0 b( t6 e
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
    ( v2 e& r% v  q' y$ @4 Y
  2. {: k2 N  X7 T4 O. o. D
  3.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));# _! v  Y9 E0 `6 |# y# x2 z
  4. / t* M* r2 s4 b* U' l+ `7 U: B
  5.   FlagStatus bitstatus = RESET;  3 R5 e- P9 u( L! Q7 O
  6. ) {' Y7 j' |, @* X2 R# {
  7.   switch(TimerIdx)% b/ l  ]0 w8 B# @. ~( q
  8.   {
    5 d9 K* r6 L1 Z5 G' M3 L
  9.     case HRTIM_TIMERINDEX_MASTER:
      p' q+ D+ y+ e8 [
  10.     {
    / u) L: Q& i6 ~- a% e
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)# B, s+ K0 J9 ?' a7 S) m( u
  12.       {
    / R0 Y1 g8 t* {$ L. }
  13.         bitstatus = SET;- b- s, W5 A) q" k/ B
  14.       }
    7 J. B- f0 n  x( K
  15.       else& D, K! h- i6 F4 s
  16.       {7 H, s$ }# D3 l7 Y9 q# x: `
  17.         bitstatus = RESET;+ V; V( n$ s0 n& J. q
  18.       }6 R* ], s. P7 H5 {- O8 G) C$ i) B
  19.     }
      L! T  _7 j4 _4 Z, K& |% P
  20.     break;
    7 F2 h4 L! c8 n7 y0 Z$ j. w
  21.   J- {7 f; X0 o, u6 ^
  22.     case HRTIM_TIMERINDEX_TIMER_A:
    9 ^4 A4 P# Z/ N& i+ g- L- T. b
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    1 p6 ^6 V( F/ h. Q6 B$ L
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    2 p0 N% t% {1 k, b" g  ?2 W
  25.     case HRTIM_TIMERINDEX_TIMER_D:* j% `' J. D0 w5 M! c
  26.     case HRTIM_TIMERINDEX_TIMER_E:
    2 }* F! @8 M4 D, p- P1 o
  27.     {
    - y2 L4 u: G4 d
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    ! {# K6 @1 C0 Y& O7 X
  29.       {
    8 f! U* I7 f( x3 e( m
  30.         bitstatus = SET;8 o) f2 R6 T1 N0 B
  31.       }, O  @9 o, F/ a* ^: G* G2 j
  32.       else
    5 y, g' y$ D/ n) n% L* L) W, k
  33.       {
    ' S' u( H$ }! A
  34.         bitstatus = RESET;# x) J* C% z* g! x' I& V/ t
  35.       }2 _9 a& M" S! F4 g8 U- K
  36.     }# s5 M( H" b# B1 Y
  37.     break;
    : b  M: J9 {- v4 i& u; }2 R7 [! u
  38. & o. N3 ~! o' P, ]' k' u
  39.     default:, \2 }2 F! n% _# r3 |
  40.     break;  
    2 R' G  `' ~8 H  n! G
  41.   }    6 Z. t! `* ~& @5 x- _# x/ X
  42.   return bitstatus;
    ! L$ n- R& _# d8 x+ z+ h9 q* [9 L9 V5 T
  43. }
复制代码

7 \1 Z* ]% _2 h编译报错如下6 a* ~8 L5 }2 ~3 R+ s

, U7 C. m7 }5 v# g% o# P8 l9 `- K
  1. ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error:  #268: declaration may not appear after executable statement in block
复制代码
, H2 U! p9 X3 |
修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。
4 N9 l6 L/ @3 r  O/ [9 j5 h$ C- p4 v4 W$ B4 M3 N
即变量的定义要在语句之前。
0 m3 x6 M* g9 C
! T9 I# O2 n! L" d: M0 ^7 B修改后的代码如下:
# T, U+ b- [* k# ~; X2 G3 \& ~* d
( N# x& s. p5 n
  1. FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
    % }- y$ h( ^1 R" J
  2. {5 x3 J. M5 y$ B) Q5 J: L9 L
  3.         FlagStatus bitstatus = RESET;
    * \1 q% _2 s/ v
  4.         $ i* S2 c/ j' u$ h6 R, }
  5.   assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));  
    * Z, b/ b6 p* L4 H* [2 _' c4 k7 N
  6. 3 a4 j+ U; T/ }5 a( d, c+ F" P
  7.   switch(TimerIdx)
    4 k# J& a; H, z% u2 u0 [( P) S, E
  8.   {
    6 Z9 j& }: h" K1 R0 N) P
  9.     case HRTIM_TIMERINDEX_MASTER:9 P1 r( |0 u+ X1 q+ d5 o
  10.     {
    ) t& X0 `: i* u+ P; C. o
  11.       if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
    8 k( V  G, D4 `4 L
  12.       {
    / H4 a  W; D  @
  13.         bitstatus = SET;
      o, |* z4 O7 X  v$ Z8 t/ k4 F
  14.       }' @5 `* O7 J: ~( r# R: X
  15.       else
    7 }5 v) y1 l: U3 v: k+ K
  16.       {
    0 B1 d1 v* E* P8 \& e
  17.         bitstatus = RESET;: L6 [% x1 T! s) P- q0 r1 F6 @
  18.       }
    ' Q- d# g/ V# t6 Q. _
  19.     }
    + q) k8 f! U  w! \) h8 w
  20.     break;
    1 Z  `( o" m. _
  21. $ o- T- `- a+ d: V, }* v
  22.     case HRTIM_TIMERINDEX_TIMER_A:6 Z, B$ y* g; _4 T( O) @
  23.     case HRTIM_TIMERINDEX_TIMER_B:
    ; P% ~/ _# [% Q# X5 |
  24.     case HRTIM_TIMERINDEX_TIMER_C:
    # G8 e# K5 `( E% ~! c
  25.     case HRTIM_TIMERINDEX_TIMER_D:5 i$ }; v. a$ N9 I2 {- c& ^- c7 Q
  26.     case HRTIM_TIMERINDEX_TIMER_E:* t( r+ u' h; Z! s
  27.     {
    7 @" g' `8 j: S! y, u9 P2 t. ^3 d0 d
  28.       if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
    ' t) S' z* d% I! @2 s  Q# y
  29.       {
    , v- S- g: F# i  j  ~4 z
  30.         bitstatus = SET;8 h7 }4 H- M$ E9 u3 A/ M' u/ o
  31.       }  e3 ~5 Y2 [, N% T3 K+ V
  32.       else( {0 J" q0 z" \% j
  33.       {
    * b" z( Z6 O% d7 P
  34.         bitstatus = RESET;
    . N# @5 w  D+ i2 D/ M5 A
  35.       }* j/ a' T/ m6 j; Y7 B) e3 b
  36.     }( R' V! K; R% Z- Q
  37.     break;
    : e, x, E/ ~% f; h3 [
  38. 5 {. p" ?9 H& h5 L. T5 v5 L
  39.     default:2 ~8 m0 `$ n' F0 A7 ^
  40.     break;  6 n# M, s: o' h* y
  41.   }   
    * L0 W5 |' F% k- u6 [
  42.   return bitstatus;
    " }  O; Z7 o1 |* H, `" S* H
  43. }4 v' S6 j# E' c/ L
  44. ( P/ V% r- Q  n' A
复制代码
4 Q9 b; s8 i' G9 M/ t
赞 收藏 评论0 发布时间:2021-12-6 10:20

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版