本帖最后由 winamp123 于 2015-3-27 12:55 编辑 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; } |
楼主截图发一下这个寄存器的说明。
谢谢回复。DB1M现在可以烧写,却不能擦除。我更新了帖子。