fhwbin 发表于 2025-1-4 19:42:53

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

本帖最后由 fhwbin 于 2025-1-4 20:28 编辑

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



uint32_t data = 0;
FLASH_Status FLASHStatus = FLASH_COMPLETE;
uint32_t Address = 0x08008000;

void flash_write(void)
{
        FLASH_Unlock();
       
        FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);       
       
        FLASHStatus = FLASH_ErasePage(Address);

        // data = 0 时此处会死循环
        while (FLASHStatus == FLASH_COMPLETE)
                FLASHStatus = FLASH_ProgramWord(Address, data);
       
        FLASH_Lock();       
}

scoopydoo 发表于 2025-1-4 20:06:49

俺不觉得会进入死循环,擦除之后第一次写入 0x00,后续再试图写入就会失败,不会循环下去的

lrain 发表于 2025-1-4 22:40:36

页: [1]
查看完整版本: 在STM32单片机中这段代码会影响闪存的寿命吗?