AnsweredAssumed Answered

I am trying to write code to set the BOR Level under program control but cannot get the result I need.

Question asked by Goldstein.Art on Dec 14, 2016
Latest reply on Dec 15, 2016 by Tut

I am trying to write code to set the BOR Level under program control but cannot get the result I need. I have the following:

 

if ((FLASH_GetUserOptionByte() & 0x0F) != OB_BOR_LEVEL4)

{

      FLASH_UnlockOptionByte();

 

     FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_WRPERR |

           FLASH_FLAG_PGAERR | FLASH_FLAG_SIZERR | FLASH_FLAG_OPTVERR);

                                 

     FLASH_SetBORResetLevel(OB_BOR_LEVEL4);

 

     FLASH_LockOptionByte();

 

     FLASH_OBLLaunch();

 

If I have a current BOR level 3, it remains at level 3. The attempt to write level 4 fails. I am using IAR and single step. I see the bits reset in the PECR register, and the attempt to write OBR register with level 4, but it does not update with the correct value.

 

What am I doing wrong in the code? 

Outcomes