Picproje Elektronik Sitesi

PICPROJE PROGRAMLAMA DERSLERİ => STM32 Örnekleri => Konuyu başlatan: oyhan - 10 Eylül 2017, 14:27:54

Başlık: STM32F0 Serisi İçin Code Protect (Level 1)
Gönderen: oyhan - 10 Eylül 2017, 14:27:54
Merhabalar
STM32F030F4 kullanıyorum. Aşağıdaki kodu main rutini içine koydum. Fakat kod protect sağlanamıyor. ST LINK ile bunu sağlıyorum. Tamam.
Ancak programlayıcı ile değilde kodun içinde bunu çözmek istediğim için epey uğraştım. Fakat bir hata yapıyorum sanırım.
Yardımcı olabilir misiniz?

int main(void)
{
unsigned char Value1=0, Value10=0, i=0;
        unsigned short charNu=0,  zaman;
 
#if READ_PROTECT  == 1
  if (OB->RDP != (uint32_t)(((uint32_t)((uint32_t)((uint8_t)~(OB_RDP_Level_1)) << 16)) | ((uint32_t)OB_RDP_Level_1)))
            {
FLASH_OB_Unlock ();
          FLASH_OB_RDPConfig(OB_RDP_Level_1);
FLASH_OB_Launch();
FLASH_OB_Lock ();
    }
#endif
CPU_Init();
...........
...........
...........
}

Başlık: Ynt: STM32F0 Serisi İçin Code Protect (Level 1)
Gönderen: 1n4001 - 11 Eylül 2017, 08:14:43

#define READ_PROTECT 1

void protect(void){
   FLASH_Status FLASHStatus = FLASH_COMPLETE;
   #if READ_PROTECT == 1

FLASH_Unlock();

   FLASH_OB_Unlock();

   // Clear all FLASH flags
   FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR | FLASH_FLAG_PGERR | FLASH_FLAG_BSY);

   if(!FLASH_OB_GetRDP())
   {
      FLASHStatus = FLASH_OB_RDPConfig(OB_RDP_Level_1); // Locks Chip (Lvl 2 Toasts)

      if(FLASHStatus == FLASH_COMPLETE)
      {
         // Generate System Reset to load the new option byte values
         FLASH_OB_Launch();
      }
   }
#endif
}