怎么用stm32 flash来实现数据掉电不丢失

发布时间 2023-12-12 14:56:44作者: 不折不扣
参考战舰的FLASH模拟EEPROM实验

 

比如,
#define FLASHADDR_START 0x08006800
写:

u32 Data = 0x20161109;
FLASH_Unlock();
FLASH_ErasePage(FLASHADDR_START);
FLASH_ProgramWord(FLASHADDR_START,Data);
FLASH_Lock();

读:

u32 Data;
Data = *(u32*)FLASHADDR_START;
 
   

STM32程序一般放在Flash中,数据放在SRAM中!掉电一定会丢失的。不过STM32可以操作Flash,所以你也可以把数据放到Flash中。这样数据就不会丢失了

必须知道的stm32内部flash操作细节

1.stm32内部flash写操作只能是两个byte写入,不能一个byte一个byte的写

2.写之前需要擦除,擦除后数据均为FF

3.内部flash为512kb为大容量,小于512为小容量。在stm32的stm32f10x_flash.c里面FLASH_Status FLASH_ErasePage擦除页函数有区别擦2k还是擦1k,大容量擦2k,小容量擦1k

4.读可以只读一个字节,例如:*(uint8_t*)(Address)

5.我的代码中,擦除和写过程没有加延时函数,因为库函数里面已经有一个确保操作完成的函数。

6.擦写前先调用解锁函数。

 

STM32操作访问flash,包括写入数据到flash和从flash读取数据

https://blog.csdn.net/Ace_Shiyuan/article/details/78196648