
Программирование встроенных приложений STM23F10xxx_Keil_uVision-4
.pdfСПБГУАП группа 4736 / https://new.guap.ru
+5 5 ( 4, (8 4( ( 4 1.
& 5, : ( ( 4 ,6 (,$49 E :.
Œ |
c- |
$ . |
b$ |
|
|
|
|
IRQ |
|
$ |
|
> |
‰ |
|
‰ > |
|
|
$7$ |
|
|
|
|
|
|
-3 |
6 |
|
0x0004 |
Reset |
|
$)+ $7$. |
-14 |
-2 |
6 |
|
0x0008 |
NMI |
|
‰$ ) |
-13 |
-1 |
6 |
|
0x000C |
HARDFAULT |
|
}7 7 + + $:. |
-12 |
0 |
|
|
0x0010 |
MEMFAULT |
|
7 + ( $ |
|
|
|
|
|
|
|
$F$F $ ). |
-11 |
0 |
|
|
0x0014 |
BUSFAULT |
|
}9 7 $ $ $] : |
|
|
|
|
|
|
|
9. |
-10 |
0 |
|
|
0x0018 |
USGFAULT |
|
†$> ) $: |
|
|
|
|
|
|
|
= ( , 0) |
-5 |
0 |
6 |
|
0x002C |
SVCALL |
|
6) $ $+ $#7). |
-4 |
0 |
|
|
0x0030 |
MONITOR |
|
8 7 $ 9 >. |
-2 |
0 |
6 |
|
0x0038 |
PENDSV |
|
} )+ $ $ $ |
|
|
|
|
|
|
|
$+$ . |
-1 |
0 |
6 |
|
0x003C |
SYSTICK |
|
c ) $ $= +. |
0 |
0 |
|
|
0x0040 |
IRQ0 |
|
|
1 |
0 |
|
|
0x0044 |
IRQ1 |
|
6 9 ), ) |
2 |
0 |
|
|
0x0048 |
IRQ2 |
|
|
3 |
0 |
|
|
0x004C |
IRQ3 |
|
# = |
|
|
|
|
|
|
|
STM32F10xxx |
|
|
|
. . |
|
|
||
66 |
0 |
|
|
0x0140 |
IRQ66 |
|
|
67 |
0 |
|
|
0x014C |
IRQ67 |
|
|
^ 8( (: 1. $) ) $ : ) $)
$ = > .
2.$) 9 ) $ ) = 7) > ) () > )) $ = ) 7$>, ] # 7) % ] 0 – 15. Ž # = 7) 7• ) = ), F )+ .
3.) )$9 $>$ “-3”, $) “15”.
` ,( ( (8 48 ( 4 18 10 8 Cortex-M3.
c$ $7$ $ $)] ) + 0. d 7) = ,
7] $ # = $ $F ) =$
SCB_SHPRx (C .”G ” SSB_AIRCR{PRIGROUP]):
|
|
|
$ ) |
G |
||
|
‰ |
|
‰ > |
8 =$ |
|
ˆ ) |
|
|
|
|
|
|
$$ |
|
MEMFAULT |
|
7 + . |
SCB_SHPR1 |
|
SHP[0] [7:4] |
|
BUSFAULT |
|
}9 7 $] : 9. |
|
|
SHP[1] [7:4] |
|
USGFAULT |
|
†$> $: =. |
|
|
SHP[2] [7:4] |
|
SVCALL |
|
6) $ $+ $#7) |
SCB_SHPR2 |
|
SHP[7] [7:4] |
|
PENDSV |
|
.$ $ $ $+$ . |
SCB_SHPR3 |
|
SHP[10] [7:4] |
|
SYSTICK |
|
c ) $ $= +. |
|
|
SHP[11][7:4] |
^ 8( (: 1. c 0 O ] ) + $)+ )$9 +, 15 – $)+ +. 2. q 9 ) PRI_x[3:0] STM32F10xxx $ $ .
47

СПБГУАП группа 4736 / https://new.guap.ru
SCB->SHCSR (O() E ,( 1 1 1 (8 49 ( 4) $
$ $7$ - 0x0000 0000. ˆ ) $) > $ .
ˆ |
‰ |
|
‰ > |
|
|||
0 |
MEMFAULT |
1: 6 )+ ) . . $ “0” |
|||||
|
ACT |
) = ). |
|
|
|||
1 |
BUSFAULT |
|
|
- // - |
|
|
|
|
ACT |
|
|
|
|
|
|
2 |
- |
8 |
|
|
|
|
|
3 |
USGFAULT |
|
|
- // - |
|
|
|
|
ACT |
|
|
|
|
|
|
4-6 |
- |
8 |
|
|
|
|
|
7 |
SVCALL |
|
|
- // - |
|
|
|
|
ACT |
|
|
|
|
|
|
8 |
MONITOR |
|
|
- // - |
|
|
|
|
ACT |
|
|
|
|
|
|
9 |
- |
8 |
|
|
|
|
|
10 |
PENDSV |
|
|
- // - |
|
|
|
|
ACT |
|
|
|
|
|
|
11 |
SYSTICK |
|
|
- // - |
|
|
|
|
ACT |
|
|
|
|
|
|
12 |
USGFAULT |
1: 6 )+ ) ) #. |
|||||
|
PENDED |
.$ “0” > ). |
|||||
13 |
MEMFAULT |
|
|
- // - |
|
|
|
|
PENDED |
|
|
|
|
|
|
14 |
BUSFAULT |
|
|
- // - |
|
|
|
|
PENDED |
|
|
|
|
|
|
15 |
SVCALL |
|
|
- // - |
|
|
|
|
PENDED |
|
|
|
|
|
|
48

СПБГУАП группа 4736 / https://new.guap.ru
16 |
MEMFAULT |
0: c ) F. |
|
ENA |
1: c ) MEMFAULT 9. |
17 |
BUSFAULT |
0: c ) F. |
|
ENA |
1: c ) BUSFAULT 9. |
18 |
USGFAULT |
0: c ) F. |
|
ENA |
1: c ) USGFAULT 9. |
19-31 |
- |
8 |
SCB->ICSR (O() E ,( 1 ( 4 18)
‰ |
‰ > |
7 |
|
NMI |
1: } # ) $ ) NMI, $ , |
PENDSET |
$ )$ F + . (c > “1” >, |
|
> ) ) NMI #.) |
|
0: •** . |
PENDSV |
1: } # 7 7 ) PENDSV. |
SET |
0: •** . |
PENDSV |
1: } 7 7 ) PENDSV, ] F =$ >. |
CLR |
0: •** . |
PENDST |
1: } # 7 7 ) SYSTICK. |
SET |
0: •** . |
PENDST |
1: } 7 7 ) SYSTICK, ] F =$ >. |
CLR |
0: •** . |
ISR |
0: ‰ # )] ) +. |
PENDING |
1: t$ # ) ). |
|
^ 8( (: • * = $ $ $ ), $) $ |
|
9 7 xFAULT ( IRQ= -10 IRQ= -13). |
VECTOR |
6 # = ) $ $) )$ , . . |
PENDING |
), 7 )$ $ F =. t$ |
[9:0] |
VECTORPENDING[9:0]=0x000000000, # )] ) +. |
RETOBASE |
0: 6$ ) 7 7 ). |
|
1: t$ 7 7 ) ), # $ # 7 7 )$ |
|
$ ) ]$ 7 7. |
VECTOR |
6 = ). d 7) = IRQ ($ . |
ACTIVE |
“Ž 7 : ) + $> )] $: +”), |
[8:0] |
O + > ) )>$ 16. |
|
t$ VECTORACTIVE[8:0]=0]000000000, )+ |
|
)] ) +. |
^ 8( (: d 7) > + > VECTORxxx Œ IRQ ($ . “Ž 7 :
) + $> )] $: +”), O + > ) )>$ 16 .
49

СПБГУАП группа 4736 / https://new.guap.ru
SCB->AIRCR (O() E ,( 1 ( 4 18 ) 88 ) 5)
‰ 7 |
‰ > |
*KEY*[31-16] |
r > $ =$ . d$ 0xFA05. d 7) > |
|
$ |
|
r $ =$ , 7] $ 0x05FA. |
ENDIANESS |
c $ > F ] $ ): |
|
0: c ) % 9 + 7. |
|
1: c ) % $9 + 7. |
PRIGROUP |
G $> +. } >$ |
|
= =. ( . #) |
SYSRESETREQ |
1: c = )+ $7$. |
VECTCLRACTIVE |
. ) . d$ “00”. c |
VECTRESET |
) $ “1” $ . |
u E ( (,( PRIGROUP).
6$ ) 7• ) = ). < # + = ) $ $+
, . . = + . 6 $ > = ) = $ $
= ), > F ) $ ) + = ). c PRIGROUP : > + >, F + PRI_x (IPx)
=$ ) + SCB->SHPRx (NVIC->IPRx) –
= ) = ).
|
c # + > PRI_x[7:4] |
}7F |
|||
PRIGROUP |
c # >, |
ˆ ) 7 > F |
>$ |
||
|
F + . |
= ) |
= ) |
= |
= |
011 |
G G G G |
[7:4] |
|
16 |
|
100 |
G G G . c |
[7:5] |
[4] |
8 |
2 |
101 |
G G . c c |
[7:6] |
[5:4] |
4 |
4 |
110 |
G . c c c |
[7] |
[6:4] |
2 |
8 |
111 |
c c c c |
|
[7:4] |
|
16 |
50

СПБГУАП группа 4736 / https://new.guap.ru
SCB->VTOR (O() 8(7( 1 5, :4 ( ( 4)
6 TBLOFF $ $ $F 7 :) ) +. ˆ TBLBASE
$ ] # 7 :) ) + : TBLOFF=”0” – Code ( =).
TBLOFF=”1” – SRAM (}.Š).
SCB->CCR (O() E ,( 1 :( 8 ( (9 0 (P 8 ( 4 1)
‰ 7 |
‰ > |
STKALIGN |
$7 ) $ ] ) |
|
)]: |
|
0: = : 4 7 +. 1: = : 8 7 +. |
BFHFNMIGN |
< +$ $ 9 7 7 > ) + |
|
$ -1 -2. |
|
0: c :$$ 7$ . |
|
1: †= . |
|
^ 8( (: • 7 $ $ |
|
+ $>, $ $) 7 7 > ) |
|
]$ 7$+ 7$ , , |
|
$+$ / ) |
DIV_0_TRP |
a $ ) 0. |
|
0: .. |
|
1: 8 9 ) ) USGFAULT. |
|
^ 8( (: t$ 7 $ , >$ |
|
0 7 $ ) 0. |
UNALIGN_TRP |
a $ ) ) |
|
$ ). |
|
0: .. |
|
1: 8 9 ) ) USGFAULT. |
USERSETMPEND |
<$ =$ ) = )] ) +. |
|
0: .. |
|
1: 8 9 $ =$ NVIC->STIR. |
NONBASETHRDENA |
c ] :$$ # “Thread mode” (8 7 $ OC). |
|
0: 8 9, $ )] ) +. |
|
1: 8 9 7 7 > ) 7 = . |
51
СПБГУАП группа 4736 / https://new.guap.ru
+5 5 ' 5.
< =, > 7) > >, ) 9 ) 7 7 9 7 (xFAULT), $ 7$ $# =$ , 7 # F ] > ) 9 7
(SCB->SFSR, SCB->), , , 7 $ Keil uVision = =$>$ 9 7, $) $ .
,,( , P( 49 ( / 49 ( 4 NVIC.
r # )] )] ) + 7$>:
-# 81-= 9 = ) (STM32F10xxx – 68);
-* $= ) NMI;
-)7 * ) $= $ ) ( $ );
-$ 0 15 # )
()$9 $>$ ) $ 0); - ) + = $ ) , =
=, # F $+ = ) ;
->$ );
-> = 7 7 > ) = 7 $$
$ .
6 : ] )9 O**$ 7 = = 7$> CMSIS
$ F )+ $ =$ ) + NVIC: =$)
9, , $ $7$ $ $ # ) +, #
=$) )] ) + 7 #$ $$) 32-)] : )] >$ ,
:
-O ) $$ ISER[0] - ISER[2] $ $ =$ ISER0 – ISER2;
-O ) $$ ICER[0] - ICER[2] $ $ =$ ICER0 – ICER2;
-O ) $$ ISPR[0] - ISPR[2] $ $ =$ ISPR0 – ISPR2;
-O ) $$ ICPR[0] - ICPR[2] $ $ =$ ICPR0 – ICPR2;
-O ) $$ IABR[0] - IABR[0] $ $ =$ IABR0 – IABR2; 8-7 ) =$ ) + 7 #$ $$ 8-)]
: )] >$ , :
$$ IP[0]...IP[67] $ $ =$ IPR0-IPR16, > O $$
IP[n] $ $ ) $ n.
O (0(,( ( ( 4 ( (8( 49 ( 4 1:
Œ |
|
Œ |
|
• ) $$ CMSIS* |
|
|
||
IRQ |
|
7 |
8 9 |
. |
} # |
Š |
c |
|
|
$$ |
) |
) |
) |
> |
$ |
||
0-31 |
0-31 |
ISER[0] |
ICER[0] |
ISPR[0] |
ICPR[0] |
IABR[0] |
||
32-63 |
0-31 |
ISER[1] |
ICER[1] |
ISPR[1] |
ICPR[1] |
IABR[0] |
||
64-67 |
0-3 |
ISER[2] |
ICER[2] |
ISPR[2] |
ICPR[2] |
IABR[0] |
||
|
|
|
|
|
|
|||
|
|
|
^ 8( E ,( 1 ( 4 18 Keil: |
|
|
|||
|
|
NVIC->ISER[0] |= 0x00000001; // O / ('$ 0. |
|
|
|
|||
|
|
NVIC->ISER[1] |= 0x00000002; // O / ('$ IRQ33. |
|
|
||||
|
|
NVIC->ICER[0] |= 0x00000002; // S ($ ( 4 ( IRQ1. |
|
|
||||
|
|
|
|
|
|
|
|
|
52

СПБГУАП группа 4736 / https://new.guap.ru
NVIC->ISER9 (O() / ('( 1 ( 4)
d: “0” – ) F, “1” – ) 9.
.$ : “0” – ) O**, “1” – 9 ).
NVIC ->I.ER9 (O() / (7( 1 ( 4)
d: “0” – ) F, “1” – ) 9.
.$ : “0” – ) O**, “1” – F ).
NVIC ->ISPR9 (O() ( ( 0 5 5 4 (8 ) ( 4 1 ( (0$)
d: “0” – ) >, “1” – ) ]$ >.
.$ : “0” – ) O**, “1” – ) >.
NVIC ->I.PR9 (O() E0 ,( 1 ( 4 1 / ( (0)
d: “0” – ) >, “1” – ) ]$ >.
.$ : “0” – ) O**, “1” – ) >.
NVIC ->IABR9 (O() 49 ( 4)
d: “1” – ) $ ) ]$ >.
53

СПБГУАП группа 4736 / https://new.guap.ru
NVIC ->IPR9 (O() E ( ( 4 1)
^ 8( E ( ( 4 1 Keil:
NVIC->IP[0] |= 0xB0; // `$ ( 11 0,1 IRQ0.
NVIC->IP[17] |= 0x50; // `$ ( 5 0,1 IRQ17.
NVIC ->STIR (O() ) 88 ) 4/ ( 4)
< = = ) ) $ $ O =$ Œ IRQ. <$ ,
) ) IRQ3 7] $ 0x03.
^ 8( (: d 7) > $ = ) ) + $
$ 7 SCB->CCR[USERSETMPEND]=1.
,,( (' 9 ( 4 / 54 EXTI.
54

СПБГУАП группа 4736 / https://new.guap.ru
EXTI->IMR (O() 8 (' 9 ( 4)
0: $ $F EXTI-) F. 1: $ $F EXTI-) 9.
EXTI->EMR (O() 8 (' 9 54)
0: $ $F EXTI-$7) F. 1: $ $F EXTI-$7) 9.
55

СПБГУАП группа 4736 / https://new.guap.ru
EXTI->RTSR (O() 45 5 4 1 ( 4 1 / 54 1 D E)
0: ) ) / $7) * $= $ $F + F%. 1: ) ) / $7) * $= $ $F + 9%.
EXTI->FTSR (O() 45 5 4 1 ( 4 1 / 54 1 0E)
0: ) ) / $7) $ $= $ $F + F%. 1: ) ) / $7) $ $= $ $F + 9%.
EXTI->SWIER (O() ) 88 ) 4/ ( 4 1 / 54 1)
0: O** .
1: = )+ ) ) / $7).
^ 8( (: 7$ “0” $F$ $ $ “1” $ $F +
=$ EXTI->PR.
EXTI->PR (O() 5 ( E7() ( 4 1 / 54 1)
0: O** .
1: $7$ $ ) (= = 9 =, $9 =
$ $F + ).
56