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

FLASH写入数据前必须等HAL_FLASHEx_Erase返回OK

[复制链接]
奏奏奏 发布时间:2019-8-13 11:13
踩过的坑分享出来:
官方FLASH写入数据的例程是没错的,
但是遇到复杂情况
HAL_FLASHEx_Erase返回结果不是HAL_OK怎么办?
我天真的直接搬运过去用了。


官方例程部分源代码是

  1.   if (HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
  2.   {
  3.     /*
  4.       Error occurred while page erase.
  5.       User can add here some code to deal with this error.
  6.       PAGEError will contain the faulty page and then to know the code error on this page,
  7.       user can call function 'HAL_FLASH_GetError()'
  8.     */
  9.     /* Infinite loop */

  10.         printf("\n\r        Error occurred while page erase.        \n\r");
  11.   }
复制代码


按照我经验必须修改为下面代码

  1.     while(HAL_FLASHEx_Erase(&EraseInitStruct, &PAGEError) != HAL_OK)
  2.                                 {
  3.                                         //
  4.                                         __nop();
  5.                                 }
复制代码



为什么我会踩到这个坑呢?
因为我做OTA升级,APP部分跑的任务比较多,必须运行到第2次HAL_FLASHEx_Erase才能返回HAL_OK,于是就循环等待咯。








收藏 评论1 发布时间:2019-8-13 11:13

举报

1个回答
雨一直下_ 回答时间:2020-8-31 14:36:26
刚遇到这个坑,谢谢分享~

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

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