【问题标题】:Can´t erase data from flash memory (STM32)无法从闪存中擦除数据(STM32)
【发布时间】:2015-11-13 17:11:05
【问题描述】:

我正在尝试将一些数据保存到我的 STM32F407 板上的闪存中。在我保存它们之前,我需要擦除内存扇区。我选择了从地址 0x08004000 开始的 16 KB Sector1 并选择了Voltage range 2.1-2.7 V。我正在使用 HAL 库。

程序在 HAL_FLASHEx_Erase() -> FLASH_Erase_Sector() 函数内的 FLASH->CR |= FLASH_CR_STRT; 行之后停止响应。

我很确定这是我的错,但我无法找出问题所在。

HAL_FLASH_Unlock();
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR |
                           FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
FLASH_EraseInitTypeDef EraseInitStruct;
EraseInitStruct.Sector = FLASH_SECTOR_1;
EraseInitStruct.TypeErase = TYPEERASE_SECTORS;
EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_2;
EraseInitStruct.NbSectors = 1;
uint32_t SectorError = 0;
if (HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError) != HAL_OK) {     
    HAL_FLASH_Lock();
    return;
}

uint16_t data = 300;
//----------------------------write data
if (HAL_FLASH_Program(TYPEPROGRAM_WORD, start_address, data) != HAL_OK) {
    HAL_FLASH_Lock();
    return;
}
HAL_FLASH_Lock();

我是否选择了错误的电压范围或扇区数?

感谢您的回答。

【问题讨论】:

标签: c stm32f4discovery flash-memory hal


【解决方案1】:

如果您的程序大于 16k,那么您只是设法从闪存中擦除了其中的一部分。您应该从闪存末尾选择一个扇区(但是擦除时间会更长),或者在链接器配置中重新排列这些部分。

【讨论】:

    【解决方案2】:

    我找到了解决方案。我使用 HAL_FLASH_Lock() 函数而不是 HAL_FLASHEx_Erase() 函数,它工作正常。我还更改了 SECTOR,因为我不小心删除了我的程序。

    unit32_t address = 0x0800C000;
    HAL_FLASH_Unlock();
    __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR);
    
    FLASH_Erase_Sector(FLASH_SECTOR_3, VOLTAGE_RANGE_3);
    
    //----------------------------write data  
    uint8_t data = 'A';
    if (HAL_FLASH_Program(TYPEPROGRAM_BYTE, address, data) != HAL_OK) {
        HAL_FLASH_Lock();
        return;
    }
    HAL_FLASH_Lock();
    

    感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 2015-04-14
      • 2021-09-10
      • 2021-09-28
      • 1970-01-01
      • 2021-02-12
      • 2021-09-23
      • 2019-03-17
      • 2021-02-11
      • 2022-08-16
      相关资源
      最近更新 更多