stm8s003f3 选项字 编程的问题

2019-12-28 17:51发布

想通过程序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);  //不仿真时写入数据不成功,在此处会循环复位,仿真就会成功写入!!!
  }
}

出现这样的问题:仿真状态下可更改选项字没问题,但设备正常工作状态下配置就不成功了。请教各位老师这是什么问题?
4条回答
mowin
2019-12-28 18:09 .采纳回答
void do_RDP(void)
{
        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 */
        }
}

一周热门 更多>