柴库柴库 发表于 2025-6-9 03:00

在STM32L5中以双存储体模式将负值存储在内部闪存中

用stm32L5编写应用程序,必须在双存储体模式下将负浮点值和正浮点值存储在内部闪存中。先把这一页闪存擦掉,然后再写。对于正值,很好处理。但是负值有问题。由于库只允许存储无符号整数,我将数据值乘以10,将其转换为整数,在读取数据后,我将其除以10。问题是,如何在内部闪存中存储负值。有没有更好的有效方法,不用乘和除以浮点数的倍数。

磨砂 发表于 2025-7-2 09:01

STM32L5的内部闪存支持双存储体模式,允许将闪存划分为两个独立的存储区域,常用于程序更新或数据存储

晓伍 发表于 2025-7-2 10:56

每个存储体可以独立擦除和写入,注意写入操作必须按半字或全字对齐

八层楼 发表于 2025-7-2 13:23

最小擦除单位为页,通常为1KB或2KB

keaibukelian 发表于 2025-7-2 13:31

在写入数据前,必须先擦除目标页。擦除操作以页为单位,且擦除后所有字节变为0xFF

paotangsan 发表于 2025-7-2 13:48

读取的值与原始负值不符的时候可以检查补码转换是否正确,确保数据类型与存储模式匹配。

renzheshengui 发表于 2025-7-2 13:59

STM32L5的内部闪存容量有限,需避免频繁擦写导致寿命降低

观海 发表于 2025-7-2 15:52

需确保负值的二进制表示正确,且存储地址符合对齐要求

guanjiaer 发表于 2025-7-2 15:52

负值在内存中以补码形式存储。例如,-1的16位补码为0xFFFF

heimaojingzhang 发表于 2025-7-2 20:36

如果使用半字存储,地址必须是偶数;如果使用全字存储,地址必须是4的倍数

wowu 发表于 2025-7-3 16:11

在擦除或写入过程中,建议禁用中断以避免操作冲突
页: [1]
查看完整版本: 在STM32L5中以双存储体模式将负值存储在内部闪存中