STM32F103和STM32F767 FLASH读保护设置

STM32F103和STM32F767读保护设置

1.STM32F103读保护设置

基础条件:拥有:stm32f10x.h、stm32f10x_flash.c、stm32f10x_flash.h

设置flash读保护

//设置读FLASH保护

if (FLASH_GetReadOutProtectionStatus() != SET)

{

           FLASH_Unlock();

           FLASH_ReadOutProtection(ENABLE);

           FLASH_Lock();

         }

去flash读保护:

//设置读FLASH保护

if (FLASH_GetReadOutProtectionStatus() != RESET)

{

           FLASH_Unlock();

           FLASH_ReadOutProtection(DISABLE);

           FLASH_Lock();

         }

2.STM32F767读保护设置

基础条件:使用STM32F767 HAL库

设置flash读保护:

//设置flash读保护

void Flash_EnableReadProtection(void)

{

  FLASH_OBProgramInitTypeDef OBInit;

  __HAL_FLASH_PREFETCH_BUFFER_DISABLE();

  HAL_FLASHEx_OBGetConfig(&OBInit);

  if(OBInit.RDPLevel == OB_RDP_LEVEL_0)

  {

    OBInit.OptionType |= OPTIONBYTE_RDP;

    OBInit.RDPLevel = OB_RDP_LEVEL_1;

    HAL_FLASH_Unlock();

    HAL_FLASH_OB_Unlock();

    HAL_FLASHEx_OBProgram(&OBInit);

      HAL_FLASH_OB_Launch();//必须添加这个,不然读保护设置不生效

    HAL_FLASH_OB_Lock();

    HAL_FLASH_Lock();

  }

  __HAL_FLASH_PREFETCH_BUFFER_ENABLE();

}

去flash读保护:

//去flash读保护

void Flash_DisableReadProtection(void)

{

  FLASH_OBProgramInitTypeDef OBInit;

  __HAL_FLASH_PREFETCH_BUFFER_DISABLE();

  HAL_FLASHEx_OBGetConfig(&OBInit);

  if(OBInit.RDPLevel == OB_RDP_LEVEL_1)

  {

    OBInit.OptionType |= OPTIONBYTE_RDP;

    OBInit.RDPLevel = OB_RDP_LEVEL_0;

    HAL_FLASH_Unlock();

    HAL_FLASH_OB_Unlock();

    HAL_FLASHEx_OBProgram(&OBInit);

    HAL_FLASH_OB_Launch(); //必须添加这个,不然去保护不生效

    HAL_FLASH_OB_Lock();

    HAL_FLASH_Lock();

  }

  __HAL_FLASH_PREFETCH_BUFFER_ENABLE();

}

其他STM32的FLASH读保护设置,可以参考该文章。


版权声明:本文为sanyuedtaifen原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。