在 STM32f10x 中使用 EEPROM

Posted

技术标签:

【中文标题】在 STM32f10x 中使用 EEPROM【英文标题】:Using EEPROM in STM32f10x 【发布时间】:2021-08-11 23:00:09 【问题描述】:

我正在使用 STM32f103,在我的程序中,我需要在内部闪存中保存一些字节。但据我所知,我必须擦除一整页才能在其中写入,这需要时间。 这种延迟导致我的显示器闪烁。 谁能帮我保存我的数据而不会花费太多时间?

这是一个可能有帮助的列表:

1- 单片机:STM32f103

2- IDE:Keil 视觉

3-使用STM32CubeMx提供的HAL驱动

4- 保存在 Flash 中的示例数据:0x53, 0xa0, 0x01, 0x54

在下面的链接中,您可以找到我正在使用的代码。

FLASH_PAGE for Keil

【问题讨论】:

【参考方案1】:

您提供的代码似乎没有很好地实现。每次启动写入操作时,它基本上会做两件事:

    擦除页面(这是需要时间的部分) 从给定的指针开始,一直写到零。

这是一种非常低效的使用闪光灯的方式。

可能最简单也是最广为人知的方法是使用 ST 的AN2594 中描述的方法,尽管它有一些限制。

不过,在某些时候,无论您使用哪种方法,都需要进行页面擦除,并且无法避免一些延迟,除非您的 uC 支持双闪存库(STM32F103 没有此功能)。您需要计划闪存写入的时序并相应地显示刷新。如果您需要定期写入闪存,则您的设计中可能存在一些高级错误。

【讨论】:

【参考方案2】:

为了解决这个问题,我使用了 STM 本身提供的另一个库。我必须将“eeprom.h”包含到您的项目中,然后将“eeprom.c”添加到其中。您可以在 Internet 上轻松找到这些文件。

【讨论】:

以上是关于在 STM32f10x 中使用 EEPROM的主要内容,如果未能解决你的问题,请参考以下文章

STM32WB55 或 STM32F10 上的裸机编程

如何在 STM32F10x 上重定向 printf()?

STM32F10x随笔(keil mdk)

stm32f10x串口实验之中断模式

为啥编译器标志“-mcpu=cortex-m3”与 stm32f10x 出错?

在stm32F10X单片机中,时钟有啥作用?,有那几种?请举列说明?