Гипотетическая ситуация следующая - у нас есть устройство до которого очень тяжело дотянуться ручками, но есть доступ к загрузчику. И нужно установить некоторые OB, например, управление ножками бута или установка защиты от чтения. Для того, чтобы OB встали на свое место - необходим перезапуск МК. Причем, простого ребута по вочдогу или через NVIC_SystemReset() будет недостаточно. Нужен именно Power Cycle всей внутренней периферии. Мы предполагаем, что у нас уже заведен watchdog, который "разбудит" МК перезагрузкой или включены часы RTC с ножкой WakeUp. Разницы особой нет. Вся соль применения Option Bytes без физической перезагрузки - именно в переходе в режим ожидания. В коде мы проверяем - был ли ранее выставлен необходимый режим работы с OB (в примере RDP 1 и отключение физической ножки перехода в загрузчик). Если нет - то включаем его и ждем ребута. Код для справки: int check_rdp(void){
FLASH_OBProgramInitTypeDef OBInit = {0};
HAL_FLASH_Unlock();
__HAL_FLASH_CLEAR_FLAG(FLASH_FLAG