在STM32上编写Flash

Arn*_*rne 3 c microcontroller stm32

我在执行上的闪存一个STM32微处理器仿真EEPROM,主要是由ST基础上,应用笔记(AN2594 - 在STM32F10x微控制器EEPROM仿真).

其中的基本概述以及相应的数据手册和编程手册(PM0075)非常清楚.但是,我不确定电源输出/系统复位对闪存编程和页面擦除操作的影响.AppNote也考虑了这种情况,但没有说明编程(写)操作中断时到底发生了什么:

  1. 地址是否具有任意(随机)值?要么
  2. 只写了一部分位?要么
  3. 它有默认的擦除值0xFF吗?

感谢您提供相关文档的提示或指示.

阿恩

Pot*_*ter 7

这不是一个真正的软件问题(更不用说C++)了.它属于electronics.se,但似乎没有选择将问题迁移到那里......仅限于超级用户或webmasters.se等网站.

简短的回答是硬件固有地不可靠.理论上总是会出现错误,这会中断写入过程或导致写入错误的位.

答案很长,闪存电路通常设计为最大可靠性.写入时突然断电可能不会导致损坏,因为驱动器电路可能具有足够的电容或能够在低电压条件下工作足够长以在必要时完成电荷耗尽.擦除时的功率损耗可能比较棘手.你真的需要咨询制造商.

对于没有电源中断的"软"系统复位,如果硬件并不总是完全擦除它立即处理的任何字节,那将是非常令人惊讶的.通常,字节以预定义的顺序擦除,因此您可以使用第一个或最后一个来指示页面是满还是空.