在线时间1326 小时
UID3411485
ST金币2878
蝴蝶豆152
注册时间2018-1-25
该用户从未签到
论坛元老
- 最后登录
- 2023-11-13
|
发表于 2020-9-18 21:40:02
|
显示全部楼层
我用过的是这样的,- int FLASH_Erase(const uint32_t start_addr, const uint32_t end_addr)
- {
- uint32_t FirstSector = 0, NbOfSectors = 0;
- uint32_t SECTORError = 0;
- HAL_StatusTypeDef status = HAL_ERROR;
- FLASH_EraseInitTypeDef EraseInitStruct;
- /* Get the 1st sector to erase */
- FirstSector = FlashSectorNo(start_addr);//GetSector(start_addr);
- /* Get the number of sector to erase from 1st sector*/
- NbOfSectors = FlashSectorNo(end_addr) - FirstSector + 1;;//GetSector(end_addr) - FirstSector + 1;
- /* Fill EraseInit structure*/
- EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS;
- EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3;
- EraseInitStruct.Sector = FirstSector;
- EraseInitStruct.NbSectors = NbOfSectors;
-
- HAL_FLASH_Unlock();
- status = HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError);
- HAL_FLASH_Lock();
-
- if(HAL_OK==status) return 0;
- return -1;
- }
复制代码 完整的flash.c文件,在下面帖子附件里面:https://www.stmcu.org.cn/module/forum/thread-625998-1-1.html
|
|