想通过程序iap方式直接配置选项字,程序如下:
void OPT_Config(void)
{
if(FLASH_ReadOptionByte(OPTION_BYTE_START_PHYSICAL_ADDRESS+3) != 0x01fe)
{
FLASH_Unlock(FLASH_MEMTYPE_PROG);
FLASH_ProgramOptionByte((OPTION_BYTE_START_PHYSICAL_ADDRESS+3), 0x01);
FLASH_Lock(FLASH_MEMTYPE_PROG);
while(1); //不仿真时写入数据不成功,在此处会循环复位,仿真就会成功写入!!!
}
}
出现这样的问题:仿真状态下可更改选项字没问题,但设备正常工作状态下配置就不成功了。请教各位老师这是什么问题?
{
u8 i = OPT->OPT0;
if (i != 0xaa) {
do {
FLASH->DUKR = 0xae;
FLASH->DUKR = 0x56;
} while ((FLASH->IAPSR & FLASH_IAPSR_DUL) == 0); /* Unlock */
FLASH->CR2 = FLASH_CR2_OPT;
FLASH->NCR2 = (u8)~FLASH_NCR2_NOPT;
OPT->OPT0 = 0xaa;
FLASH->IAPSR = 0; /* Lock */
}
}
一周热门 更多>