[APM32F1] APM32F103 FLASH擦除失败

[复制链接]
819|0
 楼主| FAQ 发表于 2023-9-22 13:01 | 显示全部楼层 |阅读模式
在ST上正常的IAP程序到了APM上发现IAP以后FLASH内的数据不对,经过排查发现是写FLASH之前擦除FLASH没有成功。但是还有个疑问,根据资料介绍APM擦除速度要比ST的快,但为什么还需要加大等待时间。


  1. /* Delay definition */   
  2. #define EraseTimeout          ((uint32_t)0x000B0000)
加大EraseTimeout解决问题
  1. /* Delay definition */   
  2. #define EraseTimeout          ((uint32_t)0x001B0000)//加大EraseTimeout

  1.     /* Wait for last operation to be completed */
  2.     status = FLASH_WaitForLastOperation(EraseTimeout);

  1. FLASH_Status FLASH_WaitForLastOperation(uint32_t Timeout)
  2. {
  3.   FLASH_Status status = FLASH_COMPLETE;
  4.    
  5.   /* Check for the Flash Status */
  6.   status = FLASH_GetBank1Status();
  7.   /* Wait for a Flash operation to complete or a TIMEOUT to occur */
  8.   while((status == FLASH_BUSY) && (Timeout != 0x00))
  9.   {
  10.     status = FLASH_GetBank1Status();
  11.     Timeout--;
  12.   }
  13.   if(Timeout == 0x00 )
  14.   {
  15.     status = FLASH_TIMEOUT;
  16.   }
  17.   /* Return the operation status */
  18.   return status;
  19. }








您需要登录后才可以回帖 登录 | 注册

本版积分规则

FAQ

233

主题

2050

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部