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读保护设置,可以参考该文章。