CARME-M4 BSP  V1.5
Option Bytes Programming functions

Option Bytes Programming functions. More...

+ Collaboration diagram for Option Bytes Programming functions:

Functions

void FLASH_OB_Unlock (void)
 Unlocks the FLASH Option Control Registers access. More...
 
void FLASH_OB_Lock (void)
 Locks the FLASH Option Control Registers access. More...
 
void FLASH_OB_WRPConfig (uint32_t OB_WRP, FunctionalState NewState)
 Enables or disables the write protection of the desired sectors, for the first 1 Mb of the Flash. More...
 
void FLASH_OB_WRP1Config (uint32_t OB_WRP, FunctionalState NewState)
 Enables or disables the write protection of the desired sectors, for the second 1 Mb of the Flash. More...
 
void FLASH_OB_PCROPSelectionConfig (uint8_t OB_PcROP)
 Select the Protection Mode (SPRMOD). More...
 
void FLASH_OB_PCROPConfig (uint32_t OB_PCROP, FunctionalState NewState)
 Enables or disables the read/write protection (PCROP) of the desired sectors, for the first 1 MB of the Flash. More...
 
void FLASH_OB_PCROP1Config (uint32_t OB_PCROP, FunctionalState NewState)
 Enables or disables the read/write protection (PCROP) of the desired sectors. More...
 
void FLASH_OB_RDPConfig (uint8_t OB_RDP)
 Sets the read protection level. More...
 
void FLASH_OB_UserConfig (uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY)
 Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. More...
 
void FLASH_OB_BootConfig (uint8_t OB_BOOT)
 Configure the Dual Bank Boot. More...
 
void FLASH_OB_BORConfig (uint8_t OB_BOR)
 Sets the BOR Level. More...
 
FLASH_Status FLASH_OB_Launch (void)
 Launch the option byte loading. More...
 
uint8_t FLASH_OB_GetUser (void)
 Returns the FLASH User Option Bytes values. More...
 
uint16_t FLASH_OB_GetWRP (void)
 Returns the FLASH Write Protection Option Bytes value. More...
 
uint16_t FLASH_OB_GetWRP1 (void)
 Returns the FLASH Write Protection Option Bytes value. More...
 
uint16_t FLASH_OB_GetPCROP (void)
 Returns the FLASH PC Read/Write Protection Option Bytes value. More...
 
uint16_t FLASH_OB_GetPCROP1 (void)
 Returns the FLASH PC Read/Write Protection Option Bytes value. More...
 
FlagStatus FLASH_OB_GetRDP (void)
 Returns the FLASH Read Protection level. More...
 
uint8_t FLASH_OB_GetBOR (void)
 Returns the FLASH BOR level. More...
 

Detailed Description

Option Bytes Programming functions.

 ===============================================================================
                ##### Option Bytes Programming functions #####
 ===============================================================================  
    [..]
      This group includes the following functions:
      (+) void FLASH_OB_Unlock(void)
      (+) void FLASH_OB_Lock(void)
      (+) void FLASH_OB_WRPConfig(uint32_t OB_WRP, FunctionalState NewState)
      (+) void FLASH_OB_WRP1Config(uint32_t OB_WRP, FunctionalState NewState)  
      (+) void FLASH_OB_PCROPSelectionConfig(uint8_t OB_PCROPSelect)
      (+) void FLASH_OB_PCROPConfig(uint32_t OB_PCROP, FunctionalState NewState)
      (+) void FLASH_OB_PCROP1Config(uint32_t OB_PCROP, FunctionalState NewState) 
      (+) void FLASH_OB_RDPConfig(uint8_t OB_RDP)
      (+) void FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY)
      (+) void FLASH_OB_BORConfig(uint8_t OB_BOR)
      (+) FLASH_Status FLASH_ProgramOTP(uint32_t Address, uint32_t Data)                            
      (+) FLASH_Status FLASH_OB_Launch(void)
      (+) uint32_t FLASH_OB_GetUser(void)                       
      (+) uint8_t FLASH_OB_GetWRP(void)
      (+) uint8_t FLASH_OB_GetWRP1(void)
      (+) uint8_t FLASH_OB_GetPCROP(void)
      (+) uint8_t FLASH_OB_GetPCROP1(void)                          
      (+) uint8_t FLASH_OB_GetRDP(void)                         
      (+) uint8_t FLASH_OB_GetBOR(void)
    [..]  
      The following function can be used only for STM32F42xxx/43xxx devices. 
      (+) void FLASH_OB_BootConfig(uint8_t OB_BOOT)
    [..]   
     Any operation of erase or program should follow these steps:
      (#) Call the FLASH_OB_Unlock() function to enable the FLASH option control 
          register access

      (#) Call one or several functions to program the desired Option Bytes:
        (++) void FLASH_OB_WRPConfig(uint32_t OB_WRP, FunctionalState NewState) 
             => to Enable/Disable the desired sector write protection
        (++) void FLASH_OB_RDPConfig(uint8_t OB_RDP) => to set the desired read 
             Protection Level
        (++) void FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY) 
             => to configure the user Option Bytes.
        (++) void FLASH_OB_BORConfig(uint8_t OB_BOR) => to set the BOR Level             

      (#) Once all needed Option Bytes to be programmed are correctly written, 
          call the FLASH_OB_Launch() function to launch the Option Bytes 
          programming process.
     
      -@- When changing the IWDG mode from HW to SW or from SW to HW, a system 
          reset is needed to make the change effective.  

      (#) Call the FLASH_OB_Lock() function to disable the FLASH option control 
          register access (recommended to protect the Option Bytes against 
          possible unwanted operations)

Function Documentation

void FLASH_OB_BootConfig ( uint8_t  OB_BOOT)

Configure the Dual Bank Boot.

Note
This function can be used only for STM32F42xxx/43xxx devices.
Parameters
OB_BOOTspecifies the Dual Bank Boot Option byte. This parameter can be one of the following values:
  • OB_Dual_BootEnabled: Dual Bank Boot Enable
  • OB_Dual_BootDisabled: Dual Bank Boot Disabled
Return values
None

Definition at line 1242 of file stm32f4xx_flash.c.

void FLASH_OB_BORConfig ( uint8_t  OB_BOR)

Sets the BOR Level.

Parameters
OB_BORspecifies the Option Bytes BOR Reset Level. This parameter can be one of the following values:
  • OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V
  • OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V
  • OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V
  • OB_BOR_OFF: Supply voltage ranges from 1.62 to 2.1 V
Return values
None

Definition at line 1263 of file stm32f4xx_flash.c.

uint8_t FLASH_OB_GetBOR ( void  )

Returns the FLASH BOR level.

Parameters
None
Return values
TheFLASH BOR level:
  • OB_BOR_LEVEL3: Supply voltage ranges from 2.7 to 3.6 V
  • OB_BOR_LEVEL2: Supply voltage ranges from 2.4 to 2.7 V
  • OB_BOR_LEVEL1: Supply voltage ranges from 2.1 to 2.4 V
  • OB_BOR_OFF : Supply voltage ranges from 1.62 to 2.1 V

Definition at line 1389 of file stm32f4xx_flash.c.

uint16_t FLASH_OB_GetPCROP ( void  )

Returns the FLASH PC Read/Write Protection Option Bytes value.

Note
This function can be used only for STM32F42xxx/43xxx devices and STM32F401xx devices.
Parameters
None
Return values
TheFLASH PC Read/Write Protection Option Bytes value

Definition at line 1338 of file stm32f4xx_flash.c.

uint16_t FLASH_OB_GetPCROP1 ( void  )

Returns the FLASH PC Read/Write Protection Option Bytes value.

Note
This function can be used only for STM32F42xxx/43xxx devices.
Parameters
None
Return values
TheFLASH PC Read/Write Protection Option Bytes value

Definition at line 1352 of file stm32f4xx_flash.c.

FlagStatus FLASH_OB_GetRDP ( void  )

Returns the FLASH Read Protection level.

Parameters
None
Return values
FLASHReadOut Protection Status:
  • SET, when OB_RDP_Level_1 or OB_RDP_Level_2 is set
  • RESET, when OB_RDP_Level_0 is set

Definition at line 1365 of file stm32f4xx_flash.c.

uint8_t FLASH_OB_GetUser ( void  )

Returns the FLASH User Option Bytes values.

Parameters
None
Return values
TheFLASH User Option Bytes values: IWDG_SW(Bit0), RST_STOP(Bit1) and RST_STDBY(Bit2).

Definition at line 1299 of file stm32f4xx_flash.c.

uint16_t FLASH_OB_GetWRP ( void  )

Returns the FLASH Write Protection Option Bytes value.

Parameters
None
Return values
TheFLASH Write Protection Option Bytes value

Definition at line 1310 of file stm32f4xx_flash.c.

uint16_t FLASH_OB_GetWRP1 ( void  )

Returns the FLASH Write Protection Option Bytes value.

Note
This function can be used only for STM32F42xxx/43xxx devices.
Parameters
None
Return values
TheFLASH Write Protection Option Bytes value

Definition at line 1324 of file stm32f4xx_flash.c.

FLASH_Status FLASH_OB_Launch ( void  )

Launch the option byte loading.

Parameters
None
Return values
FLASHStatus: The returned value can be: FLASH_BUSY, FLASH_ERROR_PROGRAM, FLASH_ERROR_WRP, FLASH_ERROR_OPERATION or FLASH_COMPLETE.

Definition at line 1280 of file stm32f4xx_flash.c.

+ Here is the call graph for this function:

void FLASH_OB_Lock ( void  )

Locks the FLASH Option Control Registers access.

Parameters
None
Return values
None

Definition at line 951 of file stm32f4xx_flash.c.

void FLASH_OB_PCROP1Config ( uint32_t  OB_PCROP,
FunctionalState  NewState 
)

Enables or disables the read/write protection (PCROP) of the desired sectors.

Note
This function can be used only for STM32F42xxx/43xxx devices.
Parameters
OB_PCROPspecifies the sector(s) to be read/write protected or unprotected. This parameter can be one of the following values:
  • OB_PCROP: A value between OB_PCROP_Sector12 and OB_PCROP_Sector23
  • OB_PCROP_Sector_All
Newstatenew state of the Write Protection. This parameter can be: ENABLE or DISABLE.
Return values
None

Definition at line 1133 of file stm32f4xx_flash.c.

+ Here is the call graph for this function:

void FLASH_OB_PCROPConfig ( uint32_t  OB_PCROP,
FunctionalState  NewState 
)

Enables or disables the read/write protection (PCROP) of the desired sectors, for the first 1 MB of the Flash.

Note
This function can be used only for STM32F42xxx/43xxx and STM32F401xx devices.
Parameters
OB_PCROPspecifies the sector(s) to be read/write protected or unprotected. This parameter can be one of the following values:
  • OB_PCROP: A value between OB_PCROP_Sector0 and OB_PCROP_Sector11 for STM32F42xxx/43xxx devices and between OB_PCROP_Sector0 and OB_PCROP_Sector5 for STM32F401xx devices.
  • OB_PCROP_Sector_All
Newstatenew state of the Write Protection. This parameter can be: ENABLE or DISABLE.
Return values
None

Definition at line 1096 of file stm32f4xx_flash.c.

+ Here is the call graph for this function:

void FLASH_OB_PCROPSelectionConfig ( uint8_t  OB_PcROP)

Select the Protection Mode (SPRMOD).

Note
This function can be used only for STM32F42xxx/43xxx and STM32F401xx devices.
After PCROP activation, Option Byte modification is not possible. Exception made for the global Read Out Protection modification level (level1 to level0)
Once SPRMOD bit is active unprotection of a protected sector is not possible
Read a protected sector will set RDERR Flag and write a protected sector will set WRPERR Flag
Some Precautions should be taken when activating the PCROP feature : The active value of nWRPi bits is inverted when PCROP mode is active, this means if SPRMOD = 1 and WRPi = 1 (default value), then the user sector i is read/write protected. In order to avoid activation of PCROP Mode for undesired sectors, please follow the below safety sequence :
  • Disable PCROP for all Sectors using FLASH_OB_PCROPConfig(OB_PCROP_Sector_All, DISABLE) function for Bank1 or FLASH_OB_PCROP1Config(OB_PCROP_Sector_All, DISABLE) function for Bank2
  • Enable PCROP for the desired Sector i using FLASH_OB_PCROPConfig(Sector i, ENABLE) function
  • Activate the PCROP Mode FLASH_OB_PCROPSelectionConfig() function.
Parameters
OB_PCROPSelect the Protection Mode of nWPRi bits This parameter can be one of the following values:
  • OB_PcROP_Disable: nWRPi control the write protection of respective user sectors.
  • OB_PcROP_Enable: nWRPi control the read&write protection (PCROP) of respective user sectors.
Return values
None

Definition at line 1066 of file stm32f4xx_flash.c.

void FLASH_OB_RDPConfig ( uint8_t  OB_RDP)

Sets the read protection level.

Parameters
OB_RDPspecifies the read protection level. This parameter can be one of the following values:
  • OB_RDP_Level_0: No protection
  • OB_RDP_Level_1: Read protection of the memory
  • OB_RDP_Level_2: Full chip protection
/!\ Warning /!\ When enabling OB_RDP level 2 it's no more possible to go back to level 1 or 0
Return values
None

Definition at line 1169 of file stm32f4xx_flash.c.

+ Here is the call graph for this function:

void FLASH_OB_Unlock ( void  )

Unlocks the FLASH Option Control Registers access.

Parameters
None
Return values
None

Definition at line 936 of file stm32f4xx_flash.c.

void FLASH_OB_UserConfig ( uint8_t  OB_IWDG,
uint8_t  OB_STOP,
uint8_t  OB_STDBY 
)

Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY.

Parameters
OB_IWDGSelects the IWDG mode This parameter can be one of the following values:
  • OB_IWDG_SW: Software IWDG selected
  • OB_IWDG_HW: Hardware IWDG selected
OB_STOPReset event when entering STOP mode. This parameter can be one of the following values:
  • OB_STOP_NoRST: No reset generated when entering in STOP
  • OB_STOP_RST: Reset generated when entering in STOP
OB_STDBYReset event when entering Standby mode. This parameter can be one of the following values:
  • OB_STDBY_NoRST: No reset generated when entering in STANDBY
  • OB_STDBY_RST: Reset generated when entering in STANDBY
Return values
None

Definition at line 1201 of file stm32f4xx_flash.c.

+ Here is the call graph for this function:

void FLASH_OB_WRP1Config ( uint32_t  OB_WRP,
FunctionalState  NewState 
)

Enables or disables the write protection of the desired sectors, for the second 1 Mb of the Flash.

Note
This function can be used only for STM32F42xxx/43xxx devices.
When the memory read out protection is selected (RDP level = 1), it is not possible to program or erase the flash sector i if CortexM4 debug features are connected or boot code is executed in RAM, even if nWRPi = 1
Active value of nWRPi bits is inverted when PCROP mode is active (SPRMOD =1).
Parameters
OB_WRPspecifies the sector(s) to be write protected or unprotected. This parameter can be one of the following values:
  • OB_WRP: A value between OB_WRP_Sector12 and OB_WRP_Sector23
  • OB_WRP_Sector_All
Newstatenew state of the Write Protection. This parameter can be: ENABLE or DISABLE.
Return values
None

Definition at line 1016 of file stm32f4xx_flash.c.

+ Here is the call graph for this function:

void FLASH_OB_WRPConfig ( uint32_t  OB_WRP,
FunctionalState  NewState 
)

Enables or disables the write protection of the desired sectors, for the first 1 Mb of the Flash.

Note
When the memory read protection level is selected (RDP level = 1), it is not possible to program or erase the flash sector i if CortexM4 debug features are connected or boot code is executed in RAM, even if nWRPi = 1
Active value of nWRPi bits is inverted when PCROP mode is active (SPRMOD =1).
Parameters
OB_WRPspecifies the sector(s) to be write protected or unprotected. This parameter can be one of the following values:
  • OB_WRP: A value between OB_WRP_Sector0 and OB_WRP_Sector11
  • OB_WRP_Sector_All
Newstatenew state of the Write Protection. This parameter can be: ENABLE or DISABLE.
Return values
None

Definition at line 974 of file stm32f4xx_flash.c.

+ Here is the call graph for this function: