Flash更新后STM32F030系统复位

问题描述

在 STM32F030 控制器中,我想在闪存上写入某些变量。 此外,在运行时,这些变量可能会发生变化。因此,当检测到变量值发生变化时,我正在擦除闪存并再次写入。

问题:每次检测到变量更新时是否都需要重新设置系统?

下面是我的代码

void FlashWrite(void)
{
    //Channel A
    SlaveHolding_New[0] = SlaveHoldingReg[0];
    if(SlaveHolding_Prev[0]!=SlaveHolding_New[0])
    {
        Flash_Erase();
        Flash_WORD_Write(FLASH_ADD_CH1,SlaveHolding_New[0]);
        Flash_WORD_Write(FLASH_ADD_CH2,SlaveHolding_New[1]);
        Flash_WORD_Write(FLASH_ADD_CH3,SlaveHolding_New[2]);
        Flash_WORD_Write(FLASH_ADD_CH4,SlaveHolding_New[3]);
        SlaveHolding_Prev[0] = SlaveHolding_New[0];
        //HAL_NVIC_SystemReset();
    }

解决方法

只有当您想重启应用程序时,才需要重新设置MCU。

更新某些闪存扇区中的变量不需要重新启动应用程序。但是,请确保您的应用程序了解此更新,以便读取新值。 如果仅在启动时执行读取操作,则需要重置 MCU。