/***************************************************************************************
** 函数名称: Read_Protect
** 功能描述: 对STM8的选项字节进行读保护操作
** 参 数: None
** 返 回 值: None
***************************************************************************************/
void Read_Protect(void)
{
if(FLASH_ROP == FLASH_ROP_KEY) // 判断是否已加密
{
return;
}
//----------------------------------------------------------------------------------
do{ // 解锁Flash
FLASH_DUKR = 0xAE;
FLASH_DUKR = 0x56;
}
while(!(FLASH_IAPSR & 0x08)); // 成功后退出
//----------------------------------------------------------------------------------
FLASH_CR2 = 0x80; // 对选项字节进行写操作被使能
FLASH_NCR2 = 0x7F; // 互补控制寄存器
//----------------------------------------------------------------------------------
while(1) // 写保护操作死循环
{
IWDG_ReloadCounter(); // 喂狗
FLASH_ROP = FLASH_ROP_KEY; // 配置写保护标志
while(FLASH_ROP == FLASH_ROP_KEY); // 死循环判断写成功: 使看门狗起效进行重启操作
}
}
|