错误代码段如下
- o$ ]: ?# b( T. C1 o4 }0 B6 T7 p
4 i! }0 b( t6 e- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
( v2 e& r% v q' y$ @4 Y - {: k2 N X7 T4 O. o. D
- assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));# _! v Y9 E0 `6 |# y# x2 z
- / t* M* r2 s4 b* U' l+ `7 U: B
- FlagStatus bitstatus = RESET; 3 R5 e- P9 u( L! Q7 O
- ) {' Y7 j' |, @* X2 R# {
- switch(TimerIdx)% b/ l ]0 w8 B# @. ~( q
- {
5 d9 K* r6 L1 Z5 G' M3 L - case HRTIM_TIMERINDEX_MASTER:
p' q+ D+ y+ e8 [ - {
/ u) L: Q& i6 ~- a% e - if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)# B, s+ K0 J9 ?' a7 S) m( u
- {
/ R0 Y1 g8 t* {$ L. } - bitstatus = SET;- b- s, W5 A) q" k/ B
- }
7 J. B- f0 n x( K - else& D, K! h- i6 F4 s
- {7 H, s$ }# D3 l7 Y9 q# x: `
- bitstatus = RESET;+ V; V( n$ s0 n& J. q
- }6 R* ], s. P7 H5 {- O8 G) C$ i) B
- }
L! T _7 j4 _4 Z, K& |% P - break;
7 F2 h4 L! c8 n7 y0 Z$ j. w - J- {7 f; X0 o, u6 ^
- case HRTIM_TIMERINDEX_TIMER_A:
9 ^4 A4 P# Z/ N& i+ g- L- T. b - case HRTIM_TIMERINDEX_TIMER_B:
1 p6 ^6 V( F/ h. Q6 B$ L - case HRTIM_TIMERINDEX_TIMER_C:
2 p0 N% t% {1 k, b" g ?2 W - case HRTIM_TIMERINDEX_TIMER_D:* j% `' J. D0 w5 M! c
- case HRTIM_TIMERINDEX_TIMER_E:
2 }* F! @8 M4 D, p- P1 o - {
- y2 L4 u: G4 d - if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
! {# K6 @1 C0 Y& O7 X - {
8 f! U* I7 f( x3 e( m - bitstatus = SET;8 o) f2 R6 T1 N0 B
- }, O @9 o, F/ a* ^: G* G2 j
- else
5 y, g' y$ D/ n) n% L* L) W, k - {
' S' u( H$ }! A - bitstatus = RESET;# x) J* C% z* g! x' I& V/ t
- }2 _9 a& M" S! F4 g8 U- K
- }# s5 M( H" b# B1 Y
- break;
: b M: J9 {- v4 i& u; }2 R7 [! u - & o. N3 ~! o' P, ]' k' u
- default:, \2 }2 F! n% _# r3 |
- break;
2 R' G `' ~8 H n! G - } 6 Z. t! `* ~& @5 x- _# x/ X
- return bitstatus;
! L$ n- R& _# d8 x+ z+ h9 q* [9 L9 V5 T - }
复制代码
7 \1 Z* ]% _2 h编译报错如下6 a* ~8 L5 }2 ~3 R+ s
, U7 C. m7 }5 v# g% o# P8 l9 `- K- ..\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- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
% }- y$ h( ^1 R" J - {5 x3 J. M5 y$ B) Q5 J: L9 L
- FlagStatus bitstatus = RESET;
* \1 q% _2 s/ v - $ i* S2 c/ j' u$ h6 R, }
- assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
* Z, b/ b6 p* L4 H* [2 _' c4 k7 N - 3 a4 j+ U; T/ }5 a( d, c+ F" P
- switch(TimerIdx)
4 k# J& a; H, z% u2 u0 [( P) S, E - {
6 Z9 j& }: h" K1 R0 N) P - case HRTIM_TIMERINDEX_MASTER:9 P1 r( |0 u+ X1 q+ d5 o
- {
) t& X0 `: i* u+ P; C. o - if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
8 k( V G, D4 `4 L - {
/ H4 a W; D @ - bitstatus = SET;
o, |* z4 O7 X v$ Z8 t/ k4 F - }' @5 `* O7 J: ~( r# R: X
- else
7 }5 v) y1 l: U3 v: k+ K - {
0 B1 d1 v* E* P8 \& e - bitstatus = RESET;: L6 [% x1 T! s) P- q0 r1 F6 @
- }
' Q- d# g/ V# t6 Q. _ - }
+ q) k8 f! U w! \) h8 w - break;
1 Z `( o" m. _ - $ o- T- `- a+ d: V, }* v
- case HRTIM_TIMERINDEX_TIMER_A:6 Z, B$ y* g; _4 T( O) @
- case HRTIM_TIMERINDEX_TIMER_B:
; P% ~/ _# [% Q# X5 | - case HRTIM_TIMERINDEX_TIMER_C:
# G8 e# K5 `( E% ~! c - case HRTIM_TIMERINDEX_TIMER_D:5 i$ }; v. a$ N9 I2 {- c& ^- c7 Q
- case HRTIM_TIMERINDEX_TIMER_E:* t( r+ u' h; Z! s
- {
7 @" g' `8 j: S! y, u9 P2 t. ^3 d0 d - if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
' t) S' z* d% I! @2 s Q# y - {
, v- S- g: F# i j ~4 z - bitstatus = SET;8 h7 }4 H- M$ E9 u3 A/ M' u/ o
- } e3 ~5 Y2 [, N% T3 K+ V
- else( {0 J" q0 z" \% j
- {
* b" z( Z6 O% d7 P - bitstatus = RESET;
. N# @5 w D+ i2 D/ M5 A - }* j/ a' T/ m6 j; Y7 B) e3 b
- }( R' V! K; R% Z- Q
- break;
: e, x, E/ ~% f; h3 [ - 5 {. p" ?9 H& h5 L. T5 v5 L
- default:2 ~8 m0 `$ n' F0 A7 ^
- break; 6 n# M, s: o' h* y
- }
* L0 W5 |' F% k- u6 [ - return bitstatus;
" } O; Z7 o1 |* H, `" S* H - }4 v' S6 j# E' c/ L
- ( P/ V% r- Q n' A
复制代码 4 Q9 b; s8 i' G9 M/ t
|