目录
一、简介
1.1、开发环境
STM32CubeIDE V1.9。
1.2、实现功能
使用STM32的Flash模拟Eeprom,实现断电存储;包含擦除Flash页、写字节到Flash和从Flash读字节。
二、擦除Flash页
芯片的Flash为64K,最后一页Flash的首地址为0x0x0800FC00。
#define FLASH_FOR_EEPROM_ADDRESS 0x0800FC00
擦除Flash页。
void ErasureFlashPage()
{
FLASH_EraseInitTypeDef pEraseInit;
HAL_FLASH_Unlock(); //解锁FLASH
pEraseInit.TypeErase = FLASH_TYPEERASE_PAGES; //定义擦除页
pEraseInit.PageAddress = FLASH_FOR_EEPROM_ADDRESS; //定义擦除首地址
pEraseInit.NbPages = 1; //定义擦除页面数 - 页 = 1024byte
HAL_FLASHEx_Erase(&pEraseInit, NULL); //擦除
HAL_FLASH_Lock(); //锁定FLASH
}
三、写字节到Flash
void ProgramByteToFlash(uint32_t address,uint16_t data)
{
HAL_FLASH_Unlock(); //解锁FLASH
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, ~data); //写入数据
HAL_FLASH_Lock(); //锁定FLASH
}
四、从Flash读字节
uint16_t ReadByteFromFlash(uint32_t address)
{
uint16_t read_buffer = 0;
read_buffer = *(__IO uint16_t*)(address);
read_buffer = ~read_buffer;
return read_buffer;
}