Занимался автоматизацией производства изделий на стмках и наткнулся на то, что option bytes можно изменять программно, а не только при помощи ST-link utility.
Самое полезное это включение зашиты от чтения при первом запуске, что убирает необходимость вручную лезть в option bytes каждый раз при заливки прошивки.
Вот простенький код, кот нужно положить в начале программы (сразу после main например)
#include "stm32f10x.h"
if (!(FLASH->OBR & FLASH_OBR_RDPRT))
{
FLASH->KEYR = 0x45670123;
FLASH->KEYR = 0xCDEF89AB;
FLASH->OPTKEYR = 0x45670123;
FLASH->OPTKEYR = 0xCDEF89AB;
FLASH->CR |= FLASH_CR_OPTER;
FLASH->CR|= FLASH_CR_STRT;
while ((FLASH->SR & FLASH_SR_BSY) != 0 );
FLASH->CR |= FLASH_CR_LOCK;
}
как видно, этот код для мк STM32F1, но насколько я знаю, на эту область отличий у других мк почти нет.