單片機: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();