/** ****************************************************************************** * @file IAP/IAP_Main/Inc/flash_if.h * @author MCD Application Team * @brief This file provides all the headers of the flash_if functions. ****************************************************************************** * @attention * * Copyright (c) 2017 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** *//* ... *//* Define to prevent recursive inclusion -------------------------------------*/#ifndef__FLASH_IF_H#define__FLASH_IF_H/* Includes ------------------------------------------------------------------*/#include"stm32f4xx_hal.h"Includes/* Exported types ------------------------------------------------------------*//* Exported constants --------------------------------------------------------*//* Base address of the Flash sectors */#defineADDR_FLASH_SECTOR_0((uint32_t)0x08000000)/* Base @ of Sector 0, 16 Kbyte */#defineADDR_FLASH_SECTOR_1((uint32_t)0x08004000)/* Base @ of Sector 1, 16 Kbyte */#defineADDR_FLASH_SECTOR_2((uint32_t)0x08008000)/* Base @ of Sector 2, 16 Kbyte */#defineADDR_FLASH_SECTOR_3((uint32_t)0x0800C000)/* Base @ of Sector 3, 16 Kbyte */#defineADDR_FLASH_SECTOR_4((uint32_t)0x08010000)/* Base @ of Sector 4, 64 Kbyte */#defineADDR_FLASH_SECTOR_5((uint32_t)0x08020000)/* Base @ of Sector 5, 128 Kbyte */#defineADDR_FLASH_SECTOR_6((uint32_t)0x08040000)/* Base @ of Sector 6, 128 Kbyte */#defineADDR_FLASH_SECTOR_7((uint32_t)0x08060000)/* Base @ of Sector 7, 128 Kbyte */#defineADDR_FLASH_SECTOR_8((uint32_t)0x08080000)/* Base @ of Sector 8, 128 Kbyte */#defineADDR_FLASH_SECTOR_9((uint32_t)0x080A0000)/* Base @ of Sector 9, 128 Kbyte */#defineADDR_FLASH_SECTOR_10((uint32_t)0x080C0000)/* Base @ of Sector 10, 128 Kbyte */#defineADDR_FLASH_SECTOR_11((uint32_t)0x080E0000)/* Base @ of Sector 11, 128 Kbyte */#defineADDR_FLASH_SECTOR_12((uint32_t)0x08100000)/* Base @ of Sector 12, 16 Kbyte */#defineADDR_FLASH_SECTOR_13((uint32_t)0x08104000)/* Base @ of Sector 13, 16 Kbyte */#defineADDR_FLASH_SECTOR_14((uint32_t)0x08108000)/* Base @ of Sector 14, 16 Kbyte */#defineADDR_FLASH_SECTOR_15((uint32_t)0x0810C000)/* Base @ of Sector 15, 16 Kbyte */#defineADDR_FLASH_SECTOR_16((uint32_t)0x08110000)/* Base @ of Sector 16, 64 Kbyte */#defineADDR_FLASH_SECTOR_17((uint32_t)0x08120000)/* Base @ of Sector 17, 128 Kbyte */#defineADDR_FLASH_SECTOR_18((uint32_t)0x08140000)/* Base @ of Sector 18, 128 Kbyte */#defineADDR_FLASH_SECTOR_19((uint32_t)0x08160000)/* Base @ of Sector 19, 128 Kbyte */#defineADDR_FLASH_SECTOR_20((uint32_t)0x08180000)/* Base @ of Sector 20, 128 Kbyte */#defineADDR_FLASH_SECTOR_21((uint32_t)0x081A0000)/* Base @ of Sector 21, 128 Kbyte */#defineADDR_FLASH_SECTOR_22((uint32_t)0x081C0000)/* Base @ of Sector 22, 128 Kbyte */#defineADDR_FLASH_SECTOR_23((uint32_t)0x081E0000)/* Base @ of Sector 23, 128 Kbyte */24 defines/* Error code */enum{FLASHIF_OK=0,FLASHIF_ERASEKO,FLASHIF_WRITINGCTRL_ERROR,FLASHIF_WRITING_ERROR...};enum{FLASHIF_PROTECTION_NONE=0,FLASHIF_PROTECTION_PCROPENABLED=0x1,FLASHIF_PROTECTION_WRPENABLED=0x2,FLASHIF_PROTECTION_RDPENABLED=0x4,...};/* End of the Flash address */#defineUSER_FLASH_END_ADDRESS0x081FFFFF/* Define the user application size */#defineUSER_FLASH_SIZE(USER_FLASH_END_ADDRESS-APPLICATION_ADDRESS+1)/* Define the address from where user application will be loaded. Note: the 1st sector 0x08000000-0x08003FFF is reserved for the IAP code *//* ... */#defineAPPLICATION_ADDRESS(uint32_t)0x08008000/* Define bitmap representing user flash area that could be write protected (check restricted to pages 8-39). */#defineFLASH_SECTOR_TO_BE_PROTECTED(OB_WRP_SECTOR_0|OB_WRP_SECTOR_1|OB_WRP_SECTOR_2|OB_WRP_SECTOR_3|\OB_WRP_SECTOR_4|OB_WRP_SECTOR_5|OB_WRP_SECTOR_6|OB_WRP_SECTOR_7|\OB_WRP_SECTOR_8|OB_WRP_SECTOR_9|OB_WRP_SECTOR_10|OB_WRP_SECTOR_11)...Exported constants/* Exported macro ------------------------------------------------------------*//* Exported functions ------------------------------------------------------- */voidFLASH_If_Init(void);uint32_tFLASH_If_Erase(uint32_tStartSector);uint32_tFLASH_If_Write(uint32_tFlashAddress,uint32_t*Data,uint32_tDataLength);uint16_tFLASH_If_GetWriteProtectionStatus(void);HAL_StatusTypeDefFLASH_If_WriteProtectionConfig(uint32_tmodifier);Exported functions/* ... */#endif/* __FLASH_IF_H */