下面是我在5楼的代码节选:
FLASH_EraseOptionBytes();
FLASH_ProgramOptionByteData((u32)(&(OB->Data0)), 0x1e); //0x1ffff804
//恢复其它的option bytes
FLASH_ProgramOptionByteData((u32)(&(OB->RDP)), obTmp.RDP); //0x1ffff800
。。。 。。。
请看代码,我是先擦除,再写Data,再恢复其它的内容。在函数FLASH_EraseOptionBytes()和FLASH_ProgramOptionByteData()的内部都是有Option bytes区解锁的操作,(这是ST的库函数)。所以我不认为存在没有解锁和Data0不是0xffff的情况。
另外,我还有一点奇怪的,修改Option bytes之后,软件复位竟然不管用,一定要掉电、上电才会正常运行???这样就给使用带来很大的不便,远程断电有时候不容易做到。