如何在STM32F4探索板的Flash存储器中写入浮点数据

Blu*_*rry 2 floating-point flash-memory stm32f4discovery

我正在尝试通过 VCP 接收浮点数并将其写入 STM32F4 发现板的闪存中,使用 Keil IDE。用于写入 Flash 存储器的函数:

FLASH_Status FLASH_ProgramDoubleWord(uint32_t Address, uint64_t Data);
FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);
FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t Data);
FLASH_Status FLASH_ProgramByte(uint32_t Address, uint8_t Data);
Run Code Online (Sandbox Code Playgroud)

接受一个无符号整数值作为数据输入,但我已经设法使用以下代码在闪存中写入一个有符号整数:

int dataflash1 = -1000;
int gain;
uint32_t Address= 0x08008000;
.......
FLASH_ProgramWord(Address,dataflash1);
.......
gain=*(int*)Address;
Run Code Online (Sandbox Code Playgroud)

不过,我仍然没有设法写入浮点数据。如果我将“int”更改为“float”(它们都应该是 4 个字节的数据,在 keil 编译器指南中说)我会得到类似 1.7345673 e-42 的数字。

也许这是一个愚蠢的问题,但如果你能给我一个线索,我真的很感激。

Kib*_*tik 5

将数据写入浮点数:

float f = 12.34;
FLASH_ProgramWord(Address, *(uint32_t *)&f);
Run Code Online (Sandbox Code Playgroud)

将读取数据转换为浮点数:

uint32_t u = flash_read(Address);
float f = *(float *)&u;
Run Code Online (Sandbox Code Playgroud)