矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 813|回复: 2

在STM32单片机中这段代码会影响闪存的寿命吗?

[复制链接]
     
发表于 2025-1-4 19:42:53 | 显示全部楼层 |阅读模式
本帖最后由 fhwbin 于 2025-1-4 20:28 编辑

从网上复制的代码,在 data = 0 时,下面代码的 while 会死循环写入闪存,这段代码我在单片机实机上运行了几分钟,请问这样会影响闪存的寿命吗?



  1. uint32_t data = 0;
  2. FLASH_Status FLASHStatus = FLASH_COMPLETE;
  3. uint32_t Address = 0x08008000;

  4. void flash_write(void)
  5. {
  6.         FLASH_Unlock();
  7.          
  8.         FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);       
  9.          
  10.         FLASHStatus = FLASH_ErasePage(Address);

  11.         // data = 0 时此处会死循环
  12.         while (FLASHStatus == FLASH_COMPLETE)
  13.                 FLASHStatus = FLASH_ProgramWord(Address, data);
  14.          
  15.         FLASH_Lock();       
  16. }
复制代码
     
发表于 2025-1-4 20:06:49 | 显示全部楼层
俺不觉得会进入死循环,擦除之后第一次写入 0x00,后续再试图写入就会失败,不会循环下去的
回复 支持 反对

使用道具 举报

发表于 2025-1-4 22:40:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-26 11:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表