STM32内部flash可以用作EEPROM,用于保存用户数据。
1、一般来说,stm32的flash擦写寿命只有10万次,如果在同一位置擦写过于频繁,在产品质保期内FLASH就会达到寿命极限,保存数据出现异常。
2、stm32G0系列,一页flash的容量是2KB,往flash写数据(写0)的时候可以在任意位置写入任意长度的字节(当然不超过2KB),但是擦除(写1)的时候必须整页擦除,只有十万次的擦除寿命、
3、用户保存的字节一般只有几十个字节,可以在同一页flash里的逐个区域保存数据(写0),直到使用完一整页,才擦除整页,这样就可以延长擦写寿命。
4、代码原理不细说,代码原理都要了解了才用,那生命效率太低了,直接告诉你们怎么使用吧,十分钟上手。
5、使用HAL库和LL库混合编程。
/**用户在此定义需要保存的数据**/
u8 user_data1;
u16 user_data2;
u32 user_data3;
float user_data4;
double user_data5;
/**************************/
#define d_FLASH_Page_Size 2048//一页flash2KB
#define d_FLASH_Data_maxbyte 32 //用户的数据长度,32 byte,必须是8的倍数,多余的字节填0x5A
#define d_FLASH_Data_maxDWord 4 //用户的数据长度,4 double word=4*64bit=32 byte,直接用上面32/8 就是这个数字了
typedef union
{
volatile uc8 R_Flash8[2048];
volatile uc16 R_Flash16[1024];
volatile uc32 R_Flash32[512];
volatile uc64 R_Flash64[256];
}FLASH_DATA_typedef;//用户不用管
const FLASH_DATA_typedef FLASH_DATA_SAVE __attribute__((at(d