1.在main函数中加入启用读保护功能。
2 e3 |% ~5 x _4 t! s
! k. @3 ]3 u0 ~ o9 z% O3 h" u
4 A4 @6 r0 z6 u: _2.读保护函数( p3 t) ?+ T3 V/ B: B
2 n: i. l) P( {! `) p: y3 n: }& N2 p: s& [5 G e H
) o& W2 H, g+ s( |0 T
; k6 S) `! c! T3 N$ g9 A
- int main(void)
; r( `5 n, |& ~& _6 F - {
5 Z4 x2 E" K! S% f" j5 I6 { - Flash_EnableReadProtection();
! Z: d7 _2 C" g# T; B# a - While(1)
7 o4 W& I l" R - {9 f' d: y2 K; e, \
- 8 _! n$ m# p H7 _) G% k8 j
- }
1 v2 [. q+ x0 M4 l9 I - } ?$ m/ `2 j+ F5 d
- ) {+ Y( r0 D7 Y, r8 U2 {
- void Flash_EnableReadProtection(void)2 m) u* O2 S1 L, F
- {
. W+ h" j2 N. a0 D - 4 V% [0 i2 i0 a. W( Y
- FLASH_OBProgramInitTypeDef OBInit;
2 ^2 [' `& B$ l, g( v
8 ]1 C6 }7 ?4 `, U/ i- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
; \# P/ l# W# p& f2 a8 [; K! y - 8 {5 d; A" `$ ^
- HAL_FLASHEx_OBGetConfig(&OBInit);
: X) z. v# S5 ^1 t% L% b1 i - if(OBInit.RDPLevel == OB_RDP_LEVEL_0)
# [, K% x, [- O8 |/ E" S - {
9 R t2 Y" b' y! S' |- Z1 P) e - OBInit.OptionType = OPTIONBYTE_RDP;
8 \) M/ E* D- x1 _ - OBInit.RDPLevel = OB_RDP_LEVEL_1;4 z9 I5 d& W' f2 f
- HAL_FLASH_Unlock();: u! s6 C$ `/ F
- HAL_FLASH_OB_Unlock();
4 o/ {% T: n! J+ T( c - HAL_FLASHEx_OBProgram(&OBInit);
G$ t5 g% c9 @% i9 y* x - HAL_FLASH_OB_Lock();
2 k. ^! h( i0 q) x$ B( n; w - HAL_FLASH_Lock();# a1 @0 D! {/ c" c+ j& u
- }* M6 ~: g* k* a7 ~$ l$ @* _4 l2 P
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();, a: h3 Y4 n1 r; N
# }* g7 W" e7 k/ D/ m- }
5 L" e& ^/ }9 q- v
6 K* F; M8 X! L W, d- void Flash_DisableReadProtection(void)) j+ P: `6 [) z1 d0 q
- { g- }. s3 y( e: F9 c, O' n' f
- % B$ a; z/ ~1 f, Y
- FLASH_OBProgramInitTypeDef OBInit;
; L) H/ A% T4 l& F7 D/ x% U/ ~
2 _6 V6 T. D% Z2 s; c, V8 ^7 y- __HAL_FLASH_PREFETCH_BUFFER_DISABLE(); ^8 k# y5 ~1 p( {
- 9 l" N0 w3 @' s, P" H$ v
- HAL_FLASHEx_OBGetConfig(&OBInit);
1 c4 W' P, q6 m& z - if(OBInit.RDPLevel == OB_RDP_LEVEL_1); z( D4 \& G$ r& e
- {
4 u* L4 _4 y* W" p, n& N - OBInit.OptionType = OPTIONBYTE_RDP;+ I) X& B3 R7 Z5 ?2 b& H$ L
- OBInit.RDPLevel = OB_RDP_LEVEL_0;. s4 R% |8 f# w8 _/ Z
- HAL_FLASH_Unlock();# V1 y- }' [% {% w& }, P
- HAL_FLASH_OB_Unlock();
% m& p8 S8 k+ V9 L - HAL_FLASHEx_OBProgram(&OBInit);- b1 \" a; X' R, o+ S
- HAL_FLASH_OB_Lock();
( v' n' z4 q C - HAL_FLASH_Lock();
Y9 V3 P; r" d- M - }8 Q, u- q( P; Q
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
# g; Q; o& r/ a v- H
K$ U9 C; r6 v1 p7 a- `+ e- }5 @9 I; S! A( h& n4 ?4 ~' D
复制代码 # `8 O" A% D* }! s: p4 Q) V
Y* n# }- r6 t e+ E( [6 w/ W |