首页 > 解决方案 > 在 STM32F7xx(24 个扇区)上使用 Flash 进行读写

问题描述

我有以下结构要写入内存:

#define FLASH_CONFIG_START_ADDR ((uint32_t) 0x080E0000)
#define FLASH_CONFIG_END_ADDR ((uint32_t) 0x080E0040)

union NVRAM {
    Config_t config;
    uint8_t data[512];
} DevNVRAM;

我已经使用此代码写入内存

    uint32_t l_address = FLASH_CONFIG_START_ADDR;
    uint8_t l_index = 0x00;
    l_address = FLASH_CONFIG_START_ADDR;
    HAL_FLASH_Unlock();
    FLASH_Erase_Sector(FLASH_SECTOR_11, VOLTAGE_RANGE_1);
    while (l_address < FLASH_CONFIG_END_ADDR)
        if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_BYTE, l_address,
                DevNVRAM.data[l_index]) == HAL_OK) {
            l_index += 1;
            l_address += 1;
        }
    HAL_FLASH_Lock();

然后我只是从同一个内存块中读取。

    l_address = FLASH_CONFIG_START_ADDR;
    l_index = 0x00;
    while (l_address < FLASH_CONFIG_END_ADDR) {
        DevNVRAM.data[l_index] = *(uint8_t*) l_address;
        l_index += 1;
        l_address += 1;
    }

问题如下,我读完整个扇区后,数据变得不一样了,特别是用零填充。代码有什么问题?

标签: stm32flash-memorystm32f7

解决方案


推荐阅读