请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 95|回复: 3
收起左侧

[有问必答] HAL库中Flash擦除总是不成功

[复制链接]

3

主题

11

帖子

17

积分

新手上路

积分
17
发表于 2019-2-22 16:59:16 | 显示全部楼层 |阅读模式


程序如下,使用的是官方的例子,单独运行官方例子时正常,但是移植到程序中时会卡在if (HAL_FLASHEx_Erase(&EraseInitStruct,&SectorError) !=HAL_OK)中,返回为错误值,
不知道问题出在哪里

uint32_t FirstSector = 0, NbOfSectors = 0, Address = 0;
        uint32_t SectorError = 0;
        u16 i,j;
       
        FirstSector=GetSector(FLASH_USER_START_ADDR);
        NbOfSectors = GetSector(FLASH_USER_END_ADDR) - FirstSector + 1;
        HAL_FLASH_Unlock();
       
        EraseInitStruct.TypeErase=FLASH_TYPEERASE_SECTORS;
        EraseInitStruct.NbSectors=NbOfSectors;
  EraseInitStruct.Sector=FirstSector;
        EraseInitStruct.VoltageRange=FLASH_VOLTAGE_RANGE_3;

        if (HAL_FLASHEx_Erase(&EraseInitStruct,&SectorError) !=HAL_OK)
        {
                   return HAL_ERROR;
        }
          __HAL_FLASH_DATA_CACHE_DISABLE();
  __HAL_FLASH_INSTRUCTION_CACHE_DISABLE();

  __HAL_FLASH_DATA_CACHE_RESET();
  __HAL_FLASH_INSTRUCTION_CACHE_RESET();

  __HAL_FLASH_INSTRUCTION_CACHE_ENABLE();
  __HAL_FLASH_DATA_CACHE_ENABLE();
       
         Address = FLASH_USER_START_ADDR;
       
        for(i=0; i<NumToWrite; i++)
        {
                        if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, Address, pBuffer[i]) == HAL_OK)
                        {
                                Address = Address + 4;
                        }
                        else
                        {
                                return HAL_ERROR;
                        }
        }
       
        HAL_FLASH_Lock();

回复

使用道具 举报

5391

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
43672
QQ
发表于 2019-2-22 17:00:59 | 显示全部楼层
这个就不清楚了,帮顶下。
ps:可以对比下官方例子运行时相关的Flash寄存器跟你的移植后的区别。

淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

3

主题

11

帖子

17

积分

新手上路

积分
17
 楼主| 发表于 2019-2-22 19:26:35 | 显示全部楼层
eric2013 发表于 2019-2-22 17:00
这个就不清楚了,帮顶下。
ps:可以对比下官方例子运行时相关的Flash寄存器跟你的移植后的区别。

好的,谢谢了
回复

使用道具 举报

16

主题

177

帖子

209

积分

高级会员

积分
209
发表于 2019-2-25 10:28:04 | 显示全部楼层
擦除前先查询下状态
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-3-19 23:08 , Processed in 0.165885 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表