I am facing a rather strange problem when trying to program the two user option bytes (0x1ffff804, 0x1ffff806).
The code I am using is rather straightforward:
volatile FLASH_Status test3;
volatile uint8_t test, test2;
test = 0x12;
test3 = FLASH_OB_ProgramData( 0x1FFFF804, test);
test2 = FLASH_OB_GetUser();
The code il flashed on a Nucleo64 board. Apparently the CPU hangs completely when executing FLASH_OB_Launch().
If I step the code through the instructions, it looks as if FLASH_OB_Launch() is generating a complete erase of the chip. In fact, I cannot simply reset and re-start execution, I need to re-load the program with the debugger.
If I remove FLASH_OB_Launch() the code executes with no problems, test3 reports FLASH_COMPLETE but the options bytes are not programmed.
I can read and program the option bytes without any problem using ST-link.
Elsewhere in the code I am erasing and programming the flash memory again with no problems, but the options bytes just do not program!
Can anybody please give me a hint?