方法1:代码加密
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;
(void)HAL_FLASH_Unlock();
(void)HAL_FLASH_OB_Unlock();
(void)HAL_FLASHEx_OBProgram(&OBInit);
(void)HAL_FLASH_OB_Lock();
(void)HAL_FLASH_Lock();
}
__HAL_FLASH_PREFETCH_BUFFER_ENABLE();
方法2:STVP 命令行加密
1)如下图配置后,save as lock.hex
2)通过stvp界面或命令行烧写业务固件(fw.hex)。
STVP_CmdLine -port=USB -BoardName=ST-LINK -Device=stm32L073xB -ProgMode=SWD -progress -no_warn_protect -no_loop -FileProg=fw.hex
3)通过stvp界面或命令行烧写OPTION BYTE(lock.hex)。
STVP_CmdLine -port=USB -BoardName=ST-LINK -Device=stm32L073xB -ProgMode=SWD -progress -no_warn_protect -no_loop -FileOption=lock.hex