1.在main函数中加入启用读保护功能。
2 T2 C3 v4 ^6 Z; r- y3 ^6 u# c
! e: [! |" G2 Y: {$ P0 L8 d r( y C( J
! u6 o _5 W; f/ s0 j; K7 w2.读保护函数
5 C* ~6 }! ~/ F, h3 Z3 m
* Z! `1 |( \- |( |# N: L. {
& N k* [! N2 M) ^. u! F) ]6 R) [7 n0 {: g8 G
9 N- `" Z( H8 y, @' ?
9 ^7 @( H7 {& ?. t- J+ v, B
- int main(void)# h* M3 O8 B' l" m6 ^1 D) x# f! ]
- {% A4 {$ N# I: m0 U
- Flash_EnableReadProtection();0 _% y" E( E' ^% W4 Z0 T: b" C
- While(1)$ d n% D5 _* P! ^3 z6 V6 v
- {
1 b8 C8 D/ ]4 E% [ - # g V( s. R* ~
- }
/ h' I8 Z5 Y% n+ W, |' l - }- O( F; \+ M9 z( G( R; G( N
+ n: H$ [% ?4 U) m; F7 ?$ X0 f- void Flash_EnableReadProtection(void)
" f F. c p5 G& F- ^! V - {
1 |. Z8 Y: E3 H; P
3 Q) j# T' X* @, S$ y1 S: T# [- FLASH_OBProgramInitTypeDef OBInit;
`0 u, e1 N' F - 1 b! f# }* f. R! A
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();
9 V* M+ N" d3 L, t4 F0 R
$ b) U3 j/ n' u9 g* v- HAL_FLASHEx_OBGetConfig(&OBInit);1 u3 J# u$ [! L# C9 y
- if(OBInit.RDPLevel == OB_RDP_LEVEL_0)
! f B& d# q$ Y+ b - {+ c0 U+ [- a8 l. l; D
- OBInit.OptionType = OPTIONBYTE_RDP;
, j7 W6 ?7 D# X! j - OBInit.RDPLevel = OB_RDP_LEVEL_1;0 Y ^# o' n2 e4 q4 O* L3 a
- HAL_FLASH_Unlock();8 {- R! a" ~. X( s+ I1 H" H0 x
- HAL_FLASH_OB_Unlock();/ |2 T1 K% h/ l: F1 O( S6 |
- HAL_FLASHEx_OBProgram(&OBInit);
( M$ i1 ^6 \1 i/ t @+ i - HAL_FLASH_OB_Lock();
6 b% {! \, M! J$ s - HAL_FLASH_Lock();4 c) U/ P( Z9 y4 C4 A. ]0 G
- }" r6 z& {6 \2 m* g
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();( Y" i. n7 ~; B% }! c
7 v' ?1 W8 x( l- }
6 M$ b% B& C' k( c - ; Y2 ~. P, b, S: b m
- void Flash_DisableReadProtection(void)
( D/ F G1 ?$ P4 A; k/ Q5 n - {
2 e' w) c9 O- n" ^& t
# s$ h+ y' G+ Z# u2 H% y) l0 V- FLASH_OBProgramInitTypeDef OBInit;$ x6 E: P! K( ^; {8 a
- & q( d3 k2 c! f0 E9 ^3 W! y4 X
- __HAL_FLASH_PREFETCH_BUFFER_DISABLE();, ~' Y+ w1 O$ l& A! P
- / j- ?9 U3 W0 z8 e
- HAL_FLASHEx_OBGetConfig(&OBInit);
" J0 w+ c: w0 x1 o' h - if(OBInit.RDPLevel == OB_RDP_LEVEL_1)2 x: A: R$ [$ I7 c9 b5 d: ~
- {. i; b& r" e; K
- OBInit.OptionType = OPTIONBYTE_RDP;$ X8 y2 i9 b2 {1 `: S% }
- OBInit.RDPLevel = OB_RDP_LEVEL_0;: I; q: A; ~7 z
- HAL_FLASH_Unlock();6 Z5 t% e* f- h
- HAL_FLASH_OB_Unlock();" Z. e+ v" y2 t! M# D# M0 N( c
- HAL_FLASHEx_OBProgram(&OBInit);
" t) X$ m0 S* W! `) u' Q# u - HAL_FLASH_OB_Lock();9 U# P n! S$ [2 L5 \9 B: A6 p
- HAL_FLASH_Lock();
' j% a" H, V! u4 ~/ J, H) |' u2 v* Y8 f - } [3 N* W, h! b, N0 [2 Q
- __HAL_FLASH_PREFETCH_BUFFER_ENABLE();" \: M' u6 n0 d& \
- k9 C% O. [8 ?# R' F
- }
5 ]# b X: d; l& ]. N
复制代码
; x; L, V6 F' k- G+ g9 Z* I4 m) o. ^) `! P
|