1.在main函数中加入启用读保护功能。. y3 b* R1 _! W C4 X* x8 q4 J
?1 D) _' A/ l6 T
+ j# W0 t5 U/ j" I
4 [4 m. x+ e. ~# h; c2.读保护函数
. M; C! T5 i( z
, `2 Q7 o& M; d# i1 _& Q, R; K7 w% {6 A& W' B
' P+ w: E% D. ?4 ^& p' j
. R, e8 N: j' P% f$ {. D o$ l$ Y3 U( G
- int main(void)
* L8 l% N1 v+ T/ b+ s8 ^+ k8 w - {
: q3 m* r" |+ ^. X - Flash_EnableReadProtection();; |* P& a o- a* F
- While(1)
3 u. T6 v- e: E0 {5 k) b5 Q - {
! c# D, K5 p3 _+ u# v7 Z) q5 C3 P - , K- C/ T! n, y/ S6 ~
- }8 }& v( v, L" k* c7 g8 t
- }( t8 ?- t+ T- r' m/ j3 S
) \/ b* E1 u0 F4 W3 d# s% Z- void Flash_EnableReadProtection(void); L( o1 }( G9 _5 X; e
- {
( k. D* s& e3 ], G3 R, S - % x/ p0 `! l3 T* ^
- FLASH_OBProgramInitTypeDef OBInit;
: B( h* k1 F( V3 o1 X( \5 g K+ N - * c. \1 {1 W$ g8 E' ?8 o+ A( w/ u
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
x7 o) P# J) v" m$ ^* Y y* W - 0 O, _2 {8 D6 ^" j% S: ]; v
- HAL_FLASHEx_OBGetConfig(&OBInit);6 q; R( B3 R m y5 _
- if(OBInit.RDPLevel == OB_RDP_LEVEL_0)0 t! L4 |+ \, R. L# b* h
- {
8 ?7 k: ^4 l$ q. h" Q" M2 g - OBInit.OptionType = OPTIONBYTE_RDP;8 D/ t* A" q# _* `* n
- OBInit.RDPLevel = OB_RDP_LEVEL_1;7 Z4 P/ s& m' I0 _ t
- HAL_FLASH_Unlock();8 q; B" f& x4 y& J
- HAL_FLASH_OB_Unlock();
! Y2 A7 t( L7 [: Q& M - HAL_FLASHEx_OBProgram(&OBInit);
9 ?& z) f+ q% W. |% P* ] - HAL_FLASH_OB_Lock();
1 b( J/ l2 T- a - HAL_FLASH_Lock();
% y& t! D# A3 ^/ | - }
: d. c, A; y$ n0 w5 `6 r - __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
9 H' Y* S0 U: s. E% q* ^) l+ e - * }7 O1 [, v* c9 E$ W, ` S: Q
- }
8 W& K! f, @8 x6 }+ h - ) s8 d; b/ j- a6 N' `! C9 }
- void Flash_DisableReadProtection(void)
& f f6 W4 G: {0 q, M5 [& [9 e - {
* `) c/ B0 w9 N4 w4 C; F - 0 I, C, d& Y0 W& O% F
- FLASH_OBProgramInitTypeDef OBInit;
! V, h$ s" [7 G5 P3 k, c. L9 D
% _+ w4 _7 P0 b- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
: l+ O6 x( i. ]9 _8 s0 F# z) j6 P
3 E6 R. y2 M4 v; V- HAL_FLASHEx_OBGetConfig(&OBInit);' a; Q3 d8 x& O
- if(OBInit.RDPLevel == OB_RDP_LEVEL_1); _% g) s. a. x; T% j
- {
9 N& F3 x. f# x; A - OBInit.OptionType = OPTIONBYTE_RDP;
6 V/ H& r& n! a& a - OBInit.RDPLevel = OB_RDP_LEVEL_0;8 E( z, L; p6 S7 g! n( S
- HAL_FLASH_Unlock();
u7 n& n! [ a; W& C+ y; M+ z* N - HAL_FLASH_OB_Unlock();6 F9 a/ V1 J$ R, B
- HAL_FLASHEx_OBProgram(&OBInit);
' _% J: U: {/ p. Z2 Z - HAL_FLASH_OB_Lock();
. w, A$ A' @7 r# c" n - HAL_FLASH_Lock();0 f; O* E! n$ X
- }
! n+ S. Q7 F9 E2 c" c3 N: T - __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
: U) v5 m( G6 I9 q - 4 L# T# G& z$ {9 W% P+ U) M/ t5 H
- }$ ?" @! u. A" R' C8 w
复制代码
w2 h+ ~$ }" f4 z# v
7 j5 B5 ?/ i8 Z4 i6 N |