单片机:STM32F030
库:HAL库
目标:在程序软件中修改读保护选项字节,这样程序下载进去之后就自动保护了,不用再在ST-LINK中修改选项字节了
注意事项:写选项字节,除了解锁OB,还要解锁FLASH,开始只解锁OB,没解锁FLASH,一直调试不成功
static FLASH_OBProgramInitTypeDef OptionsBytesStruct; //解锁Flash HAL_FLASH_Unlock(); //解锁选项字节区 HAL_FLASH_OB_Unlock(); //读取选项字节设置 HAL_FLASHEx_OBGetConfig(&OptionsBytesStruct); //检测RDP的设置是否低于LEVEL 1 if(OptionsBytesStruct.RDPLevel < OB_RDP_LEVEL_1) { //重写选项字 OptionsBytesStruct.OptionType = OPTIONBYTE_RDP; OptionsBytesStruct.RDPLevel = OB_RDP_LEVEL_1; //如果写入没成功 if(HAL_FLASHEx_OBProgram(&OptionsBytesStruct) != HAL_OK) { //红灯快速闪烁 while(1) { LED_RED_ON(); DelayMs(100); LED_RED_OFF(); DelayMs(100); } } else { //红色LED显示短短长 LED_RED_ON(); DelayMs(200); LED_RED_OFF(); DelayMs(200); LED_RED_ON(); DelayMs(200); LED_RED_OFF(); DelayMs(200); LED_RED_ON(); DelayMs(1000); //如果写入成功,则复位加载选项字节 HAL_FLASH_OB_Launch(); } } //锁定选项字节 HAL_FLASH_OB_Lock(); HAL_FLASH_Lock();