diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f7.c b/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f7.c index 522dc8e6a725e8a3b141c8f95c33b8f824b0be59..a88dd6bf80fb21eb22e240bd1a66d913b78d5c2d 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f7.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f7.c @@ -8,6 +8,7 @@ * 2018-12-5 SummerGift first version * 2019-3-2 jinsheng add Macro judgment * 2020-1-6 duminmin support single bank mode + * 2021-8-11 CX fix the sector calculation error bug */ #include "board.h" @@ -280,7 +281,7 @@ int stm32_flash_erase(rt_uint32_t addr, size_t size) /* Get the 1st sector to erase */ FirstSector = GetSector(addr); /* Get the number of sector to erase from 1st sector*/ - NbOfSectors = GetSector(addr + size) - FirstSector + 1; + NbOfSectors = GetSector(addr + size - 1) - FirstSector + 1; /* Fill EraseInit structure*/ EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;