• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于stm32使用flash保存数据的奇怪问题

FEItwo 2019-03-03 浏览量:1470
 使用stm32f103c8t这款芯片使用过程中我会将上位机发送过来的一些数据保存到flash中去,我的保存过程时这样的:
1、将起始页定义为flash空间的第63页       #define    PAGE_ADDR     (0x08000000 + 63 * 1024)  
2、需要保存的时候我会按照对flash解锁、擦除本页、写入数据、上锁的步骤进行数据写入
3、正常情况下不会对flash数据进行写入,只会读取 
但我现在发现一个比较奇怪的问题:
     在对STM32进行flash数据写入保存成功后,一段时间读出来都是正常的,但不知道某一时刻开始就保存到flash中的数据就突然没了,被复位了(这种情况并不一定会出现,偶尔发生),请问各位工程师能给一些建议吗?谢谢。
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 两种可能

    1、STM32的供电电压不稳定,造成其内部flash的电源也不稳定,导致数据丢失

    2、程序问题,在后面对这个区域又进行过擦除操作

    本人也用STM32的flash来保存部分数据,设备在工业环境下运行一年多没出现过丢失的情况,所以STM32的flash稳定性还是可以信任的

    • 发布于 2019-03-03
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:8
  • flash有擦写寿命的,可能是寿命到了,还有就是写的时候必须关闭所有中断源,这一点很多人都忽略
    • 发布于2019-03-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 感觉是不是在擦写中有被中断的情况。擦写时间过长,中间有被打断的可能性。
    • 发布于2019-03-03
    • 举报
    • 评论 0
    • 0
    • 0

  • 检查一下程序中有无其他地方对这个地址有操作。
    • 发布于2019-03-03
    • 举报
    • 评论 0
    • 0
    • 0

  • Flash一般是掉电不丢失 的,所以,有可能是你的其他的程序无意对这个数据进行了修改或是擦出
    • 发布于2019-03-04
    • 举报
    • 评论 0
    • 0
    • 0

  • 检查自己的代码吧  可能是代码有误操作
    • 发布于2019-03-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 既然都已经写进去,保存了,没有误操作写就不会变化的。

    很大可能还是程序上有写操作,改变了值。

    • 发布于2019-03-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 可能是你代码越界擦出了这部分的数据。写的时候注意关闭所有中断,防止打断FLASH擦写。试试
    • 发布于2019-03-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 没遇到,是不是被全部擦除了。FLAHS写的时候尽量不要被中断打断会有影响

    • 发布于2019-03-27
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于stm32使用flash保存数据的奇怪问题