STM32F0 Serisi İçin Code Protect (Level 1)

Başlatan oyhan, 10 Eylül 2017, 14:27:54

oyhan

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();
...........
...........
...........
}

BİRLİKTEN KUVVET DOĞAR:

1n4001

#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
}