请问STM32 flash dual bank擦除失败怎么解决?

2019-07-14 17:37发布



429 FLASH 为1M, 我想配置为dual bank, 每块512M.  设置DB1M成功。现在想擦除dual bank 15 sector, 即
#define ADDR_FLASH_SECTOR_15     ((uint32_t)0x0808C000) 。结果擦除不了。

可是如果不用dual bank, 单独擦除 8 sector 128K(含dual bank 15 sector 16K), 结果却正常。
请问谁用过dual bank。 这个是什么原因?调用函数如下:

uint32_t FLASH_EraseSector(uint32_t sectorAdd)
{
FLASH_EraseInitTypeDef EraseInitStruct;
uint32_t errSector = RET_OK;

HAL_FLASH_Unlock();
HAL_FLASH_OB_Unlock();

/* Fill EraseInit structure*/
EraseInitStruct.TypeErase = TYPEERASE_SECTORS;
EraseInitStruct.VoltageRange = VOLTAGE_RANGE_3;
EraseInitStruct.Sector = FLASH_GetSector(sectorAdd);
EraseInitStruct.NbSectors = 1;
HAL_FLASHEx_Erase(&EraseInitStruct, &errSector);

HAL_FLASH_OB_Lock();
HAL_FLASH_Lock();
return errSector;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
vuweurvxs
1楼-- · 2019-07-14 21:53
帮顶帮顶
jingyin58783
2楼-- · 2019-07-15 01:10
帮忙顶一下
nyvvhxcs
3楼-- · 2019-07-15 01:38
不懂帮顶
TOPCB
4楼-- · 2019-07-15 06:36
没有查到FLASH_OPTCR_DB1M的定义,FLASH_OPTCR中也没查到这个选项。
楼主截图发一下这个寄存器的说明。
zaichenxi
5楼-- · 2019-07-15 11:40
 精彩回答 2  元偷偷看……
cmh20
6楼-- · 2019-07-15 13:47

一周热门 更多>