Forum: Mikrocontroller und Digitale Elektronik Option byte RDP STM32F0


von Martin W. (wassertropfen)


Lesenswert?

Ich möchte in den Optionbytes den Readprotectionlevel=1 setzen. 
Allerdings sehe ich kein Togglen des Pins, was nach Abschließen der 
Initialisierung geschehen müsste. Die Funktion HAL_FLASH_OB_Launch(); 
scheint Probleme zu machen.Bei Auskommentieren der Funktion 
HAL_FLASH_OB_Launch() wird die mainloop erreicht. Ist an diesem Vorgehen 
den RDP=1 zu setzen etwas falsch ?

Ich verwende hier die HAL_DRIVER. Das gleiche Problem habe ich aber auch 
mit der STD_PERIPHERAL_DRIVER. Tools: Keil 4.73, EWARM 7.2, ST-LINKV2
1
 
2
void MX_Flash_Init(void)
3
{
4
  FLASH_OBProgramInitTypeDef Optbyte;   
5
  
6
  HAL_FLASHEx_OBGetConfig(&Optbyte);   // read out RDPLvL
7
  
8
  if(Optbyte.RDPLevel ==RESET){        // Lvl 0 = 0, Lvl 1,2 =1               
9
    Optbyte.OptionType=OPTIONBYTE_RDP; // select RDP optionbyte
10
    Optbyte.RDPLevel=OB_RDP_LEVEL_1;   // select RDP level 1
11
    HAL_FLASH_Unlock();                // unlock Flash        
12
    HAL_FLASH_OB_Unlock();             // unlock Optionbytes
13
    HAL_FLASHEx_OBProgram(&Optbyte);   // set RDP=1
14
    HAL_FLASH_OB_Launch();             // write OB to Flash and reset
15
  }
16
  HAL_FLASH_OB_Lock();                  // Lock Optionbytes
17
  HAL_FLASH_Lock();                     // lock Flash  
18
}
1
int main(void)
2
{
3
  MX_GPIO_Init();
4
  MX_Flash_Init();
5
 while (1)
6
 {
7
 GPIOA->ODR^=GPIO_PIN_7;
8
 }
9
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.