错误代码段如下
3 Q. F6 z% S! m
: ^+ D: i. p$ h$ ~- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
/ H+ W9 Q" s! `9 g# D$ ] - {; ^( h3 @; d7 N; }) B
- assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
, }, J/ \% b& W! L7 Y d - 1 T4 I) r7 t9 Y! z% ]" ^
- FlagStatus bitstatus = RESET; * ]% y3 o5 n x+ r$ u) V2 H
- 8 Z+ z! l$ L2 d5 ]3 y. o1 t: i
- switch(TimerIdx)' B& ~) E5 Z" u
- {
& d: _; u- E# O; [) Q - case HRTIM_TIMERINDEX_MASTER:8 c6 a1 Y5 S: s4 \7 s! J& F" [
- {
7 ^( h. k0 l# R5 D% b - if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET)
2 r7 I$ f, W: V; j I - {
4 x) k0 F% u2 L7 z/ [# r2 d( b - bitstatus = SET;
$ ?; @- `; T# J. G h) a2 W - }
* l7 D: [5 ]0 n3 l - else3 A8 D7 ]0 l ~" V! }- ?
- {+ J8 I) W6 w5 s0 q) k z
- bitstatus = RESET;6 r/ Z h( w1 T0 C5 E3 b
- }
- |: p" O6 M1 a1 Q! r - }
$ W$ D8 {; A2 J( A( @1 s' G+ y - break;4 j# Z3 j K! T) S
- 1 a0 g, V n4 y d# P. j
- case HRTIM_TIMERINDEX_TIMER_A:" F7 `9 ^0 F' r/ z+ _3 p4 o
- case HRTIM_TIMERINDEX_TIMER_B:
( Z) C- Y7 e7 n: x - case HRTIM_TIMERINDEX_TIMER_C:
; t. `) J& d: @8 e2 u - case HRTIM_TIMERINDEX_TIMER_D:4 A1 Z8 \9 s# Z6 \5 y& g+ c& m6 j; @
- case HRTIM_TIMERINDEX_TIMER_E:7 B; }* X" A9 N$ u0 d
- {
- B4 J: h) W: m - if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)
1 l( `: W6 X; ?! i4 I! h - {
( v& ?6 I# a2 i. Q4 F0 G - bitstatus = SET;
: s; }- \0 v4 |& a9 j2 h: i, a - }6 N& S" I, k( ?% i% P& S
- else) |! N1 g* P% ^$ y% T7 K+ I
- {% l: I8 P; y7 K4 m
- bitstatus = RESET;4 c+ M8 N5 j# q [
- }
# n% ~! w# c$ j: f4 A6 A$ o3 }( L- u! s/ { - }
0 o f5 Q( m( P0 Q - break;
) y# J: B/ d8 T* p - 7 T5 Z2 p: B @
- default:4 C/ f) v' l1 l8 a% f6 ?
- break; 6 J; [) s; ?3 h: g H- `
- }
+ ~3 |- m9 Q6 V* Z6 u: U y - return bitstatus;, N. z* |) z5 ]% r b. R1 Y
- }
复制代码 6 R7 d$ H7 X, q) n" o
编译报错如下
+ Y* e; e+ w4 P! ^' \" t
& v( } u! T6 J& g- ..\Libraries\STM32F30x_StdPeriph_Driver\src\stm32f30x_hrtim.c(1139): error: #268: declaration may not appear after executable statement in block
复制代码 % T. [6 f3 }: K0 F- J+ L/ W- O3 B
修改方法:需要将 FlagStatus bitstatus = RESET; 这一段代码移动至 assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));之前。
9 F8 ?; Z' f( f) d9 p
6 H9 z' Q; N! {) e即变量的定义要在语句之前。+ v5 A9 g2 F2 u& G
/ w/ z% E% a5 t" P+ M1 b. u修改后的代码如下:7 u) s8 X3 f+ e8 u
6 U" S4 ^0 P$ ?; @3 f2 r
- FlagStatus HRTIM_GetFlagStatus(HRTIM_TypeDef * HRTIMx, uint32_t TimerIdx, uint32_t HRTIM_FLAG)
7 p! v0 p0 c- U3 p& j2 X/ _: @ - {
; @( U& w! |1 u2 m# x: K9 W - FlagStatus bitstatus = RESET;
2 l" k- c5 m& o7 s S$ u8 A( p -
( v# t1 E0 o7 _6 R - assert_param(IS_HRTIM_TIMERINDEX(TimerIdx));
6 _1 T. K3 D6 }, M% r
) B& s& B) C3 i/ [* Y5 n2 ^& h& R9 f% I- switch(TimerIdx)" V+ s' \8 W! P/ e
- {% x* f+ |$ n6 y2 E' }* m
- case HRTIM_TIMERINDEX_MASTER:0 o( w, s0 f/ X7 Y- W3 P$ r
- {
5 e1 e2 O E8 w$ P+ u) a2 h2 f - if ((HRTIMx->HRTIM_MASTER.MISR & HRTIM_FLAG) != RESET): C6 c9 J' U& ~" C* a
- {
# E' E0 u8 d; g - bitstatus = SET;
1 M1 S% j8 U# g6 f0 y6 B o/ L - }/ J8 O$ j# u* X6 U" @
- else( {1 E0 X6 I6 B* m7 L
- {
8 f4 _& u) Y; v% D - bitstatus = RESET;
, s5 N' T( [( C u7 O) f - }; @7 ~7 z& W* I) }. [8 O
- }
' |, h/ {+ ~: ~( i6 K - break;
; Z. w: J8 I4 s - : c$ r6 Y3 f9 F9 H& k+ d& f
- case HRTIM_TIMERINDEX_TIMER_A:3 h& E: T! h6 M% v! M
- case HRTIM_TIMERINDEX_TIMER_B:
7 |* b, W o+ b - case HRTIM_TIMERINDEX_TIMER_C:+ e1 g/ B) K: d5 f6 N( ~
- case HRTIM_TIMERINDEX_TIMER_D:' u' @/ h4 S3 q( b
- case HRTIM_TIMERINDEX_TIMER_E:
' t) R+ m$ n/ [& W - {
! Z2 B$ u) B' a0 e' Q8 S, | - if ((HRTIMx->HRTIM_TIMERx[TimerIdx].TIMxISR & HRTIM_FLAG) != RESET)+ G, ]6 N3 p3 h! } n; U
- {" Q& `# Y9 V0 _* `& m
- bitstatus = SET;. W; m' D3 C, B) z+ s9 z) h
- }; k( L( ~) C( ~2 {+ C2 c& T
- else
; d9 ~! L. {( e# c0 {# K( |2 a0 e - {+ B8 i- c4 V8 T. |: [ [
- bitstatus = RESET;
: @0 [$ q2 U4 |$ j; m0 \ - }4 b6 m- N7 Y# n8 w$ P! S
- }9 K- X: x2 B7 p& g
- break;1 y% g, I, s# P. V
- * v% @# d) e, ?6 D
- default:
8 f. p1 I& a* B- w# d - break;
" f0 t2 @% u9 {* b1 x - } : v' J0 ^) L7 w1 F
- return bitstatus;
8 \5 B8 P. I6 a4 \7 L0 y6 [# ?+ t" S - }& l y0 W; P8 H
- " F/ L& T2 Q: T/ \ }- a
复制代码 / l. h$ g5 w5 f+ c0 p' k N# I9 z$ s
|