1.在main函数中加入启用读保护功能。8 Y& t, ^/ I" k7 p0 z1 l1 c
1 c. W& S2 c2 S6 o6 e
, R/ [! |3 Y# Q& R, z- K8 v" @
0 N/ s3 ^7 F4 D* _' l; W" P2.读保护函数 f. m+ u; H1 ?. g, v5 u
/ n: M. ~3 l J+ h! e; X- ^
& k0 K5 ~1 p) c9 a% R$ h: W
! c5 M9 e5 S% P
$ o J! ]+ f) t0 t0 W+ B3 r& E
8 t. r8 c! w6 d$ z& A8 Z- int main(void)
g7 N6 ]5 v( J8 v9 m1 F1 D - {
" F* J0 `+ P7 M( n- y3 j2 s6 T5 L - Flash_EnableReadProtection();
; _4 f8 ^$ h: K5 P3 l0 ?+ { - While(1)! |$ |2 m" N8 U. i7 i( V
- {
1 h, |; p3 \ S$ J+ I. u - k& P% N: y- t5 [$ n( r* H# h! U
- }
; q8 [ U9 k! {$ ]5 m5 @( Q. J" J. i - }
- c* b! z! Y- U. ~
8 K& c, Q7 a& X" n- void Flash_EnableReadProtection(void)7 e" K% f0 A4 m# y t# q4 A1 s
- {
- K# L( N9 I) A* a
' Q: t, L3 p' {8 t" B# E. c( f- FLASH_OBProgramInitTypeDef OBInit;$ x: V( @6 b+ X7 \% \
- 9 d! |) }, x: @6 b! {5 J6 P
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
; k) L0 X4 |* s/ T$ x6 A - , j- f8 ?0 p& q
- HAL_FLASHEx_OBGetConfig(&OBInit);
7 W; y# ^( n' ?0 [ - if(OBInit.RDPLevel == OB_RDP_LEVEL_0)
! E7 N. I3 k0 ^3 W, n - {
$ s3 P+ v4 y/ I- K; Q - OBInit.OptionType = OPTIONBYTE_RDP;* l' R8 B4 n9 v- g
- OBInit.RDPLevel = OB_RDP_LEVEL_1;
3 T8 e ?3 d5 v) [! z, R y& p: t - HAL_FLASH_Unlock();/ K; P' ?3 [+ ?
- HAL_FLASH_OB_Unlock();* D# A* s1 F4 L% `+ Q
- HAL_FLASHEx_OBProgram(&OBInit);- z) `3 }, U9 ?2 y1 c, \
- HAL_FLASH_OB_Lock();
9 R* [2 ]+ L1 c' m8 C! ` - HAL_FLASH_Lock();& n2 g. S( L" \9 r. H7 H
- }
, @7 t. n+ f) _/ S - __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
2 V: ]5 ?% t/ O, I& `
4 C( l! Z5 [0 |! m2 L- }$ E6 o0 w9 ^* ~4 b+ P# [
! A! {6 u$ Z; T2 Q# f- void Flash_DisableReadProtection(void)
/ I* l% S: R; S( m! e1 g8 v! _ - {" g( [" t# W9 Z# _, ~6 m' j
0 ~7 h5 i* h2 z9 q/ z- FLASH_OBProgramInitTypeDef OBInit;9 G% y7 h+ j9 | g- e
- 1 Q& N) R3 B" U# R" s# n- R
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
, S2 |' |5 X1 l9 x; p. z
5 k/ }! a0 r. k( J; k$ H9 }* c- HAL_FLASHEx_OBGetConfig(&OBInit);
% J2 e' v. g; F1 R5 Q& u - if(OBInit.RDPLevel == OB_RDP_LEVEL_1)6 P! E3 {6 H& M1 y
- {1 {1 X0 W$ b3 w. n; p2 ^ I4 A
- OBInit.OptionType = OPTIONBYTE_RDP;& ?( R" y5 Z6 _+ N9 ^9 R2 _
- OBInit.RDPLevel = OB_RDP_LEVEL_0;
8 O( e* X6 H0 C- T - HAL_FLASH_Unlock();
" H" ]4 C6 ^9 e" w - HAL_FLASH_OB_Unlock();
3 G+ U7 ?* v3 K! |7 z- n! l. Y - HAL_FLASHEx_OBProgram(&OBInit);
$ l) S/ T+ f& p' p9 ?0 P - HAL_FLASH_OB_Lock();% A& L4 n( |; h" I" o( P3 K
- HAL_FLASH_Lock();' d4 a- O6 c0 F: y. u: P3 \' l, {
- }# t) ~; `& E/ X; m/ U$ D
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
( i/ p6 }+ h# r
- f' V9 u* W4 T# U8 \& k- }; h' ]# R" B4 N0 p6 S
复制代码
* ~* H! N. d5 \; r
, R4 p0 @1 Y$ H2 x' a! E |