我使用的是STM32f103,在我的程序中,我需要在内部闪存中保存一些字节。但据我所知,我必须擦除一整页才能写进去,这需要时间。此延迟导致我的显示器闪烁。有人能帮我保存数据而不花那么多时间吗?
以下是可能有所帮助的列表:
1-MCU:STM32f103
2-IDE:Keil vision
3-使用STM32CubeMx 提供的HAL驱动程序
4-保存在Flash中的样本数据:{0x53,0xa0,0x01,0x54}
在下面的链接中,你可以找到我正在使用的代码。
Keil 的FLASH_PAGE
您提供的代码似乎没有很好地实现。每次启动写操作时,它基本上会做两件事:
- 擦除页面(这是需要时间的部分(
- 从给定的指针开始,写直到它达到零
这是一种非常无效的使用闪光灯的方法。
可能最简单和最知名的方法是使用ST的AN2594中描述的方法,尽管它有一些局限性。
尽管如此,在某些情况下,无论您使用何种方法,页面擦除都是必要的,并且无法避免一些延迟,除非您的uC支持双闪存组(STM32F103没有此功能(。您需要相应地计划闪存写入和显示刷新的时间。如果您需要定期写入闪存,那么您的设计中可能存在一些高级错误。
为了解决这个问题,我使用了STM自己提供的另一个库。我必须包括";eeprom.h";添加到您的项目中,然后添加";eeprom.c";你可以在互联网上很容易地找到这些文件。