我想在没有stvp的STM8S005k6上编程“Option Byte”。我通过在Option Byte区域上编程它的代码来实现,但这使得它只受写保护,而不是读保护:
void Read_Protect_Flash(void)
{
FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
// FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
while(FLASH_ReadOptionByte(0x4800) != 0xAA)
{
FLASH_Unlock(FLASH_MEMTYPE_DATA);
FLASH_EraseOptionByte(0x4800);
FLASH_ProgramOptionByte(0x4800, 0xAA);
FLASH_Lock(FLASH_MEMTYPE_DATA);
}
}
当我直接使用IAR编程时,它可以工作。但是,当我在“内存”区域和“选项字节”区域的上述代码的功能代码编程,我只是得到写保护,而不是读保护。我该怎么办?
1条答案
按热度按时间3gtaxfhh1#
启用ROP时,拒绝SWIM(电路编程中的ICP)的读/写访问,但不拒绝MCU本身(应用程序编程中的IAP)的读/写访问
唯一的例外是选项bytes,它们被特殊处理。
在参考手册中,您可以找到确认这一点的表格:
RM0016 STM8S005k6 reference manual
你对哪个有意见?IAP还是ICP?您确定代码正确执行,并且ROP字节真的设置为0xAA吗?上电复位后ROP是否仍然不正确?