打印
[STM32F0]

stm32f031g4 flash 擦除最后一页跑飞

[复制链接]
762|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiaofei558008|  楼主 | 2019-12-10 11:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

各位大侠,stm32f031g4 最后一页起始是0x08003c00,页大小1024字节;

试了4块板子,2块稳定ok,2块老是跑飞,2块跑飞的就在执行擦除指令的时候跑飞,有时候单步直线ok,全速跑飞;代码完全一样,已经关闭全局中断,执行擦除操作;
求大侠帮忙呀!



bool FlashErase(FLASH_TypeDef *pTemp, uint32_t PageAddr)
{
  bool status = false;
  int16_t temp = (PageAddr - FLASH_START_ADDRESS) / FLASH_PAGE_BYTES;

  if((temp > 0) && (temp < FLASH_PAGES))
  {
    /* Unlock Flash.
    */
    FlashUnlock(pTemp);

    /* Enable Erase Operation.
    */
    pTemp->CR |= FLASH_CR_PER;
    pTemp->AR  = PageAddr;
    pTemp->CR |= FLASH_CR_STRT;   //这个代码开始跑飞;那2个正常的,一直不跑飞;芯片代码一样

    /* Waiting for Erase finish.
    */
    while ((pTemp->SR & FLASH_SR_BSY) != 0);

    if((pTemp->SR & FLASH_SR_EOP) != 0)
    {
      pTemp->SR = FLASH_SR_EOP;
      status = true;
    }

    /* Clear Erase Operation.
    */
    pTemp->CR &= ~FLASH_CR_PER;

    /* Lock Flash.
    */
    FlashLock(pTemp);
  }

  return status;
}

使用特权

评论回复
沙发
goodluck09876| | 2019-12-10 12:54 | 只看该作者
感觉还是不要使用到最大的一个flash,但是你读写靠前的,是肯定不会出问题的!后面的,估计无法保证!

使用特权

评论回复
板凳
xiaofei558008|  楼主 | 2019-12-10 13:47 | 只看该作者
goodluck09876 发表于 2019-12-10 12:54
感觉还是不要使用到最大的一个flash,但是你读写靠前的,是肯定不会出问题的!后面的,估计无法保证! ...

没这么水吧?靠前都是代码区域

使用特权

评论回复
地板
xiaofei558008|  楼主 | 2019-12-10 16:06 | 只看该作者
问题找到了,jlink仿真器速度太快了,挂了;换成1000k就好了;

使用特权

评论回复
5
zeshoufx| | 2019-12-10 17:19 | 只看该作者
xiaofei558008 发表于 2019-12-10 16:06
问题找到了,jlink仿真器速度太快了,挂了;换成1000k就好了;

谢谢分享,,,,以后注意降低仿真速度

使用特权

评论回复
6
wakayi| | 2020-1-7 14:21 | 只看该作者
感谢楼主分享经验

使用特权

评论回复
7
wowu| | 2020-1-7 14:29 | 只看该作者
以后我也需要注意了

使用特权

评论回复
8
xiaoqizi| | 2020-1-7 14:34 | 只看该作者
看来是速度过快了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

134

主题

943

帖子

13

粉丝