C语言 Stm8选项字节编程

a8jjtwal  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(115)

我想在没有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编程时,它可以工作。但是,当我在“内存”区域和“选项字节”区域的上述代码的功能代码编程,我只是得到写保护,而不是读保护。我该怎么办?

3gtaxfhh

3gtaxfhh1#

启用ROP时,拒绝SWIM(电路编程中的ICP)的读/写访问,但不拒绝MCU本身(应用程序编程中的IAP)的读/写访问
唯一的例外是选项bytes,它们被特殊处理。
在参考手册中,您可以找到确认这一点的表格:

RM0016 STM8S005k6 reference manual
你对哪个有意见?IAP还是ICP?您确定代码正确执行,并且ROP字节真的设置为0xAA吗?上电复位后ROP是否仍然不正确?

相关问题