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 的数字。
也许这是一个愚蠢的问题,但如果你能给我一个线索,我真的很感激。
将数据写入浮点数:
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)