发新帖我要提问
123
返回列表
打印
[STM32F1]

将一个整型变量写读eeprom操作

[复制链接]
楼主: chuxh
手机看帖
扫描二维码
随时随地手机跟帖
41
公羊子丹| | 2025-3-14 07:44 | 只看该作者 回帖奖励 |倒序浏览
STM32F1 没有真正的 EEPROM,需要用 Flash 模拟,你是要存参数还是数据?

使用特权

评论回复
42
Wordsworth| | 2025-3-14 07:45 | 只看该作者
你要存的是 int32_t 还是 uint16_t?F1 的 Flash 是 16 位对齐的,写 int32_t 可能要注意地址对齐。

使用特权

评论回复
43
周半梅| | 2025-3-14 07:46 | 只看该作者
你可以用 STM32F1 的 Flash 最后一页 来模拟 EEPROM,存储整型变量完全没问题。

使用特权

评论回复
44
Bblythe| | 2025-3-14 07:47 | 只看该作者
ST 官方有 EEPROM 仿真例程,你可以在 STM32CubeF1 里找找,或者参考 EEPROM_Emulation 示例。

使用特权

评论回复
45
帛灿灿| | 2025-3-14 07:48 | 只看该作者
STM32F1 的 Flash 擦写有次数限制(大概 1 万次),如果是高频存取,建议用 FRAM 或 外部 EEPROM。

使用特权

评论回复
46
Pulitzer| | 2025-3-14 07:49 | 只看该作者
试试用 HAL_FLASH_Program() 写数据,地址范围要在 Flash 允许的用户区,别写错了。

使用特权

评论回复
47
童雨竹| | 2025-3-14 07:50 | 只看该作者
写入 EEPROM(Flash)之前,先检查 Flash 页是否已擦除,不能直接改写。

使用特权

评论回复
48
Uriah| | 2025-3-14 07:51 | 只看该作者
你是单次存储还是需要频繁更新?如果是频繁更新,建议用 双页轮换 技术,避免 Flash 损耗过快。

使用特权

评论回复
49
Clyde011| | 2025-3-14 07:51 | 只看该作者
Flash 读是直接从存储地址取数据,比如 *(uint32_t*)EEPROM_ADDR,你试过这样读取吗?

使用特权

评论回复
50
万图| | 2025-3-14 07:52 | 只看该作者
HAL 库有 FLASH_Program_Word() 可以写 32 位整型,读取直接用指针访问 Flash 地址。

使用特权

评论回复
51
zephyr9| | 2025-3-16 11:36 | 只看该作者
Float才是不好处理的,不过在C语言里还是算好处理的

使用特权

评论回复
52
线稿xg| | 2025-3-17 23:37 | 只看该作者
当然可以,一个字节一个字节地写入数据是单片机。

使用特权

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

本版积分规则