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

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

[复制链接]
攻城狮Melo 发布时间:2023-3-21 17:48
硬件平台STM32F407VE,HAL库。标准库不会有此问题" u4 G& N& a/ o# o
: p/ V( Y7 b  j! k& r4 K7 D
软件跑freertos
: g7 E1 k% _! X/ }- K% Q) d
; u0 u: F+ ?; X# X6 m3 N3 X0 I
问题描述:STM32 擦除flash失败,CPU跳不出串口中断,看门狗重启。! ~9 v6 e, `0 G8 O& v0 |) J
+ a; d6 T% g9 f- _/ a" `- p
问题一、FlashStatus!=HAL_OK解决办法:& Z& b0 Y6 R# U$ U3 e
# }$ [: i8 K0 x0 q6 J
1、flash擦写前禁止flash数据缓存,操作完后恢复+ r( o2 ]6 s) ]+ G8 U
3 v3 d" a1 L$ W$ l4 t7 x. K
/* Disable data cache */
+ U+ y9 o9 c( q9 X2 e      __HAL_FLASH_DATA_CACHE_DISABLE();//FLASH操作期间,必须禁止数据缓存
- q; _, W  I  T- f) w1 `8 h- p$ o/ Y# B1 h- ^
        /* Enable data cache */5 i1 b: t& c: \7 Y9 f- {1 d, E
    __HAL_FLASH_DATA_CACHE_ENABLE();//开启数据缓存$ l) j8 X; K  f- }

- e' ~3 a5 s  g1 f2 H' H+ s

' D9 a) a! P; a2、如果上述办法还不行可以在操作flash前增加清标志操作9 u1 c% F. H9 y  h* p
7 f& C% y) X" h+ t
  /* Clear pending flags (if any) */
; D( t* i- W% B' Y( ^# |# R  __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP    | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | \
3 E2 b; M# e8 Z5 k                         FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
0 f$ u# W: K4 E+ X! |: ]0 W4 c* j% l0 U9 a$ b: g' L
* Q+ f* ~4 m- W$ z* V7 d+ s% A
3、看门狗影响7 S( U: x$ R7 [1 p6 x
操作flash期间不要调用HAL_IWDG_Refresh(&hiwdg);
- c9 l. h4 |. u  C& b
0 n+ r) M3 U% ^3 K. H! v$ t并且看门狗未开启或者屏蔽MX_IWDG_Init();的初始化
( Q3 @: Z, [; V& p0 G* r% ^$ L5 p2 W7 h1 o% ^; \/ l' p
软件最好不调用HAL_IWDG_Refresh(&hiwdg);2 v: b: N$ P7 z5 k2 J& `/ a

; g; d  [* W# k4 S* R+ i
e05570f93a9d4b45af6c28789ac8b3b8.png . n5 ?- ?, H1 H9 H5 R6 a% U- Z' c

5 w! l; S! ~4 c, ?( g* `4 j: W& w0 v
问题二:擦除flash失败,死机问题4 [0 N3 N" g  M; G9 g
我用了串口空闲中断+DMA接收、发送模式
) _* u! W7 h9 a6 P7 t! P/ S* v7 p. }* I; Q
软件仿真发现很容易在擦flash的时候CPU频繁进入串口中断(其他任务无法进入),最后复位
  ?" ]( w+ f" ?7 v
( X; H( K; _, z1 q2 _1 c- I2 Z
关键问题是:! _7 p/ I, C/ u! d
$ _) V  O9 o6 X
HAL_UART_IRQHandler(&huart2);必须在中断里优先执行,放在最前端,不能放在用户程序以后。
, Y$ t/ i* t, E8 X8 a
8 f5 l# I) G/ c& Q! l# X
如果不用flash擦写,顺序其实关系不大。1 _% e- Z" I/ Z& W. X. a- Q
' z4 p$ a& z& ]  L
可能跟芯片也有关系(之前用F429就没这个问题)
, y( y, j0 O5 R" A+ U1 ]& d/ g7 y: x6 R# k0 ?' I- y" F: A5 T
e8c79ff264e7403b859febd2154ff4da.png 5 G- }2 z$ v4 J! p% t
1 p0 |  [2 n; B& u& a, c/ h
+ z6 K/ {1 }) W) {* y' A8 T
————————————————
) y3 i+ y; i3 u* y; H/ B$ V4 s版权声明:axsdffff1
; P" u% s: k2 s! E8 a  z% @3 l如有侵权请联系删除- M5 E- ~; @$ q
4 v* T. }" S) a- c5 f. u* @2 x
& D8 t( z9 ?2 u) [, U/ j1 S: f
/ Y. V' h+ g8 p; h' N
收藏 评论0 发布时间:2023-3-21 17:48

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版