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

基于STM32 擦除flash失败问题的经验分享

[复制链接]
攻城狮Melo 发布时间:2023-3-21 17:48
硬件平台STM32F407VE,HAL库。标准库不会有此问题
' O% B" ]4 L3 {" ]8 ]5 k
# b1 {& Y$ O9 n- _& P" R软件跑freertos
- Q. u" t+ m# q
. |4 k& n* P) ?# z2 o
问题描述:STM32 擦除flash失败,CPU跳不出串口中断,看门狗重启。
, N/ _( s0 W! b# G
& F4 J) o7 ^' g( I4 P( \  c
问题一、FlashStatus!=HAL_OK解决办法:
/ m0 G% B; C3 j. o6 D2 |/ w! \! X) C; D1 d1 p+ c% e) [
1、flash擦写前禁止flash数据缓存,操作完后恢复0 P$ C' o# Y1 b! Z. s+ p

/ D! E5 N( G5 m8 \) G- a' W, b/* Disable data cache */* r6 w8 }6 H: D" o& y$ J$ X
      __HAL_FLASH_DATA_CACHE_DISABLE();//FLASH操作期间,必须禁止数据缓存1 l+ V+ ]2 I1 M# a- N$ W- l+ O

" g+ E+ V# C6 @9 F        /* Enable data cache */- `/ h8 k7 d4 c; p/ r' l
    __HAL_FLASH_DATA_CACHE_ENABLE();//开启数据缓存
' g5 i# d) ?7 V
5 v$ `# |0 _7 m+ ^

& T( S/ B* W8 L. K- U) s2、如果上述办法还不行可以在操作flash前增加清标志操作
$ ]9 c6 W. S# ^6 L' C
1 |+ M4 c$ X; `) i8 w, E6 ?  /* Clear pending flags (if any) */, C- f( K: m8 ?5 D
  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP    | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | \4 n( T6 \1 Z* J3 `6 t
                         FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
9 N% q. }( h/ i. P* U* k/ T4 R
* X& w7 Z; G# @! @: f' {

) B# x- l2 |3 ^" ^3、看门狗影响: L, s+ M9 y& n7 Q. |7 }4 H* _
操作flash期间不要调用HAL_IWDG_Refresh(&hiwdg);
3 q# P4 C5 p3 m! o, |& J. P4 s
% u; Z# e8 `$ s* e2 l; S4 o并且看门狗未开启或者屏蔽MX_IWDG_Init();的初始化
" q! d4 p2 c% g  Q" P3 p* p  d: g, a, Y4 f. ^' ^- q9 W! T, F
软件最好不调用HAL_IWDG_Refresh(&hiwdg);/ s3 _9 W6 g2 L' ]

) V) B% h. \. Z" K- z
e05570f93a9d4b45af6c28789ac8b3b8.png
+ M; C; H4 t$ _% [- h# N' q& U2 W  C7 Y4 w/ i8 a, e' x
问题二:擦除flash失败,死机问题, V( A- ]7 Z: S% ~+ A$ L+ l; A4 d
我用了串口空闲中断+DMA接收、发送模式
3 ?' m/ g3 U1 u/ y0 R) w, t
! L' ~' v- O7 a$ W& C, n
软件仿真发现很容易在擦flash的时候CPU频繁进入串口中断(其他任务无法进入),最后复位" u% q( k1 c  ~

/ ^" n0 i6 k$ ^# g+ `: c
关键问题是:
- X" p3 r' T( z& \2 }
& C3 X, i( }: k& l- g. t/ x) M
HAL_UART_IRQHandler(&huart2);必须在中断里优先执行,放在最前端,不能放在用户程序以后。
9 u$ U0 ~* _7 U7 _. ]
1 M6 V4 X; B" Y# w7 O
如果不用flash擦写,顺序其实关系不大。9 W# n# R4 h& g8 p! q
5 I+ T& ^8 \: S- I
可能跟芯片也有关系(之前用F429就没这个问题)9 q4 ^6 f* k0 J- {7 I4 Q4 ?
: K# [% _3 {  T! M0 V- ~: A
e8c79ff264e7403b859febd2154ff4da.png
; `1 Q. i( I/ t0 x/ X4 w' ~# a+ m; L+ f

3 t! Z$ b& \% |4 \5 ?8 j————————————————  v* k- n- }7 p6 J0 Z( m
版权声明:axsdffff1
7 |' Z" r0 \, J( _$ a3 {& U8 H. {如有侵权请联系删除
* R" E+ n. ]2 y: L6 q8 G$ V. E$ A/ x9 R; F0 |
" [' \! V0 h0 s& G
: A" S/ d8 \& D
赞 收藏 评论0 发布时间:2023-3-21 17:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版