打印
[STM32L5]

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

[复制链接]
230|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
柴库柴库|  楼主 | 2025-6-9 03:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用stm32L5编写应用程序,必须在双存储体模式下将负浮点值和正浮点值存储在内部闪存中。
先把这一页闪存擦掉,然后再写。
对于正值,很好处理。但是负值有问题。
由于库只允许存储无符号整数,我将数据值乘以10,将其转换为整数,在读取数据后,我将其除以10。
问题是,如何在内部闪存中存储负值。有没有更好的有效方法,不用乘和除以浮点数的倍数。

使用特权

评论回复
沙发
磨砂| | 2025-7-2 09:01 | 只看该作者
STM32L5的内部闪存支持双存储体模式,允许将闪存划分为两个独立的存储区域,常用于程序更新或数据存储

使用特权

评论回复
板凳
晓伍| | 2025-7-2 10:56 | 只看该作者
每个存储体可以独立擦除和写入,注意写入操作必须按半字或全字对齐

使用特权

评论回复
地板
八层楼| | 2025-7-2 13:23 | 只看该作者
最小擦除单位为页,通常为1KB或2KB

使用特权

评论回复
5
keaibukelian| | 2025-7-2 13:31 | 只看该作者
在写入数据前,必须先擦除目标页。擦除操作以页为单位,且擦除后所有字节变为0xFF

使用特权

评论回复
6
paotangsan| | 2025-7-2 13:48 | 只看该作者
读取的值与原始负值不符的时候可以检查补码转换是否正确,确保数据类型与存储模式匹配。

使用特权

评论回复
7
renzheshengui| | 2025-7-2 13:59 | 只看该作者
STM32L5的内部闪存容量有限,需避免频繁擦写导致寿命降低

使用特权

评论回复
8
观海| | 2025-7-2 15:52 | 只看该作者
需确保负值的二进制表示正确,且存储地址符合对齐要求

使用特权

评论回复
9
guanjiaer| | 2025-7-2 15:52 | 只看该作者
负值在内存中以补码形式存储。例如,[size=0.875]-1的16位补码为0xFFFF

使用特权

评论回复
10
heimaojingzhang| | 2025-7-2 20:36 | 只看该作者
如果使用半字存储,地址必须是偶数;如果使用全字存储,地址必须是4的倍数

使用特权

评论回复
11
wowu| | 2025-7-3 16:11 | 只看该作者
在擦除或写入过程中,建议禁用中断以避免操作冲突

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

53

帖子

0

粉丝