Posted on 

嵌入式-FLASH操作

FLASH 操作

STM32F4开发指南寄存器版本_V1.2.pdf

详解

What is Flash Memory? | Definition from TechTarget

FLASH为什么写之前为什么要先擦除

写入

1
2
3
4
5
6
7
8
9
float  calibrationData[3];		

FLASH_Unlock(); \\写 0X45670123 到 FLASH_KEYR2, 写 0XCDEF89AB 到 FLASH_KEYR
OSTimeDlyHMSM(0,0,0,50,OS_OPT_TIME_PERIODIC,&err); \\延时
FLASH_EraseSector(FLASH_Sector_3,VoltageRange_3);

FLASH_Lock();

STMFLASH_Write(Correct_SAVE_ADDR,(int32_t*)&calibrationData,3); \\写数据

截图_20240719154157

读取

1
2
3
4
5
6
7
8
9
10
float  calibrationData[3];		

// 调用STMFLASH_Read
STMFLASH_Read(Correct_SAVE_ADDR,(int32_t*)&(calibrationData),3);

// 指针取值,将 addr 强制转换为 float 指针,然后取该指针所指向的地址的值,即得到了 addr 地址存储的数据
data=*(float*)addr;

// 定义指针,将 Quotient_SAVE_ADDR 强制转换为 float(*)[3] 指针,然后取该指针所指向的地址的值,即得到了 addr 地址的值。
float (*calibrationData)[3]=(float(*)[3])(Quotient_SAVE_ADDR);