你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32G031 程序设置读保护

[复制链接]
STMCU小助手 发布时间:2021-12-9 10:55
1.在main函数中加入启用读保护功能。
% m* C( p" Y1 w
$ t  w. r/ r$ f/ K+ |$ f
20201109092040958.png
. _. g  z4 _4 X: F

# B5 l* O' M& J' `3 e4 H" @2.读保护函数
( C$ @% e6 s/ w# j5 y1 B9 F; t! p" I2 i+ b3 n" c0 r3 _
0 d0 Y2 ^8 ?& i3 {$ {
20201109092040946.png
# C! r3 }/ q2 C$ L: N% ~
2 q/ G/ L& ^( e
" l0 m9 \# r& C
  1. int main(void)
    3 f2 V+ U: l* [/ \0 R! F! v
  2. {  f4 }" n( h. K* d2 e- G* k
  3. Flash_EnableReadProtection();' C; ~2 J, S8 {2 `) E, p% }  C; M
  4. While(1)+ J4 J) g6 h9 Q" T: f" C2 n0 @
  5. {; r. E* p6 U7 n; {$ j# U' y% h; Z3 L

  6. ' Z6 R( \* ^7 I) h1 `2 ?  ?. v* e
  7. }
    6 l$ _, a5 @# s4 y1 \3 M1 X1 _; K' n; C
  8. }( ^: I2 I, `! J6 B/ L; n

  9. ) Z) {2 `* ~# M3 r2 k1 Y
  10. void Flash_EnableReadProtection(void)% u( J- {9 _* m+ `( E
  11. {# b2 R  w$ o% k  U6 B- g2 @. I
  12. ' r. O9 f/ v0 L# P& T9 ?
  13.   FLASH_OBProgramInitTypeDef OBInit;% a" C( G0 K! S- ]3 B

  14. 9 [9 _9 l, [, F' _: l
  15.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();" f( u- R* r/ f' S7 M2 q

  16. 3 ^& L* K1 W3 S0 v; I1 J
  17.   HAL_FLASHEx_OBGetConfig(&OBInit);
    5 S1 }: f4 M! g) M, L! u$ a& z
  18.   if(OBInit.RDPLevel == OB_RDP_LEVEL_0)
    * D, [' ~! s( g: a
  19.   {  B1 z2 U: j& Z' Z- J3 T+ m2 |0 h* u
  20.     OBInit.OptionType = OPTIONBYTE_RDP;
    5 n- P0 {8 Q; G# M. Q
  21.     OBInit.RDPLevel = OB_RDP_LEVEL_1;1 w/ |1 Y+ o, U: b
  22.     HAL_FLASH_Unlock();! q2 }. E. X) _( X8 y
  23.     HAL_FLASH_OB_Unlock();* g( s! d2 B  b% z& f) w. I
  24.     HAL_FLASHEx_OBProgram(&OBInit);
    / t# J9 ~; O9 _5 T5 @$ ?6 \  b" @
  25.     HAL_FLASH_OB_Lock();
    0 G6 x( k" O5 r6 T+ c* y
  26.     HAL_FLASH_Lock();$ E1 n; p: }% B" @
  27.   }+ [0 n  ?9 |7 Q1 @4 l( T
  28.   __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
    : G. S$ \2 r5 z4 W8 R9 b+ d

  29. ) S- R3 P- p2 {* [5 i
  30. }
    9 q' G% P) }3 a- h( P

  31. * S4 X& a, Y; m$ C9 o
  32. void Flash_DisableReadProtection(void): n1 }, t/ }* `/ O: Q: r
  33. {7 D7 M, O7 {, O$ s8 \: T5 {% k; C* F* U6 G

  34. - R. b" Q0 P  r! j* U7 s
  35.   FLASH_OBProgramInitTypeDef OBInit;) \7 {' I! o: F% U+ L( q% v, S& B$ T* t& r
  36. 4 {9 F! \6 L" {% N, t- f  x
  37.   __HAL_FLASH_PREFETCH_BUFFER_DISABLE();% |( c4 ~% N* I; E# R, \

  38. , V- ~6 v$ Y. g: i" m( L" I3 o" f, d
  39.   HAL_FLASHEx_OBGetConfig(&OBInit);6 E4 F8 H$ S# p. U2 n
  40.   if(OBInit.RDPLevel == OB_RDP_LEVEL_1)
    / Y- A  g! J7 Z: x- v( P) J" [
  41.   {
    " G+ t+ ?7 d& `. P; K, _& l* h
  42.     OBInit.OptionType = OPTIONBYTE_RDP;
      B9 {- a4 ~2 z( ]0 g: O% n* ?# t" b
  43.     OBInit.RDPLevel = OB_RDP_LEVEL_0;
    : m1 A' g$ z9 v$ h+ A5 Y% ~" f0 G
  44.     HAL_FLASH_Unlock();8 c* `$ d$ p. h2 r  y
  45.     HAL_FLASH_OB_Unlock();
    5 c% I0 Q5 \% ?! b; L( v$ a
  46.     HAL_FLASHEx_OBProgram(&OBInit);
      P% t. P3 z3 ~4 C* Z" Y
  47.     HAL_FLASH_OB_Lock();/ {8 }* |) P- Y4 L5 b
  48.     HAL_FLASH_Lock();9 x( Z$ _) I- d  k2 s# H- Y
  49.   }
    1 }4 V! n: z/ g. E/ x6 D5 X
  50.   __HAL_FLASH_PREFETCH_BUFFER_ENABLE();
    # }1 p2 M/ C# G! j. l/ |* o

  51. 3 p4 A0 g% O: h% B# X3 h2 G
  52. }
    ( n, M/ F* E- k. n9 G
复制代码

1 ~1 p# \' ?6 s2 r" o5 H' @. e0 ~/ ~( U* m
收藏 评论0 发布时间:2021-12-9 10:55

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版