gpt4 book ai didi

floating-point - STM32F4探索板如何将float数据写入Flash中

转载 作者:行者123 更新时间:2023-12-01 13:23:45 26 4
gpt4 key购买 nike

我正在尝试通过 VCP 接收一个 float ,并使用 Keil IDE 将其写入 STM32F4 发现板的闪存中。用于写入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);

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

int dataflash1 = -1000;
int gain;
uint32_t Address= 0x08008000;
.......
FLASH_ProgramWord(Address,dataflash1);
.......
gain=*(int*)Address;

不过,我还是没能写出 float 据。如果我将“int”更改为“float”(它们都应该是 4 字节数据,在 keil 编译器指南中有说明)我会得到像 1.7345673 e-42 这样的数字。

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

最佳答案

将数据写入 float :

float f = 12.34;
FLASH_ProgramWord(Address, *(uint32_t *)&f);

将读取的数据转换为 float :

uint32_t u = flash_read(Address);
float f = *(float *)&u;

关于floating-point - STM32F4探索板如何将float数据写入Flash中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24672152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com