错误代码段如下
( U8 B9 C2 n& T1 i3 m7 r2 I V& q/ o- {0 h
- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
* C- `2 M7 s5 ] - { {4 H8 n$ D" ^- }
- assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
4 Z5 S& f+ H9 z4 D - + u, W/ \4 [) ^; e8 y
- FlagStatus bitstatus = RESET;
2 P" d3 D1 @; R
% E# I [9 n* y- @1 ~8 ?, t: C5 c, n- switch(TimerIdx)/ J. b* h& T6 {% b6 K
- {+ W9 Z% L# O/ z4 I( y' t
- case HRTIM_TIMERINDEX_MASTER:2 d5 U1 _ } G4 g7 V
- {1 h; g- t% f- s- J; @8 c* M
- if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
/ A4 \7 i2 b" O3 N0 K: x" \ - {
& ^2 B$ Z, q( n2 ?) ]8 _ - bitstatus = SET;
: i& M1 D* A7 N* S - }( N" h$ _1 c, K$ }# j. L/ s
- else
0 }* ~6 p9 ]4 |+ v5 x: O, O, X - {" f# F8 I. v6 t' ~) [5 H2 r. u
- bitstatus = RESET;
1 P$ E; U+ r( r: Q8 y/ ~. V - }2 O3 b' O) _* w. F" M1 N/ W2 t
- }
! D4 k# e/ L! i* M4 [* ] - break;
1 e& z+ N' }; Q
# ]% y. Q9 b+ Y5 [6 W- case HRTIM_TIMERINDEX_TIMER_A:, `0 _8 f3 E5 c
- case HRTIM_TIMERINDEX_TIMER_B:9 W \+ T! T+ Y! P: \4 e* V
- case HRTIM_TIMERINDEX_TIMER_C:
3 v# s' K: h3 a0 p9 ~% A% n - case HRTIM_TIMERINDEX_TIMER_D: i: o/ f( _' \. p8 ~
- case HRTIM_TIMERINDEX_TIMER_E:- F! s1 m* s: S
- {' d8 A0 r' N' l b$ W+ ?0 Y/ b
- if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)/ {' F0 j% m ?) u
- {
" s( N; |0 O+ K - bitstatus = SET;
% z9 R% Z! M& h6 z6 @' |1 B2 | - }
! K) q+ W5 }5 h" @' S - else
+ P+ V/ g* a# R$ s - {
9 j& i4 ?6 Z: I! e$ h# Z - bitstatus = RESET;
6 S5 R' [& F: o1 E4 A4 `3 E9 B - }4 p6 k) |9 f. k% d! x: L/ ^ ?5 A
- }, ^( I3 S# K) A0 a4 j; ^
- break;
4 h& g0 a7 D1 w
" v7 K. k/ F1 O/ _$ }$ l, Q+ G- default:& U, u8 L2 k) k( O2 K! E' W5 O2 ]
- break; 5 i" `1 k y! L$ {/ n
- } ' b8 T+ g/ E6 w% n0 [
- return bitstatus;' A* | D, E& F3 ^( q
- }
复制代码
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* [
- ..\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- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)7 s: V ?, o) h1 T. L; |
- {
- x, x" d% h2 E$ n' V, q' o2 m - FlagStatus bitstatus = RESET;/ ~2 F }" K, _
-
. L/ N3 `7 U1 t# [3 D5 ~4 t - assert_param(IS_HRTIM_TIMERINDEX(TimerIdx)); ' O7 v {9 _) C$ [& V8 H- \
- & p. m% e3 p$ A. R
- switch(TimerIdx)
/ C: p u9 x& O% ~& a8 J - {
! \4 ?+ G7 U6 C( k/ h& c; \ ] - case HRTIM_TIMERINDEX_MASTER:
) e3 B t$ O& N1 X# |. @6 \ - {( A( k4 L+ b$ Z' r5 P, T( {
- if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)8 \* |- T" ~. B6 d0 C- |5 W
- {
4 a, g# e/ E1 r4 z - bitstatus = SET;3 {9 Y9 a" J0 y* J$ E: N
- }9 r* }& }! b) E9 [
- else
8 x& A ]" n+ m - {
% R! ^, H% V' ]" W - bitstatus = RESET;
; }+ y- Z/ W+ I - }
; B& Y# f) u- u A - }
& v; C/ R" s+ ]# c0 D( l! ^ - break;9 i C2 p% j- j$ e" m6 S( K
- 4 [: f& @# M& K# H2 N6 ?: |3 @
- case HRTIM_TIMERINDEX_TIMER_A:; M) `$ _/ M# F. Y, p
- case HRTIM_TIMERINDEX_TIMER_B:! F+ L- l" _# r. }3 I) C- c; w
- case HRTIM_TIMERINDEX_TIMER_C:
5 j: n0 E) |7 o/ D# O2 J! r - case HRTIM_TIMERINDEX_TIMER_D:
+ N7 u3 ?+ x7 h' s7 Y, O - case HRTIM_TIMERINDEX_TIMER_E:
; L' G4 i6 k J2 s B - {
! ^% W2 E" B1 |2 v& J - if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
}% A7 G1 @/ E8 ^. _7 v - {
4 M& x) I5 V) H" b0 K1 D$ ^ - bitstatus = SET;
4 d/ A! M: _' ]7 s - }
* p+ g! p2 I% ]& |" e5 Q- I% b - else
6 S4 ^& Z% i8 G1 [ {$ P - {
7 ?( T: E4 j; R+ A8 @! q) C& X - bitstatus = RESET;
! t, k+ S2 D6 }% b+ \ - }& ^8 M/ h4 R$ Q4 v0 y
- }
r! P9 O3 n% [ - break;
% y7 }; H4 ^! _4 V0 B/ X) r
- e: y2 T8 b: x9 E$ ?9 a; ~- default:; M4 m* |; ^8 i* z7 F# U
- break; , h8 J# k+ G" Q) x. o, W* {
- } 7 [# ~, a3 y D* N7 }1 C! c0 U$ [
- return bitstatus;7 I6 _6 \6 B# x* h
- }
5 p$ j& {+ {, Q6 U* c" i - . H- ^% Z. y8 `! s3 {# e0 v) `/ ^$ h% O
复制代码 , E. Z: k" J; Q8 [* c7 `8 v& r
|