1.在main函数中加入启用读保护功能。
% Y1 @$ }1 w, g9 ^7 x9 i1 S' G, a' \6 X" l
5 ~0 Z2 p7 }7 Q$ x' |8 c
& ~/ o5 Y& x' b3 _& d
2.读保护函数
: ^ L7 J& J* [4 v* g9 S) o$ p1 _% e7 |4 @) o1 g
: J- w; ?6 @8 n: N* {
% m2 v4 j! g/ o+ W" H$ M* l
8 ~6 H2 D: [ X7 o( [2 h, j
- int main(void)
- V |( m3 Q- R4 j- o' |+ D# b - {# X- K$ n8 Q% C# ?, Y5 j+ [9 ^' m
- Flash_EnableReadProtection();. |5 I% O- ?6 s
- While(1)
. b: F5 r2 l& _; p) Y; G0 x5 c# P - {1 ?2 N: i" b0 K6 N
$ E. r& T" r5 G+ K3 e2 U! z0 Y- }# V, s6 R% C7 l6 `! ^
- }
7 P. J3 G/ C/ t7 t9 E0 P - 5 g+ J2 ]( J, E, W
- void Flash_EnableReadProtection(void)
2 o( [4 J8 \3 Q - {7 H# F1 ]3 g( y- U9 A
- , E# D' f* N% r
- FLASH_OBProgramInitTypeDef OBInit;
# p% ~9 K; F/ g( y# b5 x
: U6 O( G* y( M. k; r3 D; J# m; ?- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
; X7 [( n, ~! W5 _( O N! ?. ] - ' [( J* F% L* E5 F" _& [
- HAL_FLASHEx_OBGetConfig(&OBInit);
1 r# u( J: i* b- {3 I! H4 T$ j& v - if(OBInit.RDPLevel == OB_RDP_LEVEL_0)8 l: y( T }) A
- {: y# `# F1 H0 ~
- OBInit.OptionType = OPTIONBYTE_RDP;. ^' ]! S: R1 I5 S4 @ H
- OBInit.RDPLevel = OB_RDP_LEVEL_1;
. G. e: N7 ?( R7 W, m2 P - HAL_FLASH_Unlock();# ?6 i; W, V" H. ]3 L
- HAL_FLASH_OB_Unlock();
& y! W b% c; y" y) O7 { - HAL_FLASHEx_OBProgram(&OBInit);5 `$ U5 w. @- k$ O- p1 d- ? N
- HAL_FLASH_OB_Lock();
6 n$ ^& L8 W- u% y K8 k$ p- ?- P - HAL_FLASH_Lock();
: o( L z# E% E# W5 K' z - }' K) p3 e- O$ k
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();. |$ f2 i" p" P: G5 z; [
' O4 u& g, V5 i" ?- F& e- }9 B3 b) l1 P' Y% A
1 o1 Z# {- f+ h4 n! K- void Flash_DisableReadProtection(void). `8 }( }8 r6 L; y+ p1 n+ O
- {. \9 U( |# E' t
; ^* r% m* S/ o; I- `- FLASH_OBProgramInitTypeDef OBInit;
$ i' e0 d. U5 C ~6 d7 Q/ B
( c/ p, Y* M& _ w- q- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();3 b1 h5 J0 s4 l, p0 V
, d6 Y9 H+ `& J1 @- HAL_FLASHEx_OBGetConfig(&OBInit);
3 w8 t; z! b. x6 l U4 J5 R3 L+ e - if(OBInit.RDPLevel == OB_RDP_LEVEL_1)3 W7 B& F' H- P" M2 o8 D6 Q4 G
- {
1 G/ S- s, J3 R - OBInit.OptionType = OPTIONBYTE_RDP;
d& W, g) b$ I' M0 W0 U3 ` - OBInit.RDPLevel = OB_RDP_LEVEL_0;
! ]6 c. i- R" q* u/ V4 i - HAL_FLASH_Unlock();1 @, ]6 h1 h! k$ Q7 E
- HAL_FLASH_OB_Unlock();& P5 d. O3 p* Q' @
- HAL_FLASHEx_OBProgram(&OBInit);
+ ~* T! W6 R9 t. x$ d. F - HAL_FLASH_OB_Lock();" l3 P+ p/ F3 o% _! Z* V
- HAL_FLASH_Lock();
4 _) Y5 L" c- V+ s% u; ~$ | - }2 e& a2 S9 C; |0 ]5 G f
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();; m" J) c# z v/ W4 K2 w
, f! q, Q1 A' U8 x( Z- }/ n5 a' e; H& g; j, g, S: @ d9 \
复制代码 7 v. z2 i) o* Y& g; ~6 n4 E
4 C6 x) _. D. W |