
Программирование встроенных приложений STM23F10xxx_Keil_uVision-4
.pdf
СПБГУАП группа 4736 / https://new.guap.ru
<(/ 84 P( 8( IWDG.
‰$)+ $# + + $ $+ $ $) qr STM32. } $# $ $]$ $)
>$) = (LSI).
IWDG->KR (O() ,6)
r > |
< +$ , ) ) $ > |
0 x 0000 AAAA |
7$ (=) IWDG |
0 x 0000 5555 |
} ) $ * : =$ |
|
IWDG_PR IWDG_RLR |
0 x 0000 CCCC |
.$ IWDG |
IWDG->PR (O() (0 (,$) 0(,( 1 4)
000: fIWDG = fLSI /4 |
001: fIWDG = fLSI /8 |
010: fIWDG = fLSI /16 |
011: fIWDG = fLSI /32 |
100: fIWDG = fLSI /64 |
101: fIWDG = fLSI /128 |
110: fIWDG = fLSI /256 |
111: fIWDG = fLSI /256 |
> ), > >$ fLSI # $ 32 40 G:
IWDG->RLR (O() ( (/ ) E/ T P( ) 8()
RL[11:0] – >, = # $>% > + $ =$ IWDG->KR
> 0 x 0000 AAAA. ( >% > $# = + 7 9, . .
)>.)
IWDG->SR (O() E IWDG)
ˆ Œ 0 1 $ $ $7$)$ ) $ $ .
37

СПБГУАП группа 4736 / https://new.guap.ru
Œ 7 |
‰ |
‰ > |
0 |
PVU |
1: r : =$ ) IWDG->PR |
1 |
RVU |
1: r : =$ ) IWDG->RLR |
• 7 ) = $ $ , $ :$$ 7 ) 7] >
IWDG->PR IWDG->RLR. }, ] 7. 6 |
$ Keil-4 |
|
|
#$ . |
|
|
|
|
|
|
|
void IWDG_Tim(void) // c $# = + 1,0 $ . |
|
|
|
{ |
// 8 9 $] : F F% + 7$ BKP. |
|
|
|
|
|
|
|
RCC->APB1ENR |= RCC_APB1ENR_BKPEN; // 0x08000000. |
|
|
/* |
// 6 > = LSI.. O 5 ( 5(/ L ) 5,. |
|
|
|
RCC->CSR |= RCC_CSR_LSION;// 0x00000001 |
|
|
|
// }# > = LSI. |
|
|
|
while((RCC->CSR & RCC_CSR_LSIRDY)==0); // 0x00000002. |
*/ |
|
|
// 8 9 $ * : IWDG_PR IWDG_RLR |
|
|
|
IWDG->KR=0x00005555; |
|
|
|
// r O*. = =256. |
|
|
|
IWDG->PR=0x00000006; |
|
|
|
// c = # > 156. |
|
|
|
IWDG->RLR=156; |
|
|
|
// .$ $# + +. |
|
|
} // |
IWDG->KR=0x0000CCCC; |
|
|
----------------------------------------------------- |
|
|
|
int main(void) |
|
|
|
{ |
int a= 2000000; |
|
|
|
|
|
|
// |
SystemInit (); // < STM32F100 . |
|
|
|
InitAll(); // ‰$+ . |
|
|
|
IWDG_Tim(); // c $# = + 1,0 $ . |
|
|
|
while(1) |
|
|
|
{ |
|
|
|
if(a>0) |
|
|
|
{ |
|
|
|
GPIOA->BSRR =GPIO_BSRR_BR8; // PA8="0". |
|
|
|
a--; |
|
|
|
IWDG->KR=0x0000AAAA; // c = $# = +. |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
GPIOA->BSRR =GPIO_BSRR_BS8; // PA8=+3,36.
//‰ = $# = +, >
//= $+ $ $).
}
}
}
38

СПБГУАП группа 4736 / https://new.guap.ru
+ 4 P( 8( WWDG.
} )+ $# + + $ >$ $+ $ $) qr STM32 $ $ $= $] : + 9 ) PLCK1. c $ WWDG
7] 9 = $] ::
RCC->APB1ENR |= RCC_APB1ENR_WWDGEN; // 0x00000800
} )+ $# + + $ $9 + $+ : =
$= $# = +. c$ :, $# + + > $> 7 = $7$ $ $ $> > $ 0x40 0x3F, . . = $7$)$ 7 T6, # $ $ $> 7, . = $# WWDG_CR[T6-T0] 7 9 $# =
WWDG_CFR[W6-W7].
} )+ $# + + $ $7 + 6-7 )+ )> F + $> >,
)+ $]$ $= PCLK1 > 12-7 )+ )+
( >$ PCLK1 4096). Š = $ 2 )]
7, ) # = +9 = >$)
1, 2, 4 8. • 7 ) ]$ 6 7 ] =$ WWDG_CFR.
Ž 7, $7 ) = $# = + $
) #:
Twwdg = Tpclk1 x 4096 x 2^(WDGTB) x (( (/ ) EP (8 ( / ( ( – 0x3F)
39
СПБГУАП группа 4736 / https://new.guap.ru
WWDG->CR (O() E ,( 1 WWDG) $ $ $7$ - 0x00, 7 7 (WDGA) $ $ “1”, $) $) > $ .
ˆ |
‰ |
‰ > |
0 |
T0 |
>% > $# = +. |
1 |
T1 |
6 >, + $ )>. |
2 |
T2 |
c ] $ $ 0x40 $ $ 0x3F *$ |
3 |
T3 |
$7$. c ) $> + $ , . . = |
4 |
T4 |
WWDG_CR[T6-T0] > WWDG_CFR[W6-W0] 7 # |
|
|
$* $7$. |
5 |
T5 |
|
6 |
T6 |
|
7 |
WDGA |
1: $ WWDG. }$ #. |
8-31 |
- |
8 |
WWDG->CFR (O() D )E : WWDG) $ $ $7$ - 0x00, 7 9
(EWI) |
$ $ “1”, $) $) > $ . |
|
ˆ |
‰ |
‰ > |
0 |
W0 |
6 ] = : 7. |
1 |
W1 |
|
2 |
W2 |
|
3 |
W3 |
|
4 |
W4 |
|
5 |
W5 |
|
6 |
W6 |
|
7 |
WDGTB0 |
< )+ )+ >$) |
8 |
WDGTB1 |
$] : 1, 2, 4, 8. |
9 |
EWI |
1: 8 9 ) $# $>% > > |
|
|
0x4F. (t$ 7 $>% > 7 ), |
|
|
$# > 0x3F $% + % $7$.) |
10-31 |
- |
8 |
WWDG->SR (O() 1 1 WWDG) $ $ $7$ - 0x00, 7 0 (EWIF)$ > $ “0”.
ˆ |
‰ |
‰ > |
0 |
EWIF |
a = ). Š$ $ “1” ( $ |
|
|
9 ) $# > 0x40), |
|
|
$7$)$ “0” =. |
1-31 |
- |
8 |
S 7 7T 1 5,$ 81 BKP.
6 $ $ $ 16-7 )] =$ ( $9 ]
] ] =$ 42), ) * : O =$
$>$ }.Š. ‘ F$ ] ) # $ , =, $ “1”RCC->BDCR[BDRST], , $ ] 9 =
9$ (TAMPER / RTC / PC13). 6 ] + 7 )
= >$= O ] $ $7) 7 #
9$ , > ) >$ =$ $ . Ž # #
40

СПБГУАП группа 4736 / https://new.guap.ru
), qr ) F ) +$
7 # 9$ .
c > $ F F% + 7$ 7] 9
$] : % 9 ):
RCC->APB1ENR |= RCC_APB1ENR_BKPEN; // 0x08000000
< 7] 9 $ BKP RTC:
PWR->CR |= PWR_CR_DBR; // 0x0100
t$ $ $ $ $# BKP RTC, :$7
+9 $ :
PWR->CR &= ~PWR_CR_DBR; // 0xFEFF
BKP->DRx (S 7 7T 4( () 4 0 49) (x=1 - 42) 8 =$) > )
] $] )], ) 7]$ = 7) > # ).
BKP->RTCCR (O() , 5 ( ,$) (8() $ $ $7$ - 0x0000, 7 ) $) > $ .
ˆ |
‰ |
‰ > |
0 |
CAL0 |
6 > 7 >$ = RTC. |
1 |
CAL1 |
• > ) >$ $ , ) 7 |
2 |
CAL2 |
= ) 2²º $ $] : |
3 |
CAL3 |
>$ . |
4 |
CAL4 |
|
5 |
CAL5 |
|
6 |
CAL6 |
|
7 |
CCO |
6)] 7 >$ . |
|
|
0: ‰ O**. |
|
|
1: ‰ ) TAMPER $ $ >$+ $ |
|
|
fRTC_clk / 64. |
8 |
ASOE |
Š )] 7 $ . |
|
|
0: ‰ O**. |
|
|
1: 6 $ $ $ $ 7 ASOS )] TAMPER |
|
|
+$ $ 7 (1 $ ) $) $). |
9 |
ASOS |
6)7 $= ( $ $ 7 ASOE). |
|
|
0: ˆ. |
|
|
1: ) $). |
10-15 |
- |
8 |
BKP->CR (O() E ,( 1 BKP) $ $ $7$ - 0x0000, 7 ) $)
> $ .
ˆ |
‰ |
‰ > |
0 |
TPE |
6)7 = ] = $= O$= $7$ |
|
|
F F% )] =$ TAMPER. |
|
|
0: c TAMPER=”1” $] $7$ F F% )] =$ . |
|
|
1: c TAMPER=”0” $] $7$ F F% )] =$ . |
1 |
TPAL |
8 9 $ ] TAMPER O$= $7$ |
|
|
F F% )] =$ . |
41
СПБГУАП группа 4736 / https://new.guap.ru
|
|
0: . F $ ] TAMPER O$= $7$ |
|
|
F F% )] =$ . (‹ TAMPER / PC13 $ $ |
|
|
$] RTC / ).) |
|
|
1: †$ TAMPER O$= $7$ |
|
|
F F% )] =$ BKP->DRx. |
2-15 |
- |
8 |
BKP->CSR (O() E ,( 1 E BKP) $ $ $7$ - 0x0000, 7 )
9 (TIF) 8 (TEF) $) >, 7 ) 1 (CTI) 0 (CTE) –
$ , 7 2 (TPIE) $ >, $ .
ˆ |
‰ |
|
‰ > |
|
|||
0 |
CTE |
1: 7$ * = TEF () TAMPER). |
|||||
1 |
CTI |
1: 7$ * = TIF ($7) TAMPER). |
|
||||
2 |
TPIE |
8 9 ) TAMPER. |
|
|
|
||
|
|
0: c ) F. |
|
|
|
|
|
|
|
1: c ) TAMPER 9. |
|
|
|||
3-7 |
- |
8 |
|
|
|
|
|
8 |
TEF |
a = $7) TAMPER. Š$ $ |
|||||
|
|
7 # = ] TAMPER, $7$)$ |
|||||
|
|
= $ “1” 7 CTE. |
|
|
|||
|
|
0: ‰ = $= ] TAMPER. |
|||||
|
|
1: }7 # )+ ] TAMPER. |
|||||
9 |
TIF |
a = ) TAMPER. Š$ $ , $ 7 # |
|||||
|
|
)+ ] TAMPER ) TAMPER |
|||||
|
|
9 (TPIE=”1”). 7$)$ =, $ “1” |
|||||
|
|
7 CTI $7$ 7 TPIE. |
|
|
|
||
|
|
0: ‰ = $= ] TAMPER. |
|||||
|
|
1: }7 # ) TAMPER. |
|
|
|||
10-15 |
- |
8 |
|
|
|
|
|
RCC->BDCR (O() E ,( 1 BKP 9 / : RTC) $ $ $7$ - 0x00000000. ˆ 1 (LSERDY) $ $ $7$)$ ,$ >, $) 7 ) $) > $ .
ˆ |
‰ |
|
‰ > |
|
|||
0 |
LSEON |
6 > 9 = : = LSE = 32,768 G:. |
|||||
|
|
0: ) >. 1: >. |
|
|
|
|
|
1 |
LSERDY |
$ = LSI RC = 32 - 40 G:. |
|||||
|
|
0: LSE = 7 =. |
|
|
|
||
|
|
1: LSE = F = 7. |
|
||||
2 |
LSEBYP |
†= = LSE 32,768 G: = ) |
|||||
|
|
0: 8 # 7 ) = ). |
|
|
|
|
|
|
|
1: G LSE # =. |
|
||||
|
|
^ 8( (: † O 7 # $ LSEON=0. |
|||||
3-7 |
- |
8 |
|
|
|
|
|
8 |
RTCSEL0 |
6)7 $> $] : >$ : |
|
||||
9 |
RTCSEL1 |
00: ‰. 01: LSE 32,768 G:. 10: LSI 32-40 G:. 11: fHSE/128. |
|||||
|
|
^ 8( (: c$ )7 $> $] : RTC |
|||||
|
|
O 7 ) # % $7$ ( $+ |
|||||
|
|
7 BDRST) |
|
|
|
|
|
10-14 |
- |
8 |
|
|
|
|
|
42

СПБГУАП группа 4736 / https://new.guap.ru
15 |
RTCEN |
c = )+ $ $ $] : >$ RTC. |
|
|
0: ] : RTC ) >. |
|
|
1: ] : RTC F. |
16 |
BDRST |
c = )+ $7$ =$ F F% + 7$ BKP. |
|
|
0: ‰ +$ . |
|
|
1: 7$ $# =$ BKP. |
17-31 |
- |
8 |
V 4 ( ,$) (8( RTC.
d$) = $# ) $ ) , >
$] ] 7$ $7$ ] # O =$7 #
> $= . (c ) >
7 $7$)$ .) d$) = = = ): #$ , $ , $>% >
$7 ) 7 (17- 9 ] ) +).
] : RTC # $F$ $ >$) : = = HSE
% + 128, 9 = : = = LSE 32,768 G:, #
= = LSI RC 32-40 G:.
c > 7 ) $ RTC 7] 9 $] : $
) , $# ) =$) RTC RCC_BDCR, #
9 $] : $ $) O (PWR), > 7) $
=$ PWR_CR:
RCC->APB1ENR |= RCC_APB1ENR_BKPEN | RCC_APB1ENR_PWREN|; // 0x18000000.
< 7] )7 F + =. . =$) RCC->BDCR (
“. F F% 7$ BKP”) PWR->CR ( “ $
O PWR”).
c = 7 9 = : = = LSE 32,768 G::
//^ 8( 45 (' () :( ) )( ( LSE 32,768 u:. PWR->CR |= PWR_CR_DBR; // O / ('$ /$ BKP RTC (0x0100) RCC->BDCR |= RCC_BDCR_LSEON; // 3 ,6$ LSE )( (. (0x00000001)
//+P 0 ( ) LSE 5 (.
while((RCC->BDCR & RCC_BDCR_LSERDY) != RCC_BDCR_LSERDY); // 0x00000002
…………………………………………………………………………
// ^ ( 59 0 8 / ($ /$ BKP RTC PWR->CR |= PWR_CR_DBR; // 0xFEFF
.$ LSI RC = 32 – 40 G: $F$ $ $+
$ $F ] 7 =$ RCC->CSR ( “8 # ) O =$7 # $ $ $7$ ”):
// ^ 8( 45 E ( () LSI RC )( ( 32 – 40 u:. RCC->CSR |= RCC_CSR_LSION; // 3 ,6$ LSI )( (. (0x00000001) // +P 0 ( ) LSI 5 (.
while((RCC->CSR & RCC_CSR_LSIRDY) != RCC_CSR_LSIRDY); // 0x00000002 PWR->CR |= PWR_CR_DBR; // O / ('$ /$ BKP RTC (0x0100)
…………………………………………………………………………
// ^ ( 59 0 8 / ($ /$ BKP RTC PWR->CR |= PWR_CR_DBR; // 0xFEFF
43

СПБГУАП группа 4736 / https://new.guap.ru
6 :$$ 7 ) # 7]$ ) > )7 )+ = $] : >$ = RTC:
// 34 ,6 ( ( (' () :( ) )( ( LSE 32,768 u:.
RCC->BDCR |= RCC_BDCR_BDRST; // `$ 5 5 BDRST. (0x00010000) RCC->BDCR &= ~RCC_BDCR_BDRST; // .5$ 5 BDRST. (0xFFFEFFFF)
// 34 ,6 ( ( E ( () LSI RC )( ( 32 – 40 u:
RCC->CSR &= ~RCC_CSR_LSION; // 3 ,6$ LSI )( (. (0xFFFFFFFE)
RTC->CRH (. ' () E ,( 1 RTC) $ $ $7$ - 0x0000.
ˆ ) $) > $ . (.$ $ $ 9
) F + :, . . = RTC_CRL[RTOFF]=1.)
ˆ |
‰ |
‰ > |
0 |
SECIE |
Š ) $ . |
|
|
0: . F. |
|
|
1: 8 9. |
1 |
ALRIE |
Š ) 7. |
|
|
0: . F. |
|
|
1: 8 9. |
2 |
OWIE |
Š ) . |
|
|
0: . F. |
|
|
1: 8 9. |
3-15 |
- |
8 |
44

СПБГУАП группа 4736 / https://new.guap.ru
RTC->CRL (‡, 0' () E ,( 1 RTC) $ $ $7$ - 0x0020.
ˆ 5 (RTOF) $ >, 7 4 (CNF) $ > $ ,$) 7 ) $) > $ “0” - $7$ . (.$ $
$ 9 ) F + :, . . = RTC_CRL[RTOFF]=1.)
ˆ |
‰ |
‰ > |
0 |
SECF |
a = $ . (c = , > |
|
|
) ) > $# = RTC_CNT 1 $ ). |
|
|
Š$ $ , $7$)$ = |
|
|
0: † RTC_CNT 7 #. |
|
|
1: # RTC_CNT >$ 1 $ . |
|
|
(ˆ ) ) 7, $ 9.) |
1 |
ALRF |
a = 7 ($ RTC_CNT $ RTC_ALR). |
|
|
Š$ $ , $7$)$ = |
|
|
0: 7 #. |
|
|
1: }7 # $ . |
|
|
(ˆ ) ) 7, $ 9.) |
2 |
OWF |
a = $>% > RTC. Š$ $ , |
|
|
$7$)$ =. |
|
|
0: c 7 #. |
|
|
1: }7 # . |
|
|
(ˆ ) ) , $ 9.) |
3 |
RSF |
a = $] : =$ RTC_CNT, RTC_ALR RTC_PRL. |
|
|
Š$ $ , $7$)$ =. c$ |
|
|
7 + :, .>. $ $ $] : |
|
|
7] = $7$ O * =, #$ = |
|
|
$ , > 7) 7$ , > =$) RTC $] ). |
|
|
6 $> $> ) )] = 7) 9 7. |
|
|
0: 8 =$) $]$ . |
|
|
1: 8 =$) RTC $]$ . |
4 |
CNF |
a = * = : =$ RTC_CNT, RTC_ALR RTC_PRL. |
|
|
0: 6)] # * = :. c ] “1” “0” |
|
|
$F$ $ $ : RTC. |
|
|
1: 8 # * = :, # $# |
|
|
=$ RTC_CNT, RTC_ALR RTC_PRL. |
5 |
RTOF |
ˆ > : =$] RTC. |
|
|
0: : $ =$ 9. .F |
|
|
$ =$) RTC. |
|
|
1: : $ =$ 9, d$) = ) ) |
|
|
> + ). |
6-15 |
- |
8 |
RTC->PRLH (. ' () ( (/ ) E/ (0 (,$) 0(, (,1 RTC)
RTC->PRLL (‡, 0' () ( (/ ) E/ (0 (,$) 0(, (,1 RTC)
45

СПБГУАП группа 4736 / https://new.guap.ru
f TR_CLK = f RTCCLK / (PRL[19:0]+1)
< > f TR_CLK = 1 G: f RTCCLK = 32,768 G: $ $ PRL[19:0] = 0x7FFF
.$ PRL[19:0] = 0x0000 0000 $ !
RTC->DIVH (^ (0 (,$4 0(, (,$ 4 RTC – ' ())
RTC->DIVH (^ (0 (,$4 0(, (,$ 4 RTC – 8, 0' ())
c )+ RTC_DIV % $>% 9. c ] = $ $ 0x00000 0xFFFFF *$ (> 1) $>% > RTC_CNT, # >$ $F$ $ = =
RTC_RRL. b >$ = $F$ $ # $ :
RTC_RRL RTC_CNT.
RTC->CNTH (. T ( E 0 RTC – () ' 9 / 10)
RTC->CNTL (. T ( E 0 RTC – () 8, 0' 9 / 10)
>% > $F$ > $= >
$ . †$] = 7•%, $>% # $ $ # 136 . c $ ), >$), . . # $F$ $ =.
d 7] $> 9 + =$ (RTC->CNTL), $9 + (RTC- >CNTH). < 7 ) $ 9 $), $ $ > =$ RTC->DIV.
RTC->ALRH (. ' () 5E0 ,$ RTC)
RTC->ALRL (‡, 0' () 5E0 ,$ RTC)
6 =$) 7 $)$ >, $ + $ $# )
$>% > $ 7 $ * = RTC->CRL[ALRF] $= 9
) Œ17 (t$ $ 7 RTC->CRH[ALRIE]).
46