stm32f205写FLASH时间太长和看门狗复位怎么办??

[复制链接]
 楼主| john78 发表于 2013-7-15 22:46 | 显示全部楼层 |阅读模式
stm32f205写FLASH时间太长和看门狗复位怎么办??
特别是格式化FLASH时间太长了,看门狗动作了,怎么办????
自然的天逸 发表于 2013-7-16 10:41 | 显示全部楼层
这个程序上可以解决的  你在等待flash 操作成功这段时间要想想办法清狗 。有操作系统话就方便以一些 CPU
自然的天逸 发表于 2013-7-16 10:43 | 显示全部楼层
可以调度 清狗 可以单独建立任务 由系统调度完成。 编写代码的时候尽量不写死等的程序。用状态机写软件
 楼主| john78 发表于 2013-7-16 12:51 | 显示全部楼层
void ClearDataflash(void)
{
  u32 i;
  FLASH_Unlock();
   
  Iwdog_rst();
    /* Clear pending flags (if any) */  
  FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |
                  FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR|FLASH_FLAG_PGSERR);

  /* Get the number of the start and end sectors */
  StartSector = GetSector(FLASH_USER_START_ADDR);
  EndSector = GetSector(FLASH_USER_END_ADDR);

  for (SectorCounter = StartSector; SectorCounter <= EndSector; SectorCounter += 8)
  {
     Iwdog_rst();
    /* Device voltage range supposed to be [2.7V to 3.6V], the operation will
       be done by word */
    if (FLASH_EraseSector(SectorCounter, VoltageRange_3) != FLASH_COMPLETE)
    {
      /* Error occurred while sector erase.
         User can add here some code to deal with this error  */
      for(i=0;i<0xFFFFFF;i++)
      {
         Iwdog_rst();
      }
    }
  }
}
----------------------------------------------------------------------------

这样吗?还是没有用啊
zeluo 发表于 2013-7-16 18:40 | 显示全部楼层
不是很了解   楼主   我帮你顶一个    看看别人的意见吧   顶一个
自然的天逸 发表于 2013-7-16 21:00 | 显示全部楼层
你要看是那条狗复位了才去清狗。
自然的天逸 发表于 2013-7-16 21:01 | 显示全部楼层
也可以把狗放长一点吗
 楼主| john78 发表于 2013-7-17 13:46 | 显示全部楼层
狗已经放的最长了,现在只能不放狗
logeee 发表于 2013-7-17 16:24 | 显示全部楼层
将 if (FLASH_EraseSector(SectorCounter, VoltageRange_3) != FLASH_COMPLETE)
    {
      /* Error occurred while sector erase.
         User can add here some code to deal with this error  */
      for(i=0;i<0xFFFFFF;i++)
      {
         Iwdog_rst();
      }
    }
改成while (FLASH_EraseSector(SectorCounter, VoltageRange_3) != FLASH_COMPLETE)
    {
      /* Error occurred while sector erase.
         User can add here some code to deal with this error  */
      //for(i=0;i<0xFFFFFF;i++)
      {
         Iwdog_rst();
      }
    }
cjhk 发表于 2013-7-17 18:50 | 显示全部楼层
需要及时清狗   清零后  一般的问题  基本上没有什么的   楼主
无帝老三 发表于 2016-8-9 16:31 | 显示全部楼层
logeee 发表于 2013-7-17 16:24
将 if (FLASH_EraseSector(SectorCounter, VoltageRange_3) != FLASH_COMPLETE)
    {
      /* Error occ ...

这个看着应该可以
奋斗吧,蜗牛! 发表于 2016-8-9 19:16 | 显示全部楼层
这个可以这样解决,不好的话请谅解:
         当你等待清除FLASH的这段时间,你使用定时器定时的在中断中清除Watchdog
泰山特曲123 发表于 2016-8-9 23:28 来自手机 | 显示全部楼层
你看门狗的周期是多少?确定是看门狗复位的,而不是其他?
无帝老三 发表于 2016-12-22 09:24 | 显示全部楼层
楼主解决了吗?分享一下经验
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

220

帖子

1

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

70

主题

220

帖子

1

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