SPKT

Dependencies:   F746_GUI SD_PlayerSkeleton F746_SAI_IO

Committer:
phungductung
Date:
Tue Jun 04 21:37:21 2019 +0000
Revision:
0:8ede47d38d10
SPKT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
phungductung 0:8ede47d38d10 1 /**
phungductung 0:8ede47d38d10 2 ******************************************************************************
phungductung 0:8ede47d38d10 3 * @file stm32f7xx_hal_flash_ex.h
phungductung 0:8ede47d38d10 4 * @author MCD Application Team
phungductung 0:8ede47d38d10 5 * @version V1.0.4
phungductung 0:8ede47d38d10 6 * @date 09-December-2015
phungductung 0:8ede47d38d10 7 * @brief Header file of FLASH HAL Extension module.
phungductung 0:8ede47d38d10 8 ******************************************************************************
phungductung 0:8ede47d38d10 9 * @attention
phungductung 0:8ede47d38d10 10 *
phungductung 0:8ede47d38d10 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
phungductung 0:8ede47d38d10 12 *
phungductung 0:8ede47d38d10 13 * Redistribution and use in source and binary forms, with or without modification,
phungductung 0:8ede47d38d10 14 * are permitted provided that the following conditions are met:
phungductung 0:8ede47d38d10 15 * 1. Redistributions of source code must retain the above copyright notice,
phungductung 0:8ede47d38d10 16 * this list of conditions and the following disclaimer.
phungductung 0:8ede47d38d10 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
phungductung 0:8ede47d38d10 18 * this list of conditions and the following disclaimer in the documentation
phungductung 0:8ede47d38d10 19 * and/or other materials provided with the distribution.
phungductung 0:8ede47d38d10 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
phungductung 0:8ede47d38d10 21 * may be used to endorse or promote products derived from this software
phungductung 0:8ede47d38d10 22 * without specific prior written permission.
phungductung 0:8ede47d38d10 23 *
phungductung 0:8ede47d38d10 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
phungductung 0:8ede47d38d10 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
phungductung 0:8ede47d38d10 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
phungductung 0:8ede47d38d10 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
phungductung 0:8ede47d38d10 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
phungductung 0:8ede47d38d10 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
phungductung 0:8ede47d38d10 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
phungductung 0:8ede47d38d10 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
phungductung 0:8ede47d38d10 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
phungductung 0:8ede47d38d10 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
phungductung 0:8ede47d38d10 34 *
phungductung 0:8ede47d38d10 35 ******************************************************************************
phungductung 0:8ede47d38d10 36 */
phungductung 0:8ede47d38d10 37
phungductung 0:8ede47d38d10 38 /* Define to prevent recursive inclusion -------------------------------------*/
phungductung 0:8ede47d38d10 39 #ifndef __STM32F7xx_HAL_FLASH_EX_H
phungductung 0:8ede47d38d10 40 #define __STM32F7xx_HAL_FLASH_EX_H
phungductung 0:8ede47d38d10 41
phungductung 0:8ede47d38d10 42 #ifdef __cplusplus
phungductung 0:8ede47d38d10 43 extern "C" {
phungductung 0:8ede47d38d10 44 #endif
phungductung 0:8ede47d38d10 45
phungductung 0:8ede47d38d10 46 /* Includes ------------------------------------------------------------------*/
phungductung 0:8ede47d38d10 47 #include "stm32f7xx_hal_def.h"
phungductung 0:8ede47d38d10 48
phungductung 0:8ede47d38d10 49 /** @addtogroup STM32F7xx_HAL_Driver
phungductung 0:8ede47d38d10 50 * @{
phungductung 0:8ede47d38d10 51 */
phungductung 0:8ede47d38d10 52
phungductung 0:8ede47d38d10 53 /** @addtogroup FLASHEx
phungductung 0:8ede47d38d10 54 * @{
phungductung 0:8ede47d38d10 55 */
phungductung 0:8ede47d38d10 56
phungductung 0:8ede47d38d10 57 /* Exported types ------------------------------------------------------------*/
phungductung 0:8ede47d38d10 58 /** @defgroup FLASHEx_Exported_Types FLASH Exported Types
phungductung 0:8ede47d38d10 59 * @{
phungductung 0:8ede47d38d10 60 */
phungductung 0:8ede47d38d10 61
phungductung 0:8ede47d38d10 62 /**
phungductung 0:8ede47d38d10 63 * @brief FLASH Erase structure definition
phungductung 0:8ede47d38d10 64 */
phungductung 0:8ede47d38d10 65 typedef struct
phungductung 0:8ede47d38d10 66 {
phungductung 0:8ede47d38d10 67 uint32_t TypeErase; /*!< Mass erase or sector Erase.
phungductung 0:8ede47d38d10 68 This parameter can be a value of @ref FLASHEx_Type_Erase */
phungductung 0:8ede47d38d10 69
phungductung 0:8ede47d38d10 70 uint32_t Sector; /*!< Initial FLASH sector to erase when Mass erase is disabled
phungductung 0:8ede47d38d10 71 This parameter must be a value of @ref FLASHEx_Sectors */
phungductung 0:8ede47d38d10 72
phungductung 0:8ede47d38d10 73 uint32_t NbSectors; /*!< Number of sectors to be erased.
phungductung 0:8ede47d38d10 74 This parameter must be a value between 1 and (max number of sectors - value of Initial sector)*/
phungductung 0:8ede47d38d10 75
phungductung 0:8ede47d38d10 76 uint32_t VoltageRange;/*!< The device voltage range which defines the erase parallelism
phungductung 0:8ede47d38d10 77 This parameter must be a value of @ref FLASHEx_Voltage_Range */
phungductung 0:8ede47d38d10 78
phungductung 0:8ede47d38d10 79 } FLASH_EraseInitTypeDef;
phungductung 0:8ede47d38d10 80
phungductung 0:8ede47d38d10 81 /**
phungductung 0:8ede47d38d10 82 * @brief FLASH Option Bytes Program structure definition
phungductung 0:8ede47d38d10 83 */
phungductung 0:8ede47d38d10 84 typedef struct
phungductung 0:8ede47d38d10 85 {
phungductung 0:8ede47d38d10 86 uint32_t OptionType; /*!< Option byte to be configured.
phungductung 0:8ede47d38d10 87 This parameter can be a value of @ref FLASHEx_Option_Type */
phungductung 0:8ede47d38d10 88
phungductung 0:8ede47d38d10 89 uint32_t WRPState; /*!< Write protection activation or deactivation.
phungductung 0:8ede47d38d10 90 This parameter can be a value of @ref FLASHEx_WRP_State */
phungductung 0:8ede47d38d10 91
phungductung 0:8ede47d38d10 92 uint32_t WRPSector; /*!< Specifies the sector(s) to be write protected.
phungductung 0:8ede47d38d10 93 The value of this parameter depend on device used within the same series */
phungductung 0:8ede47d38d10 94
phungductung 0:8ede47d38d10 95 uint32_t RDPLevel; /*!< Set the read protection level.
phungductung 0:8ede47d38d10 96 This parameter can be a value of @ref FLASHEx_Option_Bytes_Read_Protection */
phungductung 0:8ede47d38d10 97
phungductung 0:8ede47d38d10 98 uint32_t BORLevel; /*!< Set the BOR Level.
phungductung 0:8ede47d38d10 99 This parameter can be a value of @ref FLASHEx_BOR_Reset_Level */
phungductung 0:8ede47d38d10 100
phungductung 0:8ede47d38d10 101 uint32_t USERConfig; /*!< Program the FLASH User Option Byte: WWDG_SW / IWDG_SW / RST_STOP / RST_STDBY /
phungductung 0:8ede47d38d10 102 IWDG_FREEZE_STOP / IWDG_FREEZE_SANDBY. */
phungductung 0:8ede47d38d10 103
phungductung 0:8ede47d38d10 104 uint32_t BootAddr0; /*!< Boot base address when Boot pin = 0.
phungductung 0:8ede47d38d10 105 This parameter can be a value of @ref FLASHEx_Boot_Address */
phungductung 0:8ede47d38d10 106
phungductung 0:8ede47d38d10 107 uint32_t BootAddr1; /*!< Boot base address when Boot pin = 1.
phungductung 0:8ede47d38d10 108 This parameter can be a value of @ref FLASHEx_Boot_Address */
phungductung 0:8ede47d38d10 109
phungductung 0:8ede47d38d10 110 } FLASH_OBProgramInitTypeDef;
phungductung 0:8ede47d38d10 111
phungductung 0:8ede47d38d10 112 /**
phungductung 0:8ede47d38d10 113 * @}
phungductung 0:8ede47d38d10 114 */
phungductung 0:8ede47d38d10 115 /* Exported constants --------------------------------------------------------*/
phungductung 0:8ede47d38d10 116
phungductung 0:8ede47d38d10 117 /** @defgroup FLASHEx_Exported_Constants FLASH Exported Constants
phungductung 0:8ede47d38d10 118 * @{
phungductung 0:8ede47d38d10 119 */
phungductung 0:8ede47d38d10 120
phungductung 0:8ede47d38d10 121 /** @defgroup FLASHEx_Type_Erase FLASH Type Erase
phungductung 0:8ede47d38d10 122 * @{
phungductung 0:8ede47d38d10 123 */
phungductung 0:8ede47d38d10 124 #define FLASH_TYPEERASE_SECTORS ((uint32_t)0x00) /*!< Sectors erase only */
phungductung 0:8ede47d38d10 125 #define FLASH_TYPEERASE_MASSERASE ((uint32_t)0x01) /*!< Flash Mass erase activation */
phungductung 0:8ede47d38d10 126 /**
phungductung 0:8ede47d38d10 127 * @}
phungductung 0:8ede47d38d10 128 */
phungductung 0:8ede47d38d10 129
phungductung 0:8ede47d38d10 130 /** @defgroup FLASHEx_Voltage_Range FLASH Voltage Range
phungductung 0:8ede47d38d10 131 * @{
phungductung 0:8ede47d38d10 132 */
phungductung 0:8ede47d38d10 133 #define FLASH_VOLTAGE_RANGE_1 ((uint32_t)0x00) /*!< Device operating range: 1.8V to 2.1V */
phungductung 0:8ede47d38d10 134 #define FLASH_VOLTAGE_RANGE_2 ((uint32_t)0x01) /*!< Device operating range: 2.1V to 2.7V */
phungductung 0:8ede47d38d10 135 #define FLASH_VOLTAGE_RANGE_3 ((uint32_t)0x02) /*!< Device operating range: 2.7V to 3.6V */
phungductung 0:8ede47d38d10 136 #define FLASH_VOLTAGE_RANGE_4 ((uint32_t)0x03) /*!< Device operating range: 2.7V to 3.6V + External Vpp */
phungductung 0:8ede47d38d10 137 /**
phungductung 0:8ede47d38d10 138 * @}
phungductung 0:8ede47d38d10 139 */
phungductung 0:8ede47d38d10 140
phungductung 0:8ede47d38d10 141 /** @defgroup FLASHEx_WRP_State FLASH WRP State
phungductung 0:8ede47d38d10 142 * @{
phungductung 0:8ede47d38d10 143 */
phungductung 0:8ede47d38d10 144 #define OB_WRPSTATE_DISABLE ((uint32_t)0x00) /*!< Disable the write protection of the desired bank 1 sectors */
phungductung 0:8ede47d38d10 145 #define OB_WRPSTATE_ENABLE ((uint32_t)0x01) /*!< Enable the write protection of the desired bank 1 sectors */
phungductung 0:8ede47d38d10 146 /**
phungductung 0:8ede47d38d10 147 * @}
phungductung 0:8ede47d38d10 148 */
phungductung 0:8ede47d38d10 149
phungductung 0:8ede47d38d10 150 /** @defgroup FLASHEx_Option_Type FLASH Option Type
phungductung 0:8ede47d38d10 151 * @{
phungductung 0:8ede47d38d10 152 */
phungductung 0:8ede47d38d10 153 #define OPTIONBYTE_WRP ((uint32_t)0x01) /*!< WRP option byte configuration */
phungductung 0:8ede47d38d10 154 #define OPTIONBYTE_RDP ((uint32_t)0x02) /*!< RDP option byte configuration */
phungductung 0:8ede47d38d10 155 #define OPTIONBYTE_USER ((uint32_t)0x04) /*!< USER option byte configuration */
phungductung 0:8ede47d38d10 156 #define OPTIONBYTE_BOR ((uint32_t)0x08) /*!< BOR option byte configuration */
phungductung 0:8ede47d38d10 157 #define OPTIONBYTE_BOOTADDR_0 ((uint32_t)0x10) /*!< Boot 0 Address configuration */
phungductung 0:8ede47d38d10 158 #define OPTIONBYTE_BOOTADDR_1 ((uint32_t)0x20) /*!< Boot 1 Address configuration */
phungductung 0:8ede47d38d10 159 /**
phungductung 0:8ede47d38d10 160 * @}
phungductung 0:8ede47d38d10 161 */
phungductung 0:8ede47d38d10 162
phungductung 0:8ede47d38d10 163 /** @defgroup FLASHEx_Option_Bytes_Read_Protection FLASH Option Bytes Read Protection
phungductung 0:8ede47d38d10 164 * @{
phungductung 0:8ede47d38d10 165 */
phungductung 0:8ede47d38d10 166 #define OB_RDP_LEVEL_0 ((uint8_t)0xAA)
phungductung 0:8ede47d38d10 167 #define OB_RDP_LEVEL_1 ((uint8_t)0x55)
phungductung 0:8ede47d38d10 168 #define OB_RDP_LEVEL_2 ((uint8_t)0xCC) /*!< Warning: When enabling read protection level 2
phungductung 0:8ede47d38d10 169 it s no more possible to go back to level 1 or 0 */
phungductung 0:8ede47d38d10 170 /**
phungductung 0:8ede47d38d10 171 * @}
phungductung 0:8ede47d38d10 172 */
phungductung 0:8ede47d38d10 173
phungductung 0:8ede47d38d10 174 /** @defgroup FLASHEx_Option_Bytes_WWatchdog FLASH Option Bytes WWatchdog
phungductung 0:8ede47d38d10 175 * @{
phungductung 0:8ede47d38d10 176 */
phungductung 0:8ede47d38d10 177 #define OB_WWDG_SW ((uint32_t)0x10) /*!< Software WWDG selected */
phungductung 0:8ede47d38d10 178 #define OB_WWDG_HW ((uint32_t)0x00) /*!< Hardware WWDG selected */
phungductung 0:8ede47d38d10 179 /**
phungductung 0:8ede47d38d10 180 * @}
phungductung 0:8ede47d38d10 181 */
phungductung 0:8ede47d38d10 182
phungductung 0:8ede47d38d10 183
phungductung 0:8ede47d38d10 184 /** @defgroup FLASHEx_Option_Bytes_IWatchdog FLASH Option Bytes IWatchdog
phungductung 0:8ede47d38d10 185 * @{
phungductung 0:8ede47d38d10 186 */
phungductung 0:8ede47d38d10 187 #define OB_IWDG_SW ((uint32_t)0x20) /*!< Software IWDG selected */
phungductung 0:8ede47d38d10 188 #define OB_IWDG_HW ((uint32_t)0x00) /*!< Hardware IWDG selected */
phungductung 0:8ede47d38d10 189 /**
phungductung 0:8ede47d38d10 190 * @}
phungductung 0:8ede47d38d10 191 */
phungductung 0:8ede47d38d10 192
phungductung 0:8ede47d38d10 193 /** @defgroup FLASHEx_Option_Bytes_nRST_STOP FLASH Option Bytes nRST_STOP
phungductung 0:8ede47d38d10 194 * @{
phungductung 0:8ede47d38d10 195 */
phungductung 0:8ede47d38d10 196 #define OB_STOP_NO_RST ((uint32_t)0x40) /*!< No reset generated when entering in STOP */
phungductung 0:8ede47d38d10 197 #define OB_STOP_RST ((uint32_t)0x00) /*!< Reset generated when entering in STOP */
phungductung 0:8ede47d38d10 198 /**
phungductung 0:8ede47d38d10 199 * @}
phungductung 0:8ede47d38d10 200 */
phungductung 0:8ede47d38d10 201
phungductung 0:8ede47d38d10 202 /** @defgroup FLASHEx_Option_Bytes_nRST_STDBY FLASH Option Bytes nRST_STDBY
phungductung 0:8ede47d38d10 203 * @{
phungductung 0:8ede47d38d10 204 */
phungductung 0:8ede47d38d10 205 #define OB_STDBY_NO_RST ((uint32_t)0x80) /*!< No reset generated when entering in STANDBY */
phungductung 0:8ede47d38d10 206 #define OB_STDBY_RST ((uint32_t)0x00) /*!< Reset generated when entering in STANDBY */
phungductung 0:8ede47d38d10 207 /**
phungductung 0:8ede47d38d10 208 * @}
phungductung 0:8ede47d38d10 209 */
phungductung 0:8ede47d38d10 210
phungductung 0:8ede47d38d10 211 /** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_STOP FLASH IWDG Counter Freeze in STOP
phungductung 0:8ede47d38d10 212 * @{
phungductung 0:8ede47d38d10 213 */
phungductung 0:8ede47d38d10 214 #define OB_IWDG_STOP_FREEZE ((uint32_t)0x00000000) /*!< Freeze IWDG counter in STOP mode */
phungductung 0:8ede47d38d10 215 #define OB_IWDG_STOP_ACTIVE ((uint32_t)0x80000000) /*!< IWDG counter active in STOP mode */
phungductung 0:8ede47d38d10 216 /**
phungductung 0:8ede47d38d10 217 * @}
phungductung 0:8ede47d38d10 218 */
phungductung 0:8ede47d38d10 219
phungductung 0:8ede47d38d10 220 /** @defgroup FLASHEx_Option_Bytes_IWDG_FREEZE_SANDBY FLASH IWDG Counter Freeze in STANDBY
phungductung 0:8ede47d38d10 221 * @{
phungductung 0:8ede47d38d10 222 */
phungductung 0:8ede47d38d10 223 #define OB_IWDG_STDBY_FREEZE ((uint32_t)0x00000000) /*!< Freeze IWDG counter in STANDBY mode */
phungductung 0:8ede47d38d10 224 #define OB_IWDG_STDBY_ACTIVE ((uint32_t)0x40000000) /*!< IWDG counter active in STANDBY mode */
phungductung 0:8ede47d38d10 225 /**
phungductung 0:8ede47d38d10 226 * @}
phungductung 0:8ede47d38d10 227 */
phungductung 0:8ede47d38d10 228
phungductung 0:8ede47d38d10 229 /** @defgroup FLASHEx_BOR_Reset_Level FLASH BOR Reset Level
phungductung 0:8ede47d38d10 230 * @{
phungductung 0:8ede47d38d10 231 */
phungductung 0:8ede47d38d10 232 #define OB_BOR_LEVEL3 ((uint32_t)0x00) /*!< Supply voltage ranges from 2.70 to 3.60 V */
phungductung 0:8ede47d38d10 233 #define OB_BOR_LEVEL2 ((uint32_t)0x04) /*!< Supply voltage ranges from 2.40 to 2.70 V */
phungductung 0:8ede47d38d10 234 #define OB_BOR_LEVEL1 ((uint32_t)0x08) /*!< Supply voltage ranges from 2.10 to 2.40 V */
phungductung 0:8ede47d38d10 235 #define OB_BOR_OFF ((uint32_t)0x0C) /*!< Supply voltage ranges from 1.62 to 2.10 V */
phungductung 0:8ede47d38d10 236
phungductung 0:8ede47d38d10 237 /**
phungductung 0:8ede47d38d10 238 * @}
phungductung 0:8ede47d38d10 239 */
phungductung 0:8ede47d38d10 240
phungductung 0:8ede47d38d10 241 /** @defgroup FLASHEx_Boot_Address FLASH Boot Address
phungductung 0:8ede47d38d10 242 * @{
phungductung 0:8ede47d38d10 243 */
phungductung 0:8ede47d38d10 244 #define OB_BOOTADDR_ITCM_RAM ((uint32_t)0x0000) /*!< Boot from ITCM RAM (0x00000000) */
phungductung 0:8ede47d38d10 245 #define OB_BOOTADDR_SYSTEM ((uint32_t)0x0040) /*!< Boot from System memory bootloader (0x00100000) */
phungductung 0:8ede47d38d10 246 #define OB_BOOTADDR_ITCM_FLASH ((uint32_t)0x0080) /*!< Boot from Flash on ITCM interface (0x00200000) */
phungductung 0:8ede47d38d10 247 #define OB_BOOTADDR_AXIM_FLASH ((uint32_t)0x2000) /*!< Boot from Flash on AXIM interface (0x08000000) */
phungductung 0:8ede47d38d10 248 #define OB_BOOTADDR_DTCM_RAM ((uint32_t)0x8000) /*!< Boot from DTCM RAM (0x20000000) */
phungductung 0:8ede47d38d10 249 #define OB_BOOTADDR_SRAM1 ((uint32_t)0x8004) /*!< Boot from SRAM1 (0x20010000) */
phungductung 0:8ede47d38d10 250 #define OB_BOOTADDR_SRAM2 ((uint32_t)0x8013) /*!< Boot from SRAM2 (0x2004C000) */
phungductung 0:8ede47d38d10 251 /**
phungductung 0:8ede47d38d10 252 * @}
phungductung 0:8ede47d38d10 253 */
phungductung 0:8ede47d38d10 254
phungductung 0:8ede47d38d10 255 /** @defgroup FLASH_Latency FLASH Latency
phungductung 0:8ede47d38d10 256 * @{
phungductung 0:8ede47d38d10 257 */
phungductung 0:8ede47d38d10 258 #define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero Latency cycle */
phungductung 0:8ede47d38d10 259 #define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One Latency cycle */
phungductung 0:8ede47d38d10 260 #define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two Latency cycles */
phungductung 0:8ede47d38d10 261 #define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three Latency cycles */
phungductung 0:8ede47d38d10 262 #define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four Latency cycles */
phungductung 0:8ede47d38d10 263 #define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH Five Latency cycles */
phungductung 0:8ede47d38d10 264 #define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH Six Latency cycles */
phungductung 0:8ede47d38d10 265 #define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH Seven Latency cycles */
phungductung 0:8ede47d38d10 266 #define FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH Eight Latency cycles */
phungductung 0:8ede47d38d10 267 #define FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH Nine Latency cycles */
phungductung 0:8ede47d38d10 268 #define FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH Ten Latency cycles */
phungductung 0:8ede47d38d10 269 #define FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH Eleven Latency cycles */
phungductung 0:8ede47d38d10 270 #define FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH Twelve Latency cycles */
phungductung 0:8ede47d38d10 271 #define FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH Thirteen Latency cycles */
phungductung 0:8ede47d38d10 272 #define FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH Fourteen Latency cycles */
phungductung 0:8ede47d38d10 273 #define FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH Fifteen Latency cycles */
phungductung 0:8ede47d38d10 274 /**
phungductung 0:8ede47d38d10 275 * @}
phungductung 0:8ede47d38d10 276 */
phungductung 0:8ede47d38d10 277
phungductung 0:8ede47d38d10 278 /** @defgroup FLASHEx_MassErase_bit FLASH Mass Erase bit
phungductung 0:8ede47d38d10 279 * @{
phungductung 0:8ede47d38d10 280 */
phungductung 0:8ede47d38d10 281 #define FLASH_MER_BIT (FLASH_CR_MER) /*!< MER bit to clear */
phungductung 0:8ede47d38d10 282 /**
phungductung 0:8ede47d38d10 283 * @}
phungductung 0:8ede47d38d10 284 */
phungductung 0:8ede47d38d10 285
phungductung 0:8ede47d38d10 286 /** @defgroup FLASHEx_Sectors FLASH Sectors
phungductung 0:8ede47d38d10 287 * @{
phungductung 0:8ede47d38d10 288 */
phungductung 0:8ede47d38d10 289 #define FLASH_SECTOR_0 ((uint32_t)0) /*!< Sector Number 0 */
phungductung 0:8ede47d38d10 290 #define FLASH_SECTOR_1 ((uint32_t)1) /*!< Sector Number 1 */
phungductung 0:8ede47d38d10 291 #define FLASH_SECTOR_2 ((uint32_t)2) /*!< Sector Number 2 */
phungductung 0:8ede47d38d10 292 #define FLASH_SECTOR_3 ((uint32_t)3) /*!< Sector Number 3 */
phungductung 0:8ede47d38d10 293 #define FLASH_SECTOR_4 ((uint32_t)4) /*!< Sector Number 4 */
phungductung 0:8ede47d38d10 294 #define FLASH_SECTOR_5 ((uint32_t)5) /*!< Sector Number 5 */
phungductung 0:8ede47d38d10 295 #define FLASH_SECTOR_6 ((uint32_t)6) /*!< Sector Number 6 */
phungductung 0:8ede47d38d10 296 #define FLASH_SECTOR_7 ((uint32_t)7) /*!< Sector Number 7 */
phungductung 0:8ede47d38d10 297
phungductung 0:8ede47d38d10 298 /**
phungductung 0:8ede47d38d10 299 * @}
phungductung 0:8ede47d38d10 300 */
phungductung 0:8ede47d38d10 301
phungductung 0:8ede47d38d10 302 /** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection
phungductung 0:8ede47d38d10 303 * @{
phungductung 0:8ede47d38d10 304 */
phungductung 0:8ede47d38d10 305 #define OB_WRP_SECTOR_0 ((uint32_t)0x00010000) /*!< Write protection of Sector0 */
phungductung 0:8ede47d38d10 306 #define OB_WRP_SECTOR_1 ((uint32_t)0x00020000) /*!< Write protection of Sector1 */
phungductung 0:8ede47d38d10 307 #define OB_WRP_SECTOR_2 ((uint32_t)0x00040000) /*!< Write protection of Sector2 */
phungductung 0:8ede47d38d10 308 #define OB_WRP_SECTOR_3 ((uint32_t)0x00080000) /*!< Write protection of Sector3 */
phungductung 0:8ede47d38d10 309 #define OB_WRP_SECTOR_4 ((uint32_t)0x00100000) /*!< Write protection of Sector4 */
phungductung 0:8ede47d38d10 310 #define OB_WRP_SECTOR_5 ((uint32_t)0x00200000) /*!< Write protection of Sector5 */
phungductung 0:8ede47d38d10 311 #define OB_WRP_SECTOR_6 ((uint32_t)0x00400000) /*!< Write protection of Sector6 */
phungductung 0:8ede47d38d10 312 #define OB_WRP_SECTOR_7 ((uint32_t)0x00800000) /*!< Write protection of Sector7 */
phungductung 0:8ede47d38d10 313 #define OB_WRP_SECTOR_All ((uint32_t)0x00FF0000) /*!< Write protection of all Sectors */
phungductung 0:8ede47d38d10 314
phungductung 0:8ede47d38d10 315 /**
phungductung 0:8ede47d38d10 316 * @}
phungductung 0:8ede47d38d10 317 */
phungductung 0:8ede47d38d10 318
phungductung 0:8ede47d38d10 319 /**
phungductung 0:8ede47d38d10 320 * @}
phungductung 0:8ede47d38d10 321 */
phungductung 0:8ede47d38d10 322
phungductung 0:8ede47d38d10 323 /* Exported macro ------------------------------------------------------------*/
phungductung 0:8ede47d38d10 324 /* Exported functions --------------------------------------------------------*/
phungductung 0:8ede47d38d10 325 /** @addtogroup FLASHEx_Exported_Functions
phungductung 0:8ede47d38d10 326 * @{
phungductung 0:8ede47d38d10 327 */
phungductung 0:8ede47d38d10 328
phungductung 0:8ede47d38d10 329 /** @addtogroup FLASHEx_Exported_Functions_Group1
phungductung 0:8ede47d38d10 330 * @{
phungductung 0:8ede47d38d10 331 */
phungductung 0:8ede47d38d10 332 /* Extension Program operation functions *************************************/
phungductung 0:8ede47d38d10 333 HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError);
phungductung 0:8ede47d38d10 334 HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit);
phungductung 0:8ede47d38d10 335 HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit);
phungductung 0:8ede47d38d10 336 void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit);
phungductung 0:8ede47d38d10 337
phungductung 0:8ede47d38d10 338 /**
phungductung 0:8ede47d38d10 339 * @}
phungductung 0:8ede47d38d10 340 */
phungductung 0:8ede47d38d10 341
phungductung 0:8ede47d38d10 342 /**
phungductung 0:8ede47d38d10 343 * @}
phungductung 0:8ede47d38d10 344 */
phungductung 0:8ede47d38d10 345 /* Private types -------------------------------------------------------------*/
phungductung 0:8ede47d38d10 346 /* Private variables ---------------------------------------------------------*/
phungductung 0:8ede47d38d10 347 /* Private constants ---------------------------------------------------------*/
phungductung 0:8ede47d38d10 348 /** @defgroup FLASHEx_Private_Constants FLASH Private Constants
phungductung 0:8ede47d38d10 349 * @{
phungductung 0:8ede47d38d10 350 */
phungductung 0:8ede47d38d10 351 #define FLASH_SECTOR_TOTAL 8
phungductung 0:8ede47d38d10 352 /**
phungductung 0:8ede47d38d10 353 * @}
phungductung 0:8ede47d38d10 354 */
phungductung 0:8ede47d38d10 355
phungductung 0:8ede47d38d10 356 /* Private macros ------------------------------------------------------------*/
phungductung 0:8ede47d38d10 357 /** @defgroup FLASHEx_Private_Macros FLASH Private Macros
phungductung 0:8ede47d38d10 358 * @{
phungductung 0:8ede47d38d10 359 */
phungductung 0:8ede47d38d10 360
phungductung 0:8ede47d38d10 361 /** @defgroup FLASHEx_IS_FLASH_Definitions FLASH Private macros to check input parameters
phungductung 0:8ede47d38d10 362 * @{
phungductung 0:8ede47d38d10 363 */
phungductung 0:8ede47d38d10 364
phungductung 0:8ede47d38d10 365 #define IS_FLASH_TYPEERASE(VALUE)(((VALUE) == FLASH_TYPEERASE_SECTORS) || \
phungductung 0:8ede47d38d10 366 ((VALUE) == FLASH_TYPEERASE_MASSERASE))
phungductung 0:8ede47d38d10 367
phungductung 0:8ede47d38d10 368 #define IS_VOLTAGERANGE(RANGE)(((RANGE) == FLASH_VOLTAGE_RANGE_1) || \
phungductung 0:8ede47d38d10 369 ((RANGE) == FLASH_VOLTAGE_RANGE_2) || \
phungductung 0:8ede47d38d10 370 ((RANGE) == FLASH_VOLTAGE_RANGE_3) || \
phungductung 0:8ede47d38d10 371 ((RANGE) == FLASH_VOLTAGE_RANGE_4))
phungductung 0:8ede47d38d10 372
phungductung 0:8ede47d38d10 373 #define IS_WRPSTATE(VALUE)(((VALUE) == OB_WRPSTATE_DISABLE) || \
phungductung 0:8ede47d38d10 374 ((VALUE) == OB_WRPSTATE_ENABLE))
phungductung 0:8ede47d38d10 375
phungductung 0:8ede47d38d10 376 #define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER |\
phungductung 0:8ede47d38d10 377 OPTIONBYTE_BOR | OPTIONBYTE_BOOTADDR_0 | OPTIONBYTE_BOOTADDR_1)))
phungductung 0:8ede47d38d10 378
phungductung 0:8ede47d38d10 379 #define IS_OB_BOOT_ADDRESS(ADDRESS) (((ADDRESS) == OB_BOOTADDR_ITCM_RAM) || \
phungductung 0:8ede47d38d10 380 ((ADDRESS) == OB_BOOTADDR_SYSTEM) || \
phungductung 0:8ede47d38d10 381 ((ADDRESS) == OB_BOOTADDR_ITCM_FLASH) || \
phungductung 0:8ede47d38d10 382 ((ADDRESS) == OB_BOOTADDR_AXIM_FLASH) || \
phungductung 0:8ede47d38d10 383 ((ADDRESS) == OB_BOOTADDR_DTCM_RAM) || \
phungductung 0:8ede47d38d10 384 ((ADDRESS) == OB_BOOTADDR_SRAM1) || \
phungductung 0:8ede47d38d10 385 ((ADDRESS) == OB_BOOTADDR_SRAM2))
phungductung 0:8ede47d38d10 386
phungductung 0:8ede47d38d10 387 #define IS_OB_RDP_LEVEL(LEVEL) (((LEVEL) == OB_RDP_LEVEL_0) ||\
phungductung 0:8ede47d38d10 388 ((LEVEL) == OB_RDP_LEVEL_1) ||\
phungductung 0:8ede47d38d10 389 ((LEVEL) == OB_RDP_LEVEL_2))
phungductung 0:8ede47d38d10 390
phungductung 0:8ede47d38d10 391 #define IS_OB_WWDG_SOURCE(SOURCE) (((SOURCE) == OB_WWDG_SW) || ((SOURCE) == OB_WWDG_HW))
phungductung 0:8ede47d38d10 392
phungductung 0:8ede47d38d10 393 #define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))
phungductung 0:8ede47d38d10 394
phungductung 0:8ede47d38d10 395 #define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST))
phungductung 0:8ede47d38d10 396
phungductung 0:8ede47d38d10 397 #define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST))
phungductung 0:8ede47d38d10 398
phungductung 0:8ede47d38d10 399 #define IS_OB_IWDG_STOP_FREEZE(FREEZE) (((FREEZE) == OB_IWDG_STOP_FREEZE) || ((FREEZE) == OB_IWDG_STOP_ACTIVE))
phungductung 0:8ede47d38d10 400
phungductung 0:8ede47d38d10 401 #define IS_OB_IWDG_STDBY_FREEZE(FREEZE) (((FREEZE) == OB_IWDG_STDBY_FREEZE) || ((FREEZE) == OB_IWDG_STDBY_ACTIVE))
phungductung 0:8ede47d38d10 402
phungductung 0:8ede47d38d10 403 #define IS_OB_BOR_LEVEL(LEVEL) (((LEVEL) == OB_BOR_LEVEL1) || ((LEVEL) == OB_BOR_LEVEL2) ||\
phungductung 0:8ede47d38d10 404 ((LEVEL) == OB_BOR_LEVEL3) || ((LEVEL) == OB_BOR_OFF))
phungductung 0:8ede47d38d10 405
phungductung 0:8ede47d38d10 406 #define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \
phungductung 0:8ede47d38d10 407 ((LATENCY) == FLASH_LATENCY_1) || \
phungductung 0:8ede47d38d10 408 ((LATENCY) == FLASH_LATENCY_2) || \
phungductung 0:8ede47d38d10 409 ((LATENCY) == FLASH_LATENCY_3) || \
phungductung 0:8ede47d38d10 410 ((LATENCY) == FLASH_LATENCY_4) || \
phungductung 0:8ede47d38d10 411 ((LATENCY) == FLASH_LATENCY_5) || \
phungductung 0:8ede47d38d10 412 ((LATENCY) == FLASH_LATENCY_6) || \
phungductung 0:8ede47d38d10 413 ((LATENCY) == FLASH_LATENCY_7) || \
phungductung 0:8ede47d38d10 414 ((LATENCY) == FLASH_LATENCY_8) || \
phungductung 0:8ede47d38d10 415 ((LATENCY) == FLASH_LATENCY_9) || \
phungductung 0:8ede47d38d10 416 ((LATENCY) == FLASH_LATENCY_10) || \
phungductung 0:8ede47d38d10 417 ((LATENCY) == FLASH_LATENCY_11) || \
phungductung 0:8ede47d38d10 418 ((LATENCY) == FLASH_LATENCY_12) || \
phungductung 0:8ede47d38d10 419 ((LATENCY) == FLASH_LATENCY_13) || \
phungductung 0:8ede47d38d10 420 ((LATENCY) == FLASH_LATENCY_14) || \
phungductung 0:8ede47d38d10 421 ((LATENCY) == FLASH_LATENCY_15))
phungductung 0:8ede47d38d10 422
phungductung 0:8ede47d38d10 423 #define IS_FLASH_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && ((ADDRESS) <= FLASH_END))
phungductung 0:8ede47d38d10 424
phungductung 0:8ede47d38d10 425 #define IS_FLASH_NBSECTORS(NBSECTORS) (((NBSECTORS) != 0) && ((NBSECTORS) <= FLASH_SECTOR_TOTAL))
phungductung 0:8ede47d38d10 426
phungductung 0:8ede47d38d10 427 #define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
phungductung 0:8ede47d38d10 428 ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
phungductung 0:8ede47d38d10 429 ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
phungductung 0:8ede47d38d10 430 ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7))
phungductung 0:8ede47d38d10 431
phungductung 0:8ede47d38d10 432 #define IS_OB_WRP_SECTOR(SECTOR) ((((SECTOR) & (uint32_t)0xFF00FFFF) == 0x00000000) && ((SECTOR) != 0x00000000))
phungductung 0:8ede47d38d10 433
phungductung 0:8ede47d38d10 434 /**
phungductung 0:8ede47d38d10 435 * @}
phungductung 0:8ede47d38d10 436 */
phungductung 0:8ede47d38d10 437
phungductung 0:8ede47d38d10 438 /**
phungductung 0:8ede47d38d10 439 * @}
phungductung 0:8ede47d38d10 440 */
phungductung 0:8ede47d38d10 441
phungductung 0:8ede47d38d10 442 /* Private functions ---------------------------------------------------------*/
phungductung 0:8ede47d38d10 443 /** @defgroup FLASHEx_Private_Functions FLASH Private Functions
phungductung 0:8ede47d38d10 444 * @{
phungductung 0:8ede47d38d10 445 */
phungductung 0:8ede47d38d10 446 void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange);
phungductung 0:8ede47d38d10 447 /**
phungductung 0:8ede47d38d10 448 * @}
phungductung 0:8ede47d38d10 449 */
phungductung 0:8ede47d38d10 450
phungductung 0:8ede47d38d10 451 /**
phungductung 0:8ede47d38d10 452 * @}
phungductung 0:8ede47d38d10 453 */
phungductung 0:8ede47d38d10 454
phungductung 0:8ede47d38d10 455 /**
phungductung 0:8ede47d38d10 456 * @}
phungductung 0:8ede47d38d10 457 */
phungductung 0:8ede47d38d10 458
phungductung 0:8ede47d38d10 459 #ifdef __cplusplus
phungductung 0:8ede47d38d10 460 }
phungductung 0:8ede47d38d10 461 #endif
phungductung 0:8ede47d38d10 462
phungductung 0:8ede47d38d10 463 #endif /* __STM32F7xx_HAL_FLASH_EX_H */
phungductung 0:8ede47d38d10 464
phungductung 0:8ede47d38d10 465 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/