48 #ifdef HAL_FLASH_MODULE_ENABLED
76 #define FLASH_POSITION_IWDGSW_BIT FLASH_OBR_IWDG_SW_Pos
77 #define FLASH_POSITION_OB_USERDATA0_BIT FLASH_OBR_DATA0_Pos
78 #define FLASH_POSITION_OB_USERDATA1_BIT FLASH_OBR_DATA1_Pos
97 static void FLASH_MassErase(uint32_t Banks);
98 void FLASH_PageErase(uint32_t PageAddress);
106 static uint32_t FLASH_OB_GetWRP(
void);
107 static uint32_t FLASH_OB_GetRDP(
void);
108 static uint8_t FLASH_OB_GetUser(
void);
162 uint32_t address = 0U;
172 #if defined(FLASH_BANK2_END)
173 if (pEraseInit->
Banks == FLASH_BANK_BOTH)
181 FLASH_MassErase(FLASH_BANK_BOTH);
195 else if (pEraseInit->
Banks == FLASH_BANK_2)
202 FLASH_MassErase(FLASH_BANK_2);
236 #if defined(FLASH_BANK2_END)
244 *PageError = 0xFFFFFFFFU;
249 address += FLASH_PAGE_SIZE)
251 FLASH_PageErase(address);
262 *PageError = address;
276 *PageError = 0xFFFFFFFFU;
281 address += FLASH_PAGE_SIZE)
283 FLASH_PageErase(address);
294 *PageError = address;
338 #if defined(FLASH_BANK2_END)
347 FLASH_MassErase(pEraseInit->
Banks);
403 rdptmp = FLASH_OB_GetRDP();
426 status = FLASH_OB_RDP_LevelConfig(rdptmp);
463 status = FLASH_OB_EnableWRP(pOBInit->
WRPPage);
468 status = FLASH_OB_DisableWRP(pOBInit->
WRPPage);
481 status = FLASH_OB_RDP_LevelConfig(pOBInit->
RDPLevel);
493 status = FLASH_OB_UserConfig(pOBInit->
USERConfig);
532 pOBInit->
WRPPage = FLASH_OB_GetWRP();
535 pOBInit->
RDPLevel = FLASH_OB_GetRDP();
595 static void FLASH_MassErase(uint32_t Banks)
603 #if defined(FLASH_BANK2_END)
604 if(Banks == FLASH_BANK_BOTH)
612 else if(Banks == FLASH_BANK_2)
621 #if !defined(FLASH_BANK2_END)
628 #if defined(FLASH_BANK2_END)
647 uint16_t WRP0_Data = 0xFFFF;
648 #if defined(FLASH_WRP1_WRP1)
649 uint16_t WRP1_Data = 0xFFFF;
651 #if defined(FLASH_WRP2_WRP2)
652 uint16_t WRP2_Data = 0xFFFF;
654 #if defined(FLASH_WRP3_WRP3)
655 uint16_t WRP3_Data = 0xFFFF;
662 WriteProtectPage = (uint32_t)(~((~FLASH_OB_GetWRP()) | WriteProtectPage));
664 #if defined(OB_WRP_PAGES0TO15MASK)
665 WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO15MASK);
666 #elif defined(OB_WRP_PAGES0TO31MASK)
667 WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO31MASK);
670 #if defined(OB_WRP_PAGES16TO31MASK)
671 WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES16TO31MASK) >> 8U);
672 #elif defined(OB_WRP_PAGES32TO63MASK)
673 WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO63MASK) >> 8U);
676 #if defined(OB_WRP_PAGES64TO95MASK)
677 WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES64TO95MASK) >> 16U);
679 #if defined(OB_WRP_PAGES32TO47MASK)
680 WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO47MASK) >> 16U);
683 #if defined(OB_WRP_PAGES96TO127MASK)
684 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES96TO127MASK) >> 24U);
685 #elif defined(OB_WRP_PAGES48TO255MASK)
686 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO255MASK) >> 24U);
687 #elif defined(OB_WRP_PAGES48TO511MASK)
688 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO511MASK) >> 24U);
689 #elif defined(OB_WRP_PAGES48TO127MASK)
690 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO127MASK) >> 24U);
708 #if defined(FLASH_WRP0_WRP0)
709 if(WRP0_Data != 0xFFU)
711 OB->WRP0 &= WRP0_Data;
718 #if defined(FLASH_WRP1_WRP1)
719 if((status ==
HAL_OK) && (WRP1_Data != 0xFFU))
721 OB->WRP1 &= WRP1_Data;
728 #if defined(FLASH_WRP2_WRP2)
729 if((status ==
HAL_OK) && (WRP2_Data != 0xFFU))
731 OB->WRP2 &= WRP2_Data;
738 #if defined(FLASH_WRP3_WRP3)
739 if((status ==
HAL_OK) && (WRP3_Data != 0xFFU))
741 OB->WRP3 &= WRP3_Data;
770 uint16_t WRP0_Data = 0xFFFF;
771 #if defined(FLASH_WRP1_WRP1)
772 uint16_t WRP1_Data = 0xFFFF;
774 #if defined(FLASH_WRP2_WRP2)
775 uint16_t WRP2_Data = 0xFFFF;
777 #if defined(FLASH_WRP3_WRP3)
778 uint16_t WRP3_Data = 0xFFFF;
785 WriteProtectPage = (FLASH_OB_GetWRP() | WriteProtectPage);
787 #if defined(OB_WRP_PAGES0TO15MASK)
788 WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO15MASK);
789 #elif defined(OB_WRP_PAGES0TO31MASK)
790 WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO31MASK);
793 #if defined(OB_WRP_PAGES16TO31MASK)
794 WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES16TO31MASK) >> 8U);
795 #elif defined(OB_WRP_PAGES32TO63MASK)
796 WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO63MASK) >> 8U);
799 #if defined(OB_WRP_PAGES64TO95MASK)
800 WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES64TO95MASK) >> 16U);
802 #if defined(OB_WRP_PAGES32TO47MASK)
803 WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO47MASK) >> 16U);
806 #if defined(OB_WRP_PAGES96TO127MASK)
807 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES96TO127MASK) >> 24U);
808 #elif defined(OB_WRP_PAGES48TO255MASK)
809 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO255MASK) >> 24U);
810 #elif defined(OB_WRP_PAGES48TO511MASK)
811 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO511MASK) >> 24U);
812 #elif defined(OB_WRP_PAGES48TO127MASK)
813 WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO127MASK) >> 24U);
831 #if defined(FLASH_WRP0_WRP0)
832 if(WRP0_Data != 0xFFU)
834 OB->WRP0 |= WRP0_Data;
841 #if defined(FLASH_WRP1_WRP1)
842 if((status ==
HAL_OK) && (WRP1_Data != 0xFFU))
844 OB->WRP1 |= WRP1_Data;
851 #if defined(FLASH_WRP2_WRP2)
852 if((status ==
HAL_OK) && (WRP2_Data != 0xFFU))
854 OB->WRP2 |= WRP2_Data;
861 #if defined(FLASH_WRP3_WRP3)
862 if((status ==
HAL_OK) && (WRP3_Data != 0xFFU))
864 OB->WRP3 |= WRP3_Data;
945 #if defined(FLASH_BANK2_END)
960 #if defined(FLASH_BANK2_END)
961 OB->USER = (UserConfig | 0xF0U);
963 OB->USER = (UserConfig | 0x88U);
1005 *(
__IO uint16_t*)Address = Data;
1021 static uint32_t FLASH_OB_GetWRP(
void)
1034 static uint32_t FLASH_OB_GetRDP(
void)
1037 uint32_t tmp_reg = 0U;
1060 static uint8_t FLASH_OB_GetUser(
void)
1089 void FLASH_PageErase(uint32_t PageAddress)
1094 #if defined(FLASH_BANK2_END)
1109 #if defined(FLASH_BANK2_END)