Program the FLASH User Option Byte.
773 uint32_t optr_reg_val = 0;
774 uint32_t optr_reg_mask = 0;
775 HAL_StatusTypeDef status;
785 if((UserType & OB_USER_BOR_LEV) != 0U)
788 assert_param(IS_OB_USER_BOR_LEVEL(UserConfig & FLASH_OPTR_BOR_LEV));
791 optr_reg_val |= (UserConfig & FLASH_OPTR_BOR_LEV);
792 optr_reg_mask |= FLASH_OPTR_BOR_LEV;
795 if((UserType & OB_USER_nRST_STOP) != 0U)
798 assert_param(IS_OB_USER_STOP(UserConfig & FLASH_OPTR_nRST_STOP));
801 optr_reg_val |= (UserConfig & FLASH_OPTR_nRST_STOP);
802 optr_reg_mask |= FLASH_OPTR_nRST_STOP;
805 if((UserType & OB_USER_nRST_STDBY) != 0U)
808 assert_param(IS_OB_USER_STANDBY(UserConfig & FLASH_OPTR_nRST_STDBY));
811 optr_reg_val |= (UserConfig & FLASH_OPTR_nRST_STDBY);
812 optr_reg_mask |= FLASH_OPTR_nRST_STDBY;
815 if((UserType & OB_USER_nRST_SHDW) != 0U)
818 assert_param(IS_OB_USER_SHUTDOWN(UserConfig & FLASH_OPTR_nRST_SHDW));
821 optr_reg_val |= (UserConfig & FLASH_OPTR_nRST_SHDW);
822 optr_reg_mask |= FLASH_OPTR_nRST_SHDW;
825 if((UserType & OB_USER_IWDG_SW) != 0U)
828 assert_param(IS_OB_USER_IWDG(UserConfig & FLASH_OPTR_IWDG_SW));
831 optr_reg_val |= (UserConfig & FLASH_OPTR_IWDG_SW);
832 optr_reg_mask |= FLASH_OPTR_IWDG_SW;
835 if((UserType & OB_USER_IWDG_STOP) != 0U)
838 assert_param(IS_OB_USER_IWDG_STOP(UserConfig & FLASH_OPTR_IWDG_STOP));
841 optr_reg_val |= (UserConfig & FLASH_OPTR_IWDG_STOP);
842 optr_reg_mask |= FLASH_OPTR_IWDG_STOP;
845 if((UserType & OB_USER_IWDG_STDBY) != 0U)
848 assert_param(IS_OB_USER_IWDG_STDBY(UserConfig & FLASH_OPTR_IWDG_STDBY));
851 optr_reg_val |= (UserConfig & FLASH_OPTR_IWDG_STDBY);
852 optr_reg_mask |= FLASH_OPTR_IWDG_STDBY;
855 if((UserType & OB_USER_WWDG_SW) != 0U)
858 assert_param(IS_OB_USER_WWDG(UserConfig & FLASH_OPTR_WWDG_SW));
861 optr_reg_val |= (UserConfig & FLASH_OPTR_WWDG_SW);
862 optr_reg_mask |= FLASH_OPTR_WWDG_SW;
865 #if defined (STM32L471xx) || defined (STM32L475xx) || defined (STM32L476xx) || defined (STM32L485xx) || defined (STM32L486xx) || \ 866 defined (STM32L496xx) || defined (STM32L4A6xx) || \ 867 defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx) 868 if((UserType & OB_USER_BFB2) != 0U)
871 assert_param(IS_OB_USER_BFB2(UserConfig & FLASH_OPTR_BFB2));
874 optr_reg_val |= (UserConfig & FLASH_OPTR_BFB2);
875 optr_reg_mask |= FLASH_OPTR_BFB2;
878 if((UserType & OB_USER_DUALBANK) != 0U)
880 #if defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx) 882 assert_param(IS_OB_USER_DUALBANK(UserConfig & FLASH_OPTR_DB1M));
885 optr_reg_val |= (UserConfig & FLASH_OPTR_DB1M);
886 optr_reg_mask |= FLASH_OPTR_DB1M;
889 assert_param(IS_OB_USER_DUALBANK(UserConfig & FLASH_OPTR_DUALBANK));
892 optr_reg_val |= (UserConfig & FLASH_OPTR_DUALBANK);
893 optr_reg_mask |= FLASH_OPTR_DUALBANK;
898 if((UserType & OB_USER_nBOOT1) != 0U)
901 assert_param(IS_OB_USER_BOOT1(UserConfig & FLASH_OPTR_nBOOT1));
904 optr_reg_val |= (UserConfig & FLASH_OPTR_nBOOT1);
905 optr_reg_mask |= FLASH_OPTR_nBOOT1;
908 if((UserType & OB_USER_SRAM2_PE) != 0U)
911 assert_param(IS_OB_USER_SRAM2_PARITY(UserConfig & FLASH_OPTR_SRAM2_PE));
914 optr_reg_val |= (UserConfig & FLASH_OPTR_SRAM2_PE);
915 optr_reg_mask |= FLASH_OPTR_SRAM2_PE;
918 if((UserType & OB_USER_SRAM2_RST) != 0U)
921 assert_param(IS_OB_USER_SRAM2_RST(UserConfig & FLASH_OPTR_SRAM2_RST));
924 optr_reg_val |= (UserConfig & FLASH_OPTR_SRAM2_RST);
925 optr_reg_mask |= FLASH_OPTR_SRAM2_RST;
928 #if defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L431xx) || defined (STM32L432xx) || defined (STM32L433xx) || \ 929 defined (STM32L442xx) || defined (STM32L443xx) || defined (STM32L451xx) || defined (STM32L452xx) || defined (STM32L462xx) || \ 930 defined (STM32L496xx) || defined (STM32L4A6xx) || \ 931 defined (STM32L4R5xx) || defined (STM32L4R7xx) || defined (STM32L4R9xx) || defined (STM32L4S5xx) || defined (STM32L4S7xx) || defined (STM32L4S9xx) 932 if((UserType & OB_USER_nSWBOOT0) != 0U)
935 assert_param(IS_OB_USER_SWBOOT0(UserConfig & FLASH_OPTR_nSWBOOT0));
938 optr_reg_val |= (UserConfig & FLASH_OPTR_nSWBOOT0);
939 optr_reg_mask |= FLASH_OPTR_nSWBOOT0;
942 if((UserType & OB_USER_nBOOT0) != 0U)
945 assert_param(IS_OB_USER_BOOT0(UserConfig & FLASH_OPTR_nBOOT0));
948 optr_reg_val |= (UserConfig & FLASH_OPTR_nBOOT0);
949 optr_reg_mask |= FLASH_OPTR_nBOOT0;
954 MODIFY_REG(FLASH->OPTR, optr_reg_mask, optr_reg_val);
957 SET_BIT(FLASH->CR, FLASH_CR_OPTSTRT);
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout)
Wait for a FLASH operation to complete.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))