mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Jul 02 16:30:08 2015 +0100
Revision:
581:39197bcd20f2
Parent:
532:fe11edbda85c
Child:
613:bc40b8d2aec4
Synchronized with git revision ae2d3cdffe70184eb8736d94f76c45c93f4b7724

Full URL: https://github.com/mbedmicro/mbed/commit/ae2d3cdffe70184eb8736d94f76c45c93f4b7724/

Make it possible to build the core mbed library with yotta

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 87:085cde657901 1 /**
mbed_official 87:085cde657901 2 ******************************************************************************
mbed_official 87:085cde657901 3 * @file stm32f4xx_hal_flash_ex.h
mbed_official 87:085cde657901 4 * @author MCD Application Team
mbed_official 532:fe11edbda85c 5 * @version V1.3.0
mbed_official 532:fe11edbda85c 6 * @date 09-March-2015
mbed_official 87:085cde657901 7 * @brief Header file of FLASH HAL Extension module.
mbed_official 87:085cde657901 8 ******************************************************************************
mbed_official 87:085cde657901 9 * @attention
mbed_official 87:085cde657901 10 *
mbed_official 532:fe11edbda85c 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 87:085cde657901 12 *
mbed_official 87:085cde657901 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 87:085cde657901 14 * are permitted provided that the following conditions are met:
mbed_official 87:085cde657901 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 87:085cde657901 16 * this list of conditions and the following disclaimer.
mbed_official 87:085cde657901 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 87:085cde657901 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 87:085cde657901 19 * and/or other materials provided with the distribution.
mbed_official 87:085cde657901 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 87:085cde657901 21 * may be used to endorse or promote products derived from this software
mbed_official 87:085cde657901 22 * without specific prior written permission.
mbed_official 87:085cde657901 23 *
mbed_official 87:085cde657901 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 87:085cde657901 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 87:085cde657901 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 87:085cde657901 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 87:085cde657901 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 87:085cde657901 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 87:085cde657901 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 87:085cde657901 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 87:085cde657901 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 87:085cde657901 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 87:085cde657901 34 *
mbed_official 87:085cde657901 35 ******************************************************************************
mbed_official 87:085cde657901 36 */
mbed_official 87:085cde657901 37
mbed_official 87:085cde657901 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 87:085cde657901 39 #ifndef __STM32F4xx_HAL_FLASH_EX_H
mbed_official 87:085cde657901 40 #define __STM32F4xx_HAL_FLASH_EX_H
mbed_official 87:085cde657901 41
mbed_official 87:085cde657901 42 #ifdef __cplusplus
mbed_official 87:085cde657901 43 extern "C" {
mbed_official 87:085cde657901 44 #endif
mbed_official 87:085cde657901 45
mbed_official 87:085cde657901 46 /* Includes ------------------------------------------------------------------*/
mbed_official 87:085cde657901 47 #include "stm32f4xx_hal_def.h"
mbed_official 87:085cde657901 48
mbed_official 87:085cde657901 49 /** @addtogroup STM32F4xx_HAL_Driver
mbed_official 87:085cde657901 50 * @{
mbed_official 87:085cde657901 51 */
mbed_official 87:085cde657901 52
mbed_official 87:085cde657901 53 /** @addtogroup FLASHEx
mbed_official 87:085cde657901 54 * @{
mbed_official 87:085cde657901 55 */
mbed_official 87:085cde657901 56
mbed_official 87:085cde657901 57 /* Exported types ------------------------------------------------------------*/
mbed_official 532:fe11edbda85c 58 /** @defgroup FLASHEx_Exported_Types FLASH Exported Types
mbed_official 532:fe11edbda85c 59 * @{
mbed_official 532:fe11edbda85c 60 */
mbed_official 87:085cde657901 61
mbed_official 87:085cde657901 62 /**
mbed_official 87:085cde657901 63 * @brief FLASH Erase structure definition
mbed_official 87:085cde657901 64 */
mbed_official 87:085cde657901 65 typedef struct
mbed_official 87:085cde657901 66 {
mbed_official 226:b062af740e40 67 uint32_t TypeErase; /*!< Mass erase or sector Erase.
mbed_official 87:085cde657901 68 This parameter can be a value of @ref FLASHEx_Type_Erase */
mbed_official 87:085cde657901 69
mbed_official 226:b062af740e40 70 uint32_t Banks; /*!< Select banks to erase when Mass erase is enabled.
mbed_official 87:085cde657901 71 This parameter must be a value of @ref FLASHEx_Banks */
mbed_official 87:085cde657901 72
mbed_official 226:b062af740e40 73 uint32_t Sector; /*!< Initial FLASH sector to erase when Mass erase is disabled
mbed_official 87:085cde657901 74 This parameter must be a value of @ref FLASHEx_Sectors */
mbed_official 87:085cde657901 75
mbed_official 226:b062af740e40 76 uint32_t NbSectors; /*!< Number of sectors to be erased.
mbed_official 87:085cde657901 77 This parameter must be a value between 1 and (max number of sectors - value of Initial sector)*/
mbed_official 87:085cde657901 78
mbed_official 226:b062af740e40 79 uint32_t VoltageRange;/*!< The device voltage range which defines the erase parallelism
mbed_official 87:085cde657901 80 This parameter must be a value of @ref FLASHEx_Voltage_Range */
mbed_official 87:085cde657901 81
mbed_official 87:085cde657901 82 } FLASH_EraseInitTypeDef;
mbed_official 87:085cde657901 83
mbed_official 87:085cde657901 84 /**
mbed_official 87:085cde657901 85 * @brief FLASH Option Bytes Program structure definition
mbed_official 87:085cde657901 86 */
mbed_official 87:085cde657901 87 typedef struct
mbed_official 87:085cde657901 88 {
mbed_official 226:b062af740e40 89 uint32_t OptionType; /*!< Option byte to be configured.
mbed_official 87:085cde657901 90 This parameter can be a value of @ref FLASHEx_Option_Type */
mbed_official 87:085cde657901 91
mbed_official 226:b062af740e40 92 uint32_t WRPState; /*!< Write protection activation or deactivation.
mbed_official 87:085cde657901 93 This parameter can be a value of @ref FLASHEx_WRP_State */
mbed_official 87:085cde657901 94
mbed_official 226:b062af740e40 95 uint32_t WRPSector; /*!< Specifies the sector(s) to be write protected.
mbed_official 87:085cde657901 96 The value of this parameter depend on device used within the same series */
mbed_official 87:085cde657901 97
mbed_official 226:b062af740e40 98 uint32_t Banks; /*!< Select banks for WRP activation/deactivation of all sectors.
mbed_official 87:085cde657901 99 This parameter must be a value of @ref FLASHEx_Banks */
mbed_official 87:085cde657901 100
mbed_official 226:b062af740e40 101 uint32_t RDPLevel; /*!< Set the read protection level.
mbed_official 87:085cde657901 102 This parameter can be a value of @ref FLASHEx_Option_Bytes_Read_Protection */
mbed_official 87:085cde657901 103
mbed_official 226:b062af740e40 104 uint32_t BORLevel; /*!< Set the BOR Level.
mbed_official 87:085cde657901 105 This parameter can be a value of @ref FLASHEx_BOR_Reset_Level */
mbed_official 87:085cde657901 106
mbed_official 226:b062af740e40 107 uint8_t USERConfig; /*!< Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. */
mbed_official 87:085cde657901 108
mbed_official 87:085cde657901 109 } FLASH_OBProgramInitTypeDef;
mbed_official 87:085cde657901 110
mbed_official 87:085cde657901 111 /**
mbed_official 87:085cde657901 112 * @brief FLASH Advanced Option Bytes Program structure definition
mbed_official 87:085cde657901 113 */
mbed_official 369:2e96f1b71984 114 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) || \
mbed_official 532:fe11edbda85c 115 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 116 typedef struct
mbed_official 87:085cde657901 117 {
mbed_official 226:b062af740e40 118 uint32_t OptionType; /*!< Option byte to be configured for extension.
mbed_official 87:085cde657901 119 This parameter can be a value of @ref FLASHEx_Advanced_Option_Type */
mbed_official 87:085cde657901 120
mbed_official 226:b062af740e40 121 uint32_t PCROPState; /*!< PCROP activation or deactivation.
mbed_official 87:085cde657901 122 This parameter can be a value of @ref FLASHEx_PCROP_State */
mbed_official 87:085cde657901 123
mbed_official 532:fe11edbda85c 124 #if defined (STM32F401xC) || defined (STM32F401xE) || defined (STM32F411xE) || defined (STM32F446xx)
mbed_official 226:b062af740e40 125 uint16_t Sectors; /*!< specifies the sector(s) set for PCROP.
mbed_official 87:085cde657901 126 This parameter can be a value of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection */
mbed_official 532:fe11edbda85c 127 #endif /* STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 369:2e96f1b71984 128
mbed_official 87:085cde657901 129 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
mbed_official 226:b062af740e40 130 uint32_t Banks; /*!< Select banks for PCROP activation/deactivation of all sectors.
mbed_official 87:085cde657901 131 This parameter must be a value of @ref FLASHEx_Banks */
mbed_official 87:085cde657901 132
mbed_official 226:b062af740e40 133 uint16_t SectorsBank1; /*!< Specifies the sector(s) set for PCROP for Bank1.
mbed_official 87:085cde657901 134 This parameter can be a value of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection */
mbed_official 87:085cde657901 135
mbed_official 226:b062af740e40 136 uint16_t SectorsBank2; /*!< Specifies the sector(s) set for PCROP for Bank2.
mbed_official 87:085cde657901 137 This parameter can be a value of @ref FLASHEx_Option_Bytes_PC_ReadWrite_Protection */
mbed_official 87:085cde657901 138
mbed_official 226:b062af740e40 139 uint8_t BootConfig; /*!< Specifies Option bytes for boot config.
mbed_official 87:085cde657901 140 This parameter can be a value of @ref FLASHEx_Dual_Boot */
mbed_official 87:085cde657901 141
mbed_official 87:085cde657901 142 #endif /*STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
mbed_official 87:085cde657901 143 } FLASH_AdvOBProgramInitTypeDef;
mbed_official 532:fe11edbda85c 144 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 145 /**
mbed_official 532:fe11edbda85c 146 * @}
mbed_official 532:fe11edbda85c 147 */
mbed_official 87:085cde657901 148
mbed_official 87:085cde657901 149 /* Exported constants --------------------------------------------------------*/
mbed_official 87:085cde657901 150
mbed_official 369:2e96f1b71984 151 /** @defgroup FLASHEx_Exported_Constants FLASH Exported Constants
mbed_official 87:085cde657901 152 * @{
mbed_official 87:085cde657901 153 */
mbed_official 87:085cde657901 154
mbed_official 87:085cde657901 155 /** @defgroup FLASHEx_Type_Erase FLASH Type Erase
mbed_official 87:085cde657901 156 * @{
mbed_official 87:085cde657901 157 */
mbed_official 532:fe11edbda85c 158 #define FLASH_TYPEERASE_SECTORS ((uint32_t)0x00) /*!< Sectors erase only */
mbed_official 532:fe11edbda85c 159 #define FLASH_TYPEERASE_MASSERASE ((uint32_t)0x01) /*!< Flash Mass erase activation */
mbed_official 87:085cde657901 160 /**
mbed_official 87:085cde657901 161 * @}
mbed_official 87:085cde657901 162 */
mbed_official 87:085cde657901 163
mbed_official 87:085cde657901 164 /** @defgroup FLASHEx_Voltage_Range FLASH Voltage Range
mbed_official 87:085cde657901 165 * @{
mbed_official 87:085cde657901 166 */
mbed_official 532:fe11edbda85c 167 #define FLASH_VOLTAGE_RANGE_1 ((uint32_t)0x00) /*!< Device operating range: 1.8V to 2.1V */
mbed_official 532:fe11edbda85c 168 #define FLASH_VOLTAGE_RANGE_2 ((uint32_t)0x01) /*!< Device operating range: 2.1V to 2.7V */
mbed_official 532:fe11edbda85c 169 #define FLASH_VOLTAGE_RANGE_3 ((uint32_t)0x02) /*!< Device operating range: 2.7V to 3.6V */
mbed_official 532:fe11edbda85c 170 #define FLASH_VOLTAGE_RANGE_4 ((uint32_t)0x03) /*!< Device operating range: 2.7V to 3.6V + External Vpp */
mbed_official 87:085cde657901 171 /**
mbed_official 87:085cde657901 172 * @}
mbed_official 87:085cde657901 173 */
mbed_official 87:085cde657901 174
mbed_official 87:085cde657901 175 /** @defgroup FLASHEx_WRP_State FLASH WRP State
mbed_official 87:085cde657901 176 * @{
mbed_official 87:085cde657901 177 */
mbed_official 532:fe11edbda85c 178 #define OB_WRPSTATE_DISABLE ((uint32_t)0x00) /*!< Disable the write protection of the desired bank 1 sectors */
mbed_official 532:fe11edbda85c 179 #define OB_WRPSTATE_ENABLE ((uint32_t)0x01) /*!< Enable the write protection of the desired bank 1 sectors */
mbed_official 87:085cde657901 180 /**
mbed_official 87:085cde657901 181 * @}
mbed_official 87:085cde657901 182 */
mbed_official 87:085cde657901 183
mbed_official 87:085cde657901 184 /** @defgroup FLASHEx_Option_Type FLASH Option Type
mbed_official 87:085cde657901 185 * @{
mbed_official 87:085cde657901 186 */
mbed_official 87:085cde657901 187 #define OPTIONBYTE_WRP ((uint32_t)0x01) /*!< WRP option byte configuration */
mbed_official 87:085cde657901 188 #define OPTIONBYTE_RDP ((uint32_t)0x02) /*!< RDP option byte configuration */
mbed_official 87:085cde657901 189 #define OPTIONBYTE_USER ((uint32_t)0x04) /*!< USER option byte configuration */
mbed_official 87:085cde657901 190 #define OPTIONBYTE_BOR ((uint32_t)0x08) /*!< BOR option byte configuration */
mbed_official 87:085cde657901 191 /**
mbed_official 87:085cde657901 192 * @}
mbed_official 87:085cde657901 193 */
mbed_official 87:085cde657901 194
mbed_official 87:085cde657901 195 /** @defgroup FLASHEx_Option_Bytes_Read_Protection FLASH Option Bytes Read Protection
mbed_official 87:085cde657901 196 * @{
mbed_official 87:085cde657901 197 */
mbed_official 87:085cde657901 198 #define OB_RDP_LEVEL_0 ((uint8_t)0xAA)
mbed_official 87:085cde657901 199 #define OB_RDP_LEVEL_1 ((uint8_t)0x55)
mbed_official 87:085cde657901 200 /*#define OB_RDP_LEVEL_2 ((uint8_t)0xCC)*/ /*!< Warning: When enabling read protection level 2
mbed_official 87:085cde657901 201 it s no more possible to go back to level 1 or 0 */
mbed_official 87:085cde657901 202 /**
mbed_official 87:085cde657901 203 * @}
mbed_official 87:085cde657901 204 */
mbed_official 87:085cde657901 205
mbed_official 87:085cde657901 206 /** @defgroup FLASHEx_Option_Bytes_IWatchdog FLASH Option Bytes IWatchdog
mbed_official 87:085cde657901 207 * @{
mbed_official 87:085cde657901 208 */
mbed_official 87:085cde657901 209 #define OB_IWDG_SW ((uint8_t)0x20) /*!< Software IWDG selected */
mbed_official 87:085cde657901 210 #define OB_IWDG_HW ((uint8_t)0x00) /*!< Hardware IWDG selected */
mbed_official 87:085cde657901 211 /**
mbed_official 87:085cde657901 212 * @}
mbed_official 87:085cde657901 213 */
mbed_official 87:085cde657901 214
mbed_official 87:085cde657901 215 /** @defgroup FLASHEx_Option_Bytes_nRST_STOP FLASH Option Bytes nRST_STOP
mbed_official 87:085cde657901 216 * @{
mbed_official 87:085cde657901 217 */
mbed_official 87:085cde657901 218 #define OB_STOP_NO_RST ((uint8_t)0x40) /*!< No reset generated when entering in STOP */
mbed_official 87:085cde657901 219 #define OB_STOP_RST ((uint8_t)0x00) /*!< Reset generated when entering in STOP */
mbed_official 87:085cde657901 220 /**
mbed_official 87:085cde657901 221 * @}
mbed_official 87:085cde657901 222 */
mbed_official 87:085cde657901 223
mbed_official 87:085cde657901 224
mbed_official 87:085cde657901 225 /** @defgroup FLASHEx_Option_Bytes_nRST_STDBY FLASH Option Bytes nRST_STDBY
mbed_official 87:085cde657901 226 * @{
mbed_official 87:085cde657901 227 */
mbed_official 87:085cde657901 228 #define OB_STDBY_NO_RST ((uint8_t)0x80) /*!< No reset generated when entering in STANDBY */
mbed_official 87:085cde657901 229 #define OB_STDBY_RST ((uint8_t)0x00) /*!< Reset generated when entering in STANDBY */
mbed_official 87:085cde657901 230 /**
mbed_official 87:085cde657901 231 * @}
mbed_official 87:085cde657901 232 */
mbed_official 87:085cde657901 233
mbed_official 87:085cde657901 234 /** @defgroup FLASHEx_BOR_Reset_Level FLASH BOR Reset Level
mbed_official 87:085cde657901 235 * @{
mbed_official 87:085cde657901 236 */
mbed_official 87:085cde657901 237 #define OB_BOR_LEVEL3 ((uint8_t)0x00) /*!< Supply voltage ranges from 2.70 to 3.60 V */
mbed_official 87:085cde657901 238 #define OB_BOR_LEVEL2 ((uint8_t)0x04) /*!< Supply voltage ranges from 2.40 to 2.70 V */
mbed_official 87:085cde657901 239 #define OB_BOR_LEVEL1 ((uint8_t)0x08) /*!< Supply voltage ranges from 2.10 to 2.40 V */
mbed_official 87:085cde657901 240 #define OB_BOR_OFF ((uint8_t)0x0C) /*!< Supply voltage ranges from 1.62 to 2.10 V */
mbed_official 87:085cde657901 241 /**
mbed_official 87:085cde657901 242 * @}
mbed_official 87:085cde657901 243 */
mbed_official 87:085cde657901 244
mbed_official 369:2e96f1b71984 245 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
mbed_official 532:fe11edbda85c 246 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 247 /** @defgroup FLASHEx_PCROP_State FLASH PCROP State
mbed_official 87:085cde657901 248 * @{
mbed_official 87:085cde657901 249 */
mbed_official 532:fe11edbda85c 250 #define OB_PCROP_STATE_DISABLE ((uint32_t)0x00) /*!< Disable PCROP */
mbed_official 532:fe11edbda85c 251 #define OB_PCROP_STATE_ENABLE ((uint32_t)0x01) /*!< Enable PCROP */
mbed_official 87:085cde657901 252 /**
mbed_official 87:085cde657901 253 * @}
mbed_official 87:085cde657901 254 */
mbed_official 369:2e96f1b71984 255 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F411xE */
mbed_official 87:085cde657901 256
mbed_official 87:085cde657901 257 /** @defgroup FLASHEx_Advanced_Option_Type FLASH Advanced Option Type
mbed_official 87:085cde657901 258 * @{
mbed_official 87:085cde657901 259 */
mbed_official 87:085cde657901 260 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
mbed_official 532:fe11edbda85c 261 #define OPTIONBYTE_PCROP ((uint32_t)0x01) /*!< PCROP option byte configuration */
mbed_official 532:fe11edbda85c 262 #define OPTIONBYTE_BOOTCONFIG ((uint32_t)0x02) /*!< BOOTConfig option byte configuration */
mbed_official 87:085cde657901 263 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
mbed_official 87:085cde657901 264
mbed_official 532:fe11edbda85c 265 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 266 #define OPTIONBYTE_PCROP ((uint32_t)0x01) /*!<PCROP option byte configuration */
mbed_official 532:fe11edbda85c 267 #endif /* STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 87:085cde657901 268 /**
mbed_official 87:085cde657901 269 * @}
mbed_official 87:085cde657901 270 */
mbed_official 87:085cde657901 271
mbed_official 87:085cde657901 272 /** @defgroup FLASH_Latency FLASH Latency
mbed_official 87:085cde657901 273 * @{
mbed_official 87:085cde657901 274 */
mbed_official 369:2e96f1b71984 275 /*------------------------------------------- STM32F42xxx/STM32F43xxx------------------------------------------*/
mbed_official 87:085cde657901 276 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 277 #define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero Latency cycle */
mbed_official 87:085cde657901 278 #define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One Latency cycle */
mbed_official 87:085cde657901 279 #define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two Latency cycles */
mbed_official 87:085cde657901 280 #define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three Latency cycles */
mbed_official 87:085cde657901 281 #define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four Latency cycles */
mbed_official 87:085cde657901 282 #define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH Five Latency cycles */
mbed_official 87:085cde657901 283 #define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH Six Latency cycles */
mbed_official 87:085cde657901 284 #define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH Seven Latency cycles */
mbed_official 87:085cde657901 285 #define FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH Eight Latency cycles */
mbed_official 87:085cde657901 286 #define FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH Nine Latency cycles */
mbed_official 87:085cde657901 287 #define FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH Ten Latency cycles */
mbed_official 87:085cde657901 288 #define FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH Eleven Latency cycles */
mbed_official 87:085cde657901 289 #define FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH Twelve Latency cycles */
mbed_official 87:085cde657901 290 #define FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH Thirteen Latency cycles */
mbed_official 87:085cde657901 291 #define FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH Fourteen Latency cycles */
mbed_official 87:085cde657901 292 #define FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH Fifteen Latency cycles */
mbed_official 87:085cde657901 293 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 369:2e96f1b71984 294 /*--------------------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 295
mbed_official 369:2e96f1b71984 296 /*-------------------------- STM32F40xxx/STM32F41xxx/STM32F401xx/STM32F411xx -----------------------------------*/
mbed_official 369:2e96f1b71984 297 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
mbed_official 532:fe11edbda85c 298 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 369:2e96f1b71984 299
mbed_official 87:085cde657901 300 #define FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero Latency cycle */
mbed_official 87:085cde657901 301 #define FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One Latency cycle */
mbed_official 87:085cde657901 302 #define FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two Latency cycles */
mbed_official 87:085cde657901 303 #define FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three Latency cycles */
mbed_official 87:085cde657901 304 #define FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four Latency cycles */
mbed_official 87:085cde657901 305 #define FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH Five Latency cycles */
mbed_official 87:085cde657901 306 #define FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH Six Latency cycles */
mbed_official 87:085cde657901 307 #define FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH Seven Latency cycles */
mbed_official 532:fe11edbda85c 308 #endif /* STM32F40xxx || STM32F41xxx || STM32F401xx || STM32F411xE || STM32F446xx */
mbed_official 369:2e96f1b71984 309 /*--------------------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 310
mbed_official 87:085cde657901 311 /**
mbed_official 87:085cde657901 312 * @}
mbed_official 87:085cde657901 313 */
mbed_official 87:085cde657901 314
mbed_official 87:085cde657901 315
mbed_official 87:085cde657901 316 /** @defgroup FLASHEx_Banks FLASH Banks
mbed_official 87:085cde657901 317 * @{
mbed_official 87:085cde657901 318 */
mbed_official 87:085cde657901 319 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 320 #define FLASH_BANK_1 ((uint32_t)1) /*!< Bank 1 */
mbed_official 87:085cde657901 321 #define FLASH_BANK_2 ((uint32_t)2) /*!< Bank 2 */
mbed_official 87:085cde657901 322 #define FLASH_BANK_BOTH ((uint32_t)FLASH_BANK_1 | FLASH_BANK_2) /*!< Bank1 and Bank2 */
mbed_official 87:085cde657901 323 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 87:085cde657901 324
mbed_official 369:2e96f1b71984 325 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
mbed_official 532:fe11edbda85c 326 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 327 #define FLASH_BANK_1 ((uint32_t)1) /*!< Bank 1 */
mbed_official 532:fe11edbda85c 328 #endif /* STM32F40xxx || STM32F41xxx || STM32F401xx || STM32F411xE || STM32F446xx */
mbed_official 87:085cde657901 329 /**
mbed_official 87:085cde657901 330 * @}
mbed_official 87:085cde657901 331 */
mbed_official 87:085cde657901 332
mbed_official 87:085cde657901 333 /** @defgroup FLASHEx_MassErase_bit FLASH Mass Erase bit
mbed_official 87:085cde657901 334 * @{
mbed_official 87:085cde657901 335 */
mbed_official 87:085cde657901 336 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 337 #define FLASH_MER_BIT (FLASH_CR_MER1 | FLASH_CR_MER2) /*!< 2 MER bits here to clear */
mbed_official 87:085cde657901 338 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 87:085cde657901 339
mbed_official 369:2e96f1b71984 340 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
mbed_official 532:fe11edbda85c 341 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 342 #define FLASH_MER_BIT (FLASH_CR_MER) /*!< only 1 MER Bit */
mbed_official 532:fe11edbda85c 343 #endif /* STM32F40xxx || STM32F41xxx || STM32F401xx || STM32F411xE || STM32F446xx */
mbed_official 87:085cde657901 344 /**
mbed_official 87:085cde657901 345 * @}
mbed_official 87:085cde657901 346 */
mbed_official 87:085cde657901 347
mbed_official 87:085cde657901 348 /** @defgroup FLASHEx_Sectors FLASH Sectors
mbed_official 87:085cde657901 349 * @{
mbed_official 87:085cde657901 350 */
mbed_official 369:2e96f1b71984 351 /*------------------------------------------ STM32F42xxx/STM32F43xxx--------------------------------------*/
mbed_official 87:085cde657901 352 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 353 #define FLASH_SECTOR_0 ((uint32_t)0) /*!< Sector Number 0 */
mbed_official 87:085cde657901 354 #define FLASH_SECTOR_1 ((uint32_t)1) /*!< Sector Number 1 */
mbed_official 87:085cde657901 355 #define FLASH_SECTOR_2 ((uint32_t)2) /*!< Sector Number 2 */
mbed_official 87:085cde657901 356 #define FLASH_SECTOR_3 ((uint32_t)3) /*!< Sector Number 3 */
mbed_official 87:085cde657901 357 #define FLASH_SECTOR_4 ((uint32_t)4) /*!< Sector Number 4 */
mbed_official 87:085cde657901 358 #define FLASH_SECTOR_5 ((uint32_t)5) /*!< Sector Number 5 */
mbed_official 87:085cde657901 359 #define FLASH_SECTOR_6 ((uint32_t)6) /*!< Sector Number 6 */
mbed_official 87:085cde657901 360 #define FLASH_SECTOR_7 ((uint32_t)7) /*!< Sector Number 7 */
mbed_official 87:085cde657901 361 #define FLASH_SECTOR_8 ((uint32_t)8) /*!< Sector Number 8 */
mbed_official 87:085cde657901 362 #define FLASH_SECTOR_9 ((uint32_t)9) /*!< Sector Number 9 */
mbed_official 87:085cde657901 363 #define FLASH_SECTOR_10 ((uint32_t)10) /*!< Sector Number 10 */
mbed_official 87:085cde657901 364 #define FLASH_SECTOR_11 ((uint32_t)11) /*!< Sector Number 11 */
mbed_official 87:085cde657901 365 #define FLASH_SECTOR_12 ((uint32_t)12) /*!< Sector Number 12 */
mbed_official 87:085cde657901 366 #define FLASH_SECTOR_13 ((uint32_t)13) /*!< Sector Number 13 */
mbed_official 87:085cde657901 367 #define FLASH_SECTOR_14 ((uint32_t)14) /*!< Sector Number 14 */
mbed_official 87:085cde657901 368 #define FLASH_SECTOR_15 ((uint32_t)15) /*!< Sector Number 15 */
mbed_official 87:085cde657901 369 #define FLASH_SECTOR_16 ((uint32_t)16) /*!< Sector Number 16 */
mbed_official 87:085cde657901 370 #define FLASH_SECTOR_17 ((uint32_t)17) /*!< Sector Number 17 */
mbed_official 87:085cde657901 371 #define FLASH_SECTOR_18 ((uint32_t)18) /*!< Sector Number 18 */
mbed_official 87:085cde657901 372 #define FLASH_SECTOR_19 ((uint32_t)19) /*!< Sector Number 19 */
mbed_official 87:085cde657901 373 #define FLASH_SECTOR_20 ((uint32_t)20) /*!< Sector Number 20 */
mbed_official 87:085cde657901 374 #define FLASH_SECTOR_21 ((uint32_t)21) /*!< Sector Number 21 */
mbed_official 87:085cde657901 375 #define FLASH_SECTOR_22 ((uint32_t)22) /*!< Sector Number 22 */
mbed_official 87:085cde657901 376 #define FLASH_SECTOR_23 ((uint32_t)23) /*!< Sector Number 23 */
mbed_official 369:2e96f1b71984 377 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 369:2e96f1b71984 378 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 379
mbed_official 369:2e96f1b71984 380 /*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/
mbed_official 87:085cde657901 381 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
mbed_official 87:085cde657901 382 #define FLASH_SECTOR_0 ((uint32_t)0) /*!< Sector Number 0 */
mbed_official 87:085cde657901 383 #define FLASH_SECTOR_1 ((uint32_t)1) /*!< Sector Number 1 */
mbed_official 87:085cde657901 384 #define FLASH_SECTOR_2 ((uint32_t)2) /*!< Sector Number 2 */
mbed_official 87:085cde657901 385 #define FLASH_SECTOR_3 ((uint32_t)3) /*!< Sector Number 3 */
mbed_official 87:085cde657901 386 #define FLASH_SECTOR_4 ((uint32_t)4) /*!< Sector Number 4 */
mbed_official 87:085cde657901 387 #define FLASH_SECTOR_5 ((uint32_t)5) /*!< Sector Number 5 */
mbed_official 87:085cde657901 388 #define FLASH_SECTOR_6 ((uint32_t)6) /*!< Sector Number 6 */
mbed_official 87:085cde657901 389 #define FLASH_SECTOR_7 ((uint32_t)7) /*!< Sector Number 7 */
mbed_official 87:085cde657901 390 #define FLASH_SECTOR_8 ((uint32_t)8) /*!< Sector Number 8 */
mbed_official 87:085cde657901 391 #define FLASH_SECTOR_9 ((uint32_t)9) /*!< Sector Number 9 */
mbed_official 87:085cde657901 392 #define FLASH_SECTOR_10 ((uint32_t)10) /*!< Sector Number 10 */
mbed_official 87:085cde657901 393 #define FLASH_SECTOR_11 ((uint32_t)11) /*!< Sector Number 11 */
mbed_official 369:2e96f1b71984 394 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
mbed_official 369:2e96f1b71984 395 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 396
mbed_official 369:2e96f1b71984 397 /*--------------------------------------------- STM32F401xC -------------------------------------------*/
mbed_official 87:085cde657901 398 #if defined(STM32F401xC)
mbed_official 87:085cde657901 399 #define FLASH_SECTOR_0 ((uint32_t)0) /*!< Sector Number 0 */
mbed_official 87:085cde657901 400 #define FLASH_SECTOR_1 ((uint32_t)1) /*!< Sector Number 1 */
mbed_official 87:085cde657901 401 #define FLASH_SECTOR_2 ((uint32_t)2) /*!< Sector Number 2 */
mbed_official 87:085cde657901 402 #define FLASH_SECTOR_3 ((uint32_t)3) /*!< Sector Number 3 */
mbed_official 87:085cde657901 403 #define FLASH_SECTOR_4 ((uint32_t)4) /*!< Sector Number 4 */
mbed_official 87:085cde657901 404 #define FLASH_SECTOR_5 ((uint32_t)5) /*!< Sector Number 5 */
mbed_official 369:2e96f1b71984 405 #endif /* STM32F401xC */
mbed_official 369:2e96f1b71984 406 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 407
mbed_official 532:fe11edbda85c 408 /*---------------------------------- STM32F401xE/STM32F411xE/STM32F446xx ------------------------------*/
mbed_official 532:fe11edbda85c 409 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 410 #define FLASH_SECTOR_0 ((uint32_t)0) /*!< Sector Number 0 */
mbed_official 87:085cde657901 411 #define FLASH_SECTOR_1 ((uint32_t)1) /*!< Sector Number 1 */
mbed_official 87:085cde657901 412 #define FLASH_SECTOR_2 ((uint32_t)2) /*!< Sector Number 2 */
mbed_official 87:085cde657901 413 #define FLASH_SECTOR_3 ((uint32_t)3) /*!< Sector Number 3 */
mbed_official 87:085cde657901 414 #define FLASH_SECTOR_4 ((uint32_t)4) /*!< Sector Number 4 */
mbed_official 87:085cde657901 415 #define FLASH_SECTOR_5 ((uint32_t)5) /*!< Sector Number 5 */
mbed_official 87:085cde657901 416 #define FLASH_SECTOR_6 ((uint32_t)6) /*!< Sector Number 6 */
mbed_official 87:085cde657901 417 #define FLASH_SECTOR_7 ((uint32_t)7) /*!< Sector Number 7 */
mbed_official 532:fe11edbda85c 418 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 369:2e96f1b71984 419 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 420
mbed_official 87:085cde657901 421 /**
mbed_official 87:085cde657901 422 * @}
mbed_official 87:085cde657901 423 */
mbed_official 87:085cde657901 424
mbed_official 87:085cde657901 425 /** @defgroup FLASHEx_Option_Bytes_Write_Protection FLASH Option Bytes Write Protection
mbed_official 87:085cde657901 426 * @{
mbed_official 87:085cde657901 427 */
mbed_official 369:2e96f1b71984 428 /*----------------------------------------- STM32F42xxx/STM32F43xxx-------------------------------------*/
mbed_official 87:085cde657901 429 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 430 #define OB_WRP_SECTOR_0 ((uint32_t)0x00000001) /*!< Write protection of Sector0 */
mbed_official 87:085cde657901 431 #define OB_WRP_SECTOR_1 ((uint32_t)0x00000002) /*!< Write protection of Sector1 */
mbed_official 87:085cde657901 432 #define OB_WRP_SECTOR_2 ((uint32_t)0x00000004) /*!< Write protection of Sector2 */
mbed_official 87:085cde657901 433 #define OB_WRP_SECTOR_3 ((uint32_t)0x00000008) /*!< Write protection of Sector3 */
mbed_official 87:085cde657901 434 #define OB_WRP_SECTOR_4 ((uint32_t)0x00000010) /*!< Write protection of Sector4 */
mbed_official 87:085cde657901 435 #define OB_WRP_SECTOR_5 ((uint32_t)0x00000020) /*!< Write protection of Sector5 */
mbed_official 87:085cde657901 436 #define OB_WRP_SECTOR_6 ((uint32_t)0x00000040) /*!< Write protection of Sector6 */
mbed_official 87:085cde657901 437 #define OB_WRP_SECTOR_7 ((uint32_t)0x00000080) /*!< Write protection of Sector7 */
mbed_official 87:085cde657901 438 #define OB_WRP_SECTOR_8 ((uint32_t)0x00000100) /*!< Write protection of Sector8 */
mbed_official 87:085cde657901 439 #define OB_WRP_SECTOR_9 ((uint32_t)0x00000200) /*!< Write protection of Sector9 */
mbed_official 87:085cde657901 440 #define OB_WRP_SECTOR_10 ((uint32_t)0x00000400) /*!< Write protection of Sector10 */
mbed_official 87:085cde657901 441 #define OB_WRP_SECTOR_11 ((uint32_t)0x00000800) /*!< Write protection of Sector11 */
mbed_official 87:085cde657901 442 #define OB_WRP_SECTOR_12 ((uint32_t)0x00000001 << 12) /*!< Write protection of Sector12 */
mbed_official 87:085cde657901 443 #define OB_WRP_SECTOR_13 ((uint32_t)0x00000002 << 12) /*!< Write protection of Sector13 */
mbed_official 87:085cde657901 444 #define OB_WRP_SECTOR_14 ((uint32_t)0x00000004 << 12) /*!< Write protection of Sector14 */
mbed_official 87:085cde657901 445 #define OB_WRP_SECTOR_15 ((uint32_t)0x00000008 << 12) /*!< Write protection of Sector15 */
mbed_official 87:085cde657901 446 #define OB_WRP_SECTOR_16 ((uint32_t)0x00000010 << 12) /*!< Write protection of Sector16 */
mbed_official 87:085cde657901 447 #define OB_WRP_SECTOR_17 ((uint32_t)0x00000020 << 12) /*!< Write protection of Sector17 */
mbed_official 87:085cde657901 448 #define OB_WRP_SECTOR_18 ((uint32_t)0x00000040 << 12) /*!< Write protection of Sector18 */
mbed_official 87:085cde657901 449 #define OB_WRP_SECTOR_19 ((uint32_t)0x00000080 << 12) /*!< Write protection of Sector19 */
mbed_official 87:085cde657901 450 #define OB_WRP_SECTOR_20 ((uint32_t)0x00000100 << 12) /*!< Write protection of Sector20 */
mbed_official 87:085cde657901 451 #define OB_WRP_SECTOR_21 ((uint32_t)0x00000200 << 12) /*!< Write protection of Sector21 */
mbed_official 87:085cde657901 452 #define OB_WRP_SECTOR_22 ((uint32_t)0x00000400 << 12) /*!< Write protection of Sector22 */
mbed_official 87:085cde657901 453 #define OB_WRP_SECTOR_23 ((uint32_t)0x00000800 << 12) /*!< Write protection of Sector23 */
mbed_official 87:085cde657901 454 #define OB_WRP_SECTOR_All ((uint32_t)0x00000FFF << 12) /*!< Write protection of all Sectors */
mbed_official 87:085cde657901 455 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 369:2e96f1b71984 456 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 457
mbed_official 369:2e96f1b71984 458 /*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/
mbed_official 87:085cde657901 459 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
mbed_official 87:085cde657901 460 #define OB_WRP_SECTOR_0 ((uint32_t)0x00000001) /*!< Write protection of Sector0 */
mbed_official 87:085cde657901 461 #define OB_WRP_SECTOR_1 ((uint32_t)0x00000002) /*!< Write protection of Sector1 */
mbed_official 87:085cde657901 462 #define OB_WRP_SECTOR_2 ((uint32_t)0x00000004) /*!< Write protection of Sector2 */
mbed_official 87:085cde657901 463 #define OB_WRP_SECTOR_3 ((uint32_t)0x00000008) /*!< Write protection of Sector3 */
mbed_official 87:085cde657901 464 #define OB_WRP_SECTOR_4 ((uint32_t)0x00000010) /*!< Write protection of Sector4 */
mbed_official 87:085cde657901 465 #define OB_WRP_SECTOR_5 ((uint32_t)0x00000020) /*!< Write protection of Sector5 */
mbed_official 87:085cde657901 466 #define OB_WRP_SECTOR_6 ((uint32_t)0x00000040) /*!< Write protection of Sector6 */
mbed_official 87:085cde657901 467 #define OB_WRP_SECTOR_7 ((uint32_t)0x00000080) /*!< Write protection of Sector7 */
mbed_official 87:085cde657901 468 #define OB_WRP_SECTOR_8 ((uint32_t)0x00000100) /*!< Write protection of Sector8 */
mbed_official 87:085cde657901 469 #define OB_WRP_SECTOR_9 ((uint32_t)0x00000200) /*!< Write protection of Sector9 */
mbed_official 87:085cde657901 470 #define OB_WRP_SECTOR_10 ((uint32_t)0x00000400) /*!< Write protection of Sector10 */
mbed_official 87:085cde657901 471 #define OB_WRP_SECTOR_11 ((uint32_t)0x00000800) /*!< Write protection of Sector11 */
mbed_official 87:085cde657901 472 #define OB_WRP_SECTOR_All ((uint32_t)0x00000FFF) /*!< Write protection of all Sectors */
mbed_official 87:085cde657901 473 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
mbed_official 369:2e96f1b71984 474 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 475
mbed_official 369:2e96f1b71984 476 /*--------------------------------------------- STM32F401xC -------------------------------------------*/
mbed_official 87:085cde657901 477 #if defined(STM32F401xC)
mbed_official 87:085cde657901 478 #define OB_WRP_SECTOR_0 ((uint32_t)0x00000001) /*!< Write protection of Sector0 */
mbed_official 87:085cde657901 479 #define OB_WRP_SECTOR_1 ((uint32_t)0x00000002) /*!< Write protection of Sector1 */
mbed_official 87:085cde657901 480 #define OB_WRP_SECTOR_2 ((uint32_t)0x00000004) /*!< Write protection of Sector2 */
mbed_official 87:085cde657901 481 #define OB_WRP_SECTOR_3 ((uint32_t)0x00000008) /*!< Write protection of Sector3 */
mbed_official 87:085cde657901 482 #define OB_WRP_SECTOR_4 ((uint32_t)0x00000010) /*!< Write protection of Sector4 */
mbed_official 87:085cde657901 483 #define OB_WRP_SECTOR_5 ((uint32_t)0x00000020) /*!< Write protection of Sector5 */
mbed_official 87:085cde657901 484 #define OB_WRP_SECTOR_All ((uint32_t)0x00000FFF) /*!< Write protection of all Sectors */
mbed_official 87:085cde657901 485 #endif /* STM32F401xC */
mbed_official 369:2e96f1b71984 486 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 487
mbed_official 532:fe11edbda85c 488 /*---------------------------------- STM32F401xE/STM32F411xE/STM32F446xx ------------------------------*/
mbed_official 532:fe11edbda85c 489 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 490 #define OB_WRP_SECTOR_0 ((uint32_t)0x00000001) /*!< Write protection of Sector0 */
mbed_official 87:085cde657901 491 #define OB_WRP_SECTOR_1 ((uint32_t)0x00000002) /*!< Write protection of Sector1 */
mbed_official 87:085cde657901 492 #define OB_WRP_SECTOR_2 ((uint32_t)0x00000004) /*!< Write protection of Sector2 */
mbed_official 87:085cde657901 493 #define OB_WRP_SECTOR_3 ((uint32_t)0x00000008) /*!< Write protection of Sector3 */
mbed_official 87:085cde657901 494 #define OB_WRP_SECTOR_4 ((uint32_t)0x00000010) /*!< Write protection of Sector4 */
mbed_official 87:085cde657901 495 #define OB_WRP_SECTOR_5 ((uint32_t)0x00000020) /*!< Write protection of Sector5 */
mbed_official 87:085cde657901 496 #define OB_WRP_SECTOR_6 ((uint32_t)0x00000040) /*!< Write protection of Sector6 */
mbed_official 87:085cde657901 497 #define OB_WRP_SECTOR_7 ((uint32_t)0x00000080) /*!< Write protection of Sector7 */
mbed_official 87:085cde657901 498 #define OB_WRP_SECTOR_All ((uint32_t)0x00000FFF) /*!< Write protection of all Sectors */
mbed_official 532:fe11edbda85c 499 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 369:2e96f1b71984 500 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 501 /**
mbed_official 87:085cde657901 502 * @}
mbed_official 87:085cde657901 503 */
mbed_official 87:085cde657901 504
mbed_official 87:085cde657901 505 /** @defgroup FLASHEx_Option_Bytes_PC_ReadWrite_Protection FLASH Option Bytes PC ReadWrite Protection
mbed_official 87:085cde657901 506 * @{
mbed_official 87:085cde657901 507 */
mbed_official 369:2e96f1b71984 508 /*----------------------------------------- STM32F42xxx/STM32F43xxx-------------------------------------*/
mbed_official 87:085cde657901 509 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 510 #define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001) /*!< PC Read/Write protection of Sector0 */
mbed_official 87:085cde657901 511 #define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002) /*!< PC Read/Write protection of Sector1 */
mbed_official 87:085cde657901 512 #define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004) /*!< PC Read/Write protection of Sector2 */
mbed_official 87:085cde657901 513 #define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008) /*!< PC Read/Write protection of Sector3 */
mbed_official 87:085cde657901 514 #define OB_PCROP_SECTOR_4 ((uint32_t)0x00000010) /*!< PC Read/Write protection of Sector4 */
mbed_official 87:085cde657901 515 #define OB_PCROP_SECTOR_5 ((uint32_t)0x00000020) /*!< PC Read/Write protection of Sector5 */
mbed_official 87:085cde657901 516 #define OB_PCROP_SECTOR_6 ((uint32_t)0x00000040) /*!< PC Read/Write protection of Sector6 */
mbed_official 87:085cde657901 517 #define OB_PCROP_SECTOR_7 ((uint32_t)0x00000080) /*!< PC Read/Write protection of Sector7 */
mbed_official 87:085cde657901 518 #define OB_PCROP_SECTOR_8 ((uint32_t)0x00000100) /*!< PC Read/Write protection of Sector8 */
mbed_official 87:085cde657901 519 #define OB_PCROP_SECTOR_9 ((uint32_t)0x00000200) /*!< PC Read/Write protection of Sector9 */
mbed_official 87:085cde657901 520 #define OB_PCROP_SECTOR_10 ((uint32_t)0x00000400) /*!< PC Read/Write protection of Sector10 */
mbed_official 87:085cde657901 521 #define OB_PCROP_SECTOR_11 ((uint32_t)0x00000800) /*!< PC Read/Write protection of Sector11 */
mbed_official 87:085cde657901 522 #define OB_PCROP_SECTOR_12 ((uint32_t)0x00000001) /*!< PC Read/Write protection of Sector12 */
mbed_official 87:085cde657901 523 #define OB_PCROP_SECTOR_13 ((uint32_t)0x00000002) /*!< PC Read/Write protection of Sector13 */
mbed_official 87:085cde657901 524 #define OB_PCROP_SECTOR_14 ((uint32_t)0x00000004) /*!< PC Read/Write protection of Sector14 */
mbed_official 87:085cde657901 525 #define OB_PCROP_SECTOR_15 ((uint32_t)0x00000008) /*!< PC Read/Write protection of Sector15 */
mbed_official 87:085cde657901 526 #define OB_PCROP_SECTOR_16 ((uint32_t)0x00000010) /*!< PC Read/Write protection of Sector16 */
mbed_official 87:085cde657901 527 #define OB_PCROP_SECTOR_17 ((uint32_t)0x00000020) /*!< PC Read/Write protection of Sector17 */
mbed_official 87:085cde657901 528 #define OB_PCROP_SECTOR_18 ((uint32_t)0x00000040) /*!< PC Read/Write protection of Sector18 */
mbed_official 87:085cde657901 529 #define OB_PCROP_SECTOR_19 ((uint32_t)0x00000080) /*!< PC Read/Write protection of Sector19 */
mbed_official 87:085cde657901 530 #define OB_PCROP_SECTOR_20 ((uint32_t)0x00000100) /*!< PC Read/Write protection of Sector20 */
mbed_official 87:085cde657901 531 #define OB_PCROP_SECTOR_21 ((uint32_t)0x00000200) /*!< PC Read/Write protection of Sector21 */
mbed_official 87:085cde657901 532 #define OB_PCROP_SECTOR_22 ((uint32_t)0x00000400) /*!< PC Read/Write protection of Sector22 */
mbed_official 87:085cde657901 533 #define OB_PCROP_SECTOR_23 ((uint32_t)0x00000800) /*!< PC Read/Write protection of Sector23 */
mbed_official 87:085cde657901 534 #define OB_PCROP_SECTOR_All ((uint32_t)0x00000FFF) /*!< PC Read/Write protection of all Sectors */
mbed_official 87:085cde657901 535 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 369:2e96f1b71984 536 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 537
mbed_official 369:2e96f1b71984 538 /*--------------------------------------------- STM32F401xC -------------------------------------------*/
mbed_official 87:085cde657901 539 #if defined(STM32F401xC)
mbed_official 87:085cde657901 540 #define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001) /*!< PC Read/Write protection of Sector0 */
mbed_official 87:085cde657901 541 #define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002) /*!< PC Read/Write protection of Sector1 */
mbed_official 87:085cde657901 542 #define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004) /*!< PC Read/Write protection of Sector2 */
mbed_official 87:085cde657901 543 #define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008) /*!< PC Read/Write protection of Sector3 */
mbed_official 87:085cde657901 544 #define OB_PCROP_SECTOR_4 ((uint32_t)0x00000010) /*!< PC Read/Write protection of Sector4 */
mbed_official 87:085cde657901 545 #define OB_PCROP_SECTOR_5 ((uint32_t)0x00000020) /*!< PC Read/Write protection of Sector5 */
mbed_official 87:085cde657901 546 #define OB_PCROP_SECTOR_All ((uint32_t)0x00000FFF) /*!< PC Read/Write protection of all Sectors */
mbed_official 87:085cde657901 547 #endif /* STM32F401xC */
mbed_official 369:2e96f1b71984 548 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 549
mbed_official 532:fe11edbda85c 550 /*------------------------------ STM32F401xE/STM32F411xE/STM32F446xx ----------------------------------*/
mbed_official 532:fe11edbda85c 551 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 552 #define OB_PCROP_SECTOR_0 ((uint32_t)0x00000001) /*!< PC Read/Write protection of Sector0 */
mbed_official 87:085cde657901 553 #define OB_PCROP_SECTOR_1 ((uint32_t)0x00000002) /*!< PC Read/Write protection of Sector1 */
mbed_official 87:085cde657901 554 #define OB_PCROP_SECTOR_2 ((uint32_t)0x00000004) /*!< PC Read/Write protection of Sector2 */
mbed_official 87:085cde657901 555 #define OB_PCROP_SECTOR_3 ((uint32_t)0x00000008) /*!< PC Read/Write protection of Sector3 */
mbed_official 87:085cde657901 556 #define OB_PCROP_SECTOR_4 ((uint32_t)0x00000010) /*!< PC Read/Write protection of Sector4 */
mbed_official 87:085cde657901 557 #define OB_PCROP_SECTOR_5 ((uint32_t)0x00000020) /*!< PC Read/Write protection of Sector5 */
mbed_official 87:085cde657901 558 #define OB_PCROP_SECTOR_6 ((uint32_t)0x00000040) /*!< PC Read/Write protection of Sector6 */
mbed_official 87:085cde657901 559 #define OB_PCROP_SECTOR_7 ((uint32_t)0x00000080) /*!< PC Read/Write protection of Sector7 */
mbed_official 87:085cde657901 560 #define OB_PCROP_SECTOR_All ((uint32_t)0x00000FFF) /*!< PC Read/Write protection of all Sectors */
mbed_official 532:fe11edbda85c 561 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 369:2e96f1b71984 562 /*-----------------------------------------------------------------------------------------------------*/
mbed_official 87:085cde657901 563
mbed_official 87:085cde657901 564 /**
mbed_official 87:085cde657901 565 * @}
mbed_official 87:085cde657901 566 */
mbed_official 87:085cde657901 567
mbed_official 87:085cde657901 568 /** @defgroup FLASHEx_Dual_Boot FLASH Dual Boot
mbed_official 87:085cde657901 569 * @{
mbed_official 87:085cde657901 570 */
mbed_official 87:085cde657901 571 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 572 #define OB_DUAL_BOOT_ENABLE ((uint8_t)0x10) /*!< Dual Bank Boot Enable */
mbed_official 87:085cde657901 573 #define OB_DUAL_BOOT_DISABLE ((uint8_t)0x00) /*!< Dual Bank Boot Disable, always boot on User Flash */
mbed_official 87:085cde657901 574 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 87:085cde657901 575 /**
mbed_official 87:085cde657901 576 * @}
mbed_official 87:085cde657901 577 */
mbed_official 87:085cde657901 578
mbed_official 87:085cde657901 579 /** @defgroup FLASHEx_Selection_Protection_Mode FLASH Selection Protection Mode
mbed_official 87:085cde657901 580 * @{
mbed_official 87:085cde657901 581 */
mbed_official 369:2e96f1b71984 582 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
mbed_official 532:fe11edbda85c 583 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 584 #define OB_PCROP_DESELECTED ((uint8_t)0x00) /*!< Disabled PcROP, nWPRi bits used for Write Protection on sector i */
mbed_official 87:085cde657901 585 #define OB_PCROP_SELECTED ((uint8_t)0x80) /*!< Enable PcROP, nWPRi bits used for PCRoP Protection on sector i */
mbed_official 532:fe11edbda85c 586 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 87:085cde657901 587 /**
mbed_official 87:085cde657901 588 * @}
mbed_official 87:085cde657901 589 */
mbed_official 87:085cde657901 590
mbed_official 87:085cde657901 591 /**
mbed_official 87:085cde657901 592 * @}
mbed_official 87:085cde657901 593 */
mbed_official 87:085cde657901 594
mbed_official 87:085cde657901 595 /* Exported macro ------------------------------------------------------------*/
mbed_official 87:085cde657901 596
mbed_official 87:085cde657901 597 /* Exported functions --------------------------------------------------------*/
mbed_official 532:fe11edbda85c 598 /** @addtogroup FLASHEx_Exported_Functions
mbed_official 532:fe11edbda85c 599 * @{
mbed_official 532:fe11edbda85c 600 */
mbed_official 87:085cde657901 601
mbed_official 532:fe11edbda85c 602 /** @addtogroup FLASHEx_Exported_Functions_Group1
mbed_official 532:fe11edbda85c 603 * @{
mbed_official 532:fe11edbda85c 604 */
mbed_official 87:085cde657901 605 /* Extension Program operation functions *************************************/
mbed_official 87:085cde657901 606 HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *SectorError);
mbed_official 87:085cde657901 607 HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit);
mbed_official 87:085cde657901 608 HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit);
mbed_official 87:085cde657901 609 void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit);
mbed_official 369:2e96f1b71984 610
mbed_official 369:2e96f1b71984 611 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
mbed_official 532:fe11edbda85c 612 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 87:085cde657901 613 HAL_StatusTypeDef HAL_FLASHEx_AdvOBProgram (FLASH_AdvOBProgramInitTypeDef *pAdvOBInit);
mbed_official 87:085cde657901 614 void HAL_FLASHEx_AdvOBGetConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit);
mbed_official 87:085cde657901 615 HAL_StatusTypeDef HAL_FLASHEx_OB_SelectPCROP(void);
mbed_official 87:085cde657901 616 HAL_StatusTypeDef HAL_FLASHEx_OB_DeSelectPCROP(void);
mbed_official 532:fe11edbda85c 617 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 87:085cde657901 618
mbed_official 87:085cde657901 619 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 87:085cde657901 620 uint16_t HAL_FLASHEx_OB_GetBank2WRP(void);
mbed_official 87:085cde657901 621 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 622 /**
mbed_official 532:fe11edbda85c 623 * @}
mbed_official 532:fe11edbda85c 624 */
mbed_official 87:085cde657901 625
mbed_official 532:fe11edbda85c 626 /**
mbed_official 532:fe11edbda85c 627 * @}
mbed_official 532:fe11edbda85c 628 */
mbed_official 532:fe11edbda85c 629 /* Private types -------------------------------------------------------------*/
mbed_official 532:fe11edbda85c 630 /* Private variables ---------------------------------------------------------*/
mbed_official 532:fe11edbda85c 631 /* Private constants ---------------------------------------------------------*/
mbed_official 532:fe11edbda85c 632 /** @defgroup FLASHEx_Private_Constants FLASH Private Constants
mbed_official 532:fe11edbda85c 633 * @{
mbed_official 532:fe11edbda85c 634 */
mbed_official 532:fe11edbda85c 635 /*--------------------------------------- STM32F42xxx/STM32F43xxx--------------------------------------*/
mbed_official 532:fe11edbda85c 636 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 637 #define FLASH_SECTOR_TOTAL 24
mbed_official 532:fe11edbda85c 638 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 639
mbed_official 532:fe11edbda85c 640 /*--------------------------------------- STM32F40xxx/STM32F41xxx -------------------------------------*/
mbed_official 532:fe11edbda85c 641 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
mbed_official 532:fe11edbda85c 642 #define FLASH_SECTOR_TOTAL 12
mbed_official 532:fe11edbda85c 643 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
mbed_official 532:fe11edbda85c 644
mbed_official 532:fe11edbda85c 645 /*--------------------------------------------- STM32F401xC -------------------------------------------*/
mbed_official 532:fe11edbda85c 646 #if defined(STM32F401xC)
mbed_official 532:fe11edbda85c 647 #define FLASH_SECTOR_TOTAL 6
mbed_official 532:fe11edbda85c 648 #endif /* STM32F401xC */
mbed_official 532:fe11edbda85c 649
mbed_official 532:fe11edbda85c 650 /*--------------------------------- STM32F401xE/STM32F411xE/STM32F446xx -------------------------------*/
mbed_official 532:fe11edbda85c 651 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 652 #define FLASH_SECTOR_TOTAL 8
mbed_official 532:fe11edbda85c 653 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 654
mbed_official 532:fe11edbda85c 655 /**
mbed_official 532:fe11edbda85c 656 * @brief OPTCR1 register byte 2 (Bits[23:16]) base address
mbed_official 532:fe11edbda85c 657 */
mbed_official 532:fe11edbda85c 658 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 659 #define OPTCR1_BYTE2_ADDRESS ((uint32_t)0x40023C1A)
mbed_official 532:fe11edbda85c 660 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 661
mbed_official 532:fe11edbda85c 662 /**
mbed_official 532:fe11edbda85c 663 * @}
mbed_official 532:fe11edbda85c 664 */
mbed_official 532:fe11edbda85c 665
mbed_official 532:fe11edbda85c 666 /* Private macros ------------------------------------------------------------*/
mbed_official 532:fe11edbda85c 667 /** @defgroup FLASHEx_Private_Macros FLASH Private Macros
mbed_official 532:fe11edbda85c 668 * @{
mbed_official 532:fe11edbda85c 669 */
mbed_official 532:fe11edbda85c 670
mbed_official 532:fe11edbda85c 671 /** @defgroup FLASHEx_IS_FLASH_Definitions FLASH Private macros to check input parameters
mbed_official 532:fe11edbda85c 672 * @{
mbed_official 532:fe11edbda85c 673 */
mbed_official 532:fe11edbda85c 674
mbed_official 532:fe11edbda85c 675 #define IS_FLASH_TYPEERASE(VALUE)(((VALUE) == FLASH_TYPEERASE_SECTORS) || \
mbed_official 532:fe11edbda85c 676 ((VALUE) == FLASH_TYPEERASE_MASSERASE))
mbed_official 532:fe11edbda85c 677
mbed_official 532:fe11edbda85c 678 #define IS_VOLTAGERANGE(RANGE)(((RANGE) == FLASH_VOLTAGE_RANGE_1) || \
mbed_official 532:fe11edbda85c 679 ((RANGE) == FLASH_VOLTAGE_RANGE_2) || \
mbed_official 532:fe11edbda85c 680 ((RANGE) == FLASH_VOLTAGE_RANGE_3) || \
mbed_official 532:fe11edbda85c 681 ((RANGE) == FLASH_VOLTAGE_RANGE_4))
mbed_official 532:fe11edbda85c 682
mbed_official 532:fe11edbda85c 683 #define IS_WRPSTATE(VALUE)(((VALUE) == OB_WRPSTATE_DISABLE) || \
mbed_official 532:fe11edbda85c 684 ((VALUE) == OB_WRPSTATE_ENABLE))
mbed_official 532:fe11edbda85c 685
mbed_official 532:fe11edbda85c 686 #define IS_OPTIONBYTE(VALUE)(((VALUE) <= (OPTIONBYTE_WRP|OPTIONBYTE_RDP|OPTIONBYTE_USER|OPTIONBYTE_BOR)))
mbed_official 532:fe11edbda85c 687
mbed_official 532:fe11edbda85c 688 #define IS_OB_RDP_LEVEL(LEVEL) (((LEVEL) == OB_RDP_LEVEL_0) ||\
mbed_official 532:fe11edbda85c 689 ((LEVEL) == OB_RDP_LEVEL_1))/*||\
mbed_official 532:fe11edbda85c 690 ((LEVEL) == OB_RDP_LEVEL_2))*/
mbed_official 532:fe11edbda85c 691
mbed_official 532:fe11edbda85c 692 #define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))
mbed_official 532:fe11edbda85c 693
mbed_official 532:fe11edbda85c 694 #define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NO_RST) || ((SOURCE) == OB_STOP_RST))
mbed_official 532:fe11edbda85c 695
mbed_official 532:fe11edbda85c 696 #define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NO_RST) || ((SOURCE) == OB_STDBY_RST))
mbed_official 532:fe11edbda85c 697
mbed_official 532:fe11edbda85c 698 #define IS_OB_BOR_LEVEL(LEVEL) (((LEVEL) == OB_BOR_LEVEL1) || ((LEVEL) == OB_BOR_LEVEL2) ||\
mbed_official 532:fe11edbda85c 699 ((LEVEL) == OB_BOR_LEVEL3) || ((LEVEL) == OB_BOR_OFF))
mbed_official 532:fe11edbda85c 700
mbed_official 532:fe11edbda85c 701 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
mbed_official 532:fe11edbda85c 702 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 703 #define IS_PCROPSTATE(VALUE)(((VALUE) == OB_PCROP_STATE_DISABLE) || \
mbed_official 532:fe11edbda85c 704 ((VALUE) == OB_PCROP_STATE_ENABLE))
mbed_official 532:fe11edbda85c 705 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 706
mbed_official 532:fe11edbda85c 707 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
mbed_official 532:fe11edbda85c 708 #define IS_OBEX(VALUE)(((VALUE) == OPTIONBYTE_PCROP) || \
mbed_official 532:fe11edbda85c 709 ((VALUE) == OPTIONBYTE_BOOTCONFIG))
mbed_official 532:fe11edbda85c 710 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
mbed_official 532:fe11edbda85c 711
mbed_official 532:fe11edbda85c 712 #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 713 #define IS_OBEX(VALUE)(((VALUE) == OPTIONBYTE_PCROP))
mbed_official 532:fe11edbda85c 714 #endif /* STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 715
mbed_official 532:fe11edbda85c 716 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 717 #define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \
mbed_official 532:fe11edbda85c 718 ((LATENCY) == FLASH_LATENCY_1) || \
mbed_official 532:fe11edbda85c 719 ((LATENCY) == FLASH_LATENCY_2) || \
mbed_official 532:fe11edbda85c 720 ((LATENCY) == FLASH_LATENCY_3) || \
mbed_official 532:fe11edbda85c 721 ((LATENCY) == FLASH_LATENCY_4) || \
mbed_official 532:fe11edbda85c 722 ((LATENCY) == FLASH_LATENCY_5) || \
mbed_official 532:fe11edbda85c 723 ((LATENCY) == FLASH_LATENCY_6) || \
mbed_official 532:fe11edbda85c 724 ((LATENCY) == FLASH_LATENCY_7) || \
mbed_official 532:fe11edbda85c 725 ((LATENCY) == FLASH_LATENCY_8) || \
mbed_official 532:fe11edbda85c 726 ((LATENCY) == FLASH_LATENCY_9) || \
mbed_official 532:fe11edbda85c 727 ((LATENCY) == FLASH_LATENCY_10) || \
mbed_official 532:fe11edbda85c 728 ((LATENCY) == FLASH_LATENCY_11) || \
mbed_official 532:fe11edbda85c 729 ((LATENCY) == FLASH_LATENCY_12) || \
mbed_official 532:fe11edbda85c 730 ((LATENCY) == FLASH_LATENCY_13) || \
mbed_official 532:fe11edbda85c 731 ((LATENCY) == FLASH_LATENCY_14) || \
mbed_official 532:fe11edbda85c 732 ((LATENCY) == FLASH_LATENCY_15))
mbed_official 532:fe11edbda85c 733 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 734
mbed_official 532:fe11edbda85c 735 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || \
mbed_official 532:fe11edbda85c 736 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 737 #define IS_FLASH_LATENCY(LATENCY) (((LATENCY) == FLASH_LATENCY_0) || \
mbed_official 532:fe11edbda85c 738 ((LATENCY) == FLASH_LATENCY_1) || \
mbed_official 532:fe11edbda85c 739 ((LATENCY) == FLASH_LATENCY_2) || \
mbed_official 532:fe11edbda85c 740 ((LATENCY) == FLASH_LATENCY_3) || \
mbed_official 532:fe11edbda85c 741 ((LATENCY) == FLASH_LATENCY_4) || \
mbed_official 532:fe11edbda85c 742 ((LATENCY) == FLASH_LATENCY_5) || \
mbed_official 532:fe11edbda85c 743 ((LATENCY) == FLASH_LATENCY_6) || \
mbed_official 532:fe11edbda85c 744 ((LATENCY) == FLASH_LATENCY_7))
mbed_official 532:fe11edbda85c 745 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 746
mbed_official 532:fe11edbda85c 747 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 748 #define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1) || \
mbed_official 532:fe11edbda85c 749 ((BANK) == FLASH_BANK_2) || \
mbed_official 532:fe11edbda85c 750 ((BANK) == FLASH_BANK_BOTH))
mbed_official 532:fe11edbda85c 751 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 752
mbed_official 532:fe11edbda85c 753 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) ||\
mbed_official 532:fe11edbda85c 754 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 755 #define IS_FLASH_BANK(BANK) (((BANK) == FLASH_BANK_1))
mbed_official 532:fe11edbda85c 756 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 757
mbed_official 532:fe11edbda85c 758
mbed_official 532:fe11edbda85c 759 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 760 #define IS_FLASH_SECTOR(SECTOR) ( ((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
mbed_official 532:fe11edbda85c 761 ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
mbed_official 532:fe11edbda85c 762 ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
mbed_official 532:fe11edbda85c 763 ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\
mbed_official 532:fe11edbda85c 764 ((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\
mbed_official 532:fe11edbda85c 765 ((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11) ||\
mbed_official 532:fe11edbda85c 766 ((SECTOR) == FLASH_SECTOR_12) || ((SECTOR) == FLASH_SECTOR_13) ||\
mbed_official 532:fe11edbda85c 767 ((SECTOR) == FLASH_SECTOR_14) || ((SECTOR) == FLASH_SECTOR_15) ||\
mbed_official 532:fe11edbda85c 768 ((SECTOR) == FLASH_SECTOR_16) || ((SECTOR) == FLASH_SECTOR_17) ||\
mbed_official 532:fe11edbda85c 769 ((SECTOR) == FLASH_SECTOR_18) || ((SECTOR) == FLASH_SECTOR_19) ||\
mbed_official 532:fe11edbda85c 770 ((SECTOR) == FLASH_SECTOR_20) || ((SECTOR) == FLASH_SECTOR_21) ||\
mbed_official 532:fe11edbda85c 771 ((SECTOR) == FLASH_SECTOR_22) || ((SECTOR) == FLASH_SECTOR_23))
mbed_official 532:fe11edbda85c 772 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 773
mbed_official 532:fe11edbda85c 774 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
mbed_official 532:fe11edbda85c 775 #define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
mbed_official 532:fe11edbda85c 776 ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
mbed_official 532:fe11edbda85c 777 ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
mbed_official 532:fe11edbda85c 778 ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7) ||\
mbed_official 532:fe11edbda85c 779 ((SECTOR) == FLASH_SECTOR_8) || ((SECTOR) == FLASH_SECTOR_9) ||\
mbed_official 532:fe11edbda85c 780 ((SECTOR) == FLASH_SECTOR_10) || ((SECTOR) == FLASH_SECTOR_11))
mbed_official 532:fe11edbda85c 781 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
mbed_official 532:fe11edbda85c 782
mbed_official 532:fe11edbda85c 783 #if defined(STM32F401xC)
mbed_official 532:fe11edbda85c 784 #define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
mbed_official 532:fe11edbda85c 785 ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
mbed_official 532:fe11edbda85c 786 ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5))
mbed_official 532:fe11edbda85c 787 #endif /* STM32F401xC */
mbed_official 532:fe11edbda85c 788
mbed_official 532:fe11edbda85c 789 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 790 #define IS_FLASH_SECTOR(SECTOR) (((SECTOR) == FLASH_SECTOR_0) || ((SECTOR) == FLASH_SECTOR_1) ||\
mbed_official 532:fe11edbda85c 791 ((SECTOR) == FLASH_SECTOR_2) || ((SECTOR) == FLASH_SECTOR_3) ||\
mbed_official 532:fe11edbda85c 792 ((SECTOR) == FLASH_SECTOR_4) || ((SECTOR) == FLASH_SECTOR_5) ||\
mbed_official 532:fe11edbda85c 793 ((SECTOR) == FLASH_SECTOR_6) || ((SECTOR) == FLASH_SECTOR_7))
mbed_official 532:fe11edbda85c 794 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 795
mbed_official 532:fe11edbda85c 796 #define IS_FLASH_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && ((ADDRESS) <= FLASH_END))
mbed_official 532:fe11edbda85c 797 #define IS_FLASH_NBSECTORS(NBSECTORS) (((NBSECTORS) != 0) && ((NBSECTORS) <= FLASH_SECTOR_TOTAL))
mbed_official 532:fe11edbda85c 798
mbed_official 532:fe11edbda85c 799 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 800 #define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & (uint32_t)0xFF000000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 801 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 802
mbed_official 532:fe11edbda85c 803 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
mbed_official 532:fe11edbda85c 804 #define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & (uint32_t)0xFFFFF000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 805 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
mbed_official 532:fe11edbda85c 806
mbed_official 532:fe11edbda85c 807 #if defined(STM32F401xC)
mbed_official 532:fe11edbda85c 808 #define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & (uint32_t)0xFFFFF000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 809 #endif /* STM32F401xC */
mbed_official 532:fe11edbda85c 810
mbed_official 532:fe11edbda85c 811 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 812 #define IS_OB_WRP_SECTOR(SECTOR)((((SECTOR) & (uint32_t)0xFFFFF000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 813 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 814
mbed_official 532:fe11edbda85c 815 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 816 #define IS_OB_PCROP(SECTOR)((((SECTOR) & (uint32_t)0xFFFFF000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 817 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 818
mbed_official 532:fe11edbda85c 819 #if defined(STM32F401xC)
mbed_official 532:fe11edbda85c 820 #define IS_OB_PCROP(SECTOR)((((SECTOR) & (uint32_t)0xFFFFF000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 821 #endif /* STM32F401xC */
mbed_official 532:fe11edbda85c 822
mbed_official 532:fe11edbda85c 823 #if defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 824 #define IS_OB_PCROP(SECTOR)((((SECTOR) & (uint32_t)0xFFFFF000) == 0x00000000) && ((SECTOR) != 0x00000000))
mbed_official 532:fe11edbda85c 825 #endif /* STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 826
mbed_official 532:fe11edbda85c 827 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
mbed_official 532:fe11edbda85c 828 #define IS_OB_BOOT(BOOT) (((BOOT) == OB_DUAL_BOOT_ENABLE) || ((BOOT) == OB_DUAL_BOOT_DISABLE))
mbed_official 532:fe11edbda85c 829 #endif /* STM32F427xx || STM32F437xx || STM32F429xx|| STM32F439xx */
mbed_official 532:fe11edbda85c 830
mbed_official 532:fe11edbda85c 831 #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx) ||\
mbed_official 532:fe11edbda85c 832 defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE) || defined(STM32F446xx)
mbed_official 532:fe11edbda85c 833 #define IS_OB_PCROP_SELECT(PCROP) (((PCROP) == OB_PCROP_SELECTED) || ((PCROP) == OB_PCROP_DESELECTED))
mbed_official 532:fe11edbda85c 834 #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F401xC || STM32F401xE || STM32F411xE || STM32F446xx */
mbed_official 532:fe11edbda85c 835 /**
mbed_official 532:fe11edbda85c 836 * @}
mbed_official 532:fe11edbda85c 837 */
mbed_official 532:fe11edbda85c 838
mbed_official 532:fe11edbda85c 839 /**
mbed_official 532:fe11edbda85c 840 * @}
mbed_official 532:fe11edbda85c 841 */
mbed_official 532:fe11edbda85c 842
mbed_official 532:fe11edbda85c 843 /* Private functions ---------------------------------------------------------*/
mbed_official 532:fe11edbda85c 844 /** @defgroup FLASHEx_Private_Functions FLASH Private Functions
mbed_official 532:fe11edbda85c 845 * @{
mbed_official 532:fe11edbda85c 846 */
mbed_official 87:085cde657901 847 void FLASH_Erase_Sector(uint32_t Sector, uint8_t VoltageRange);
mbed_official 532:fe11edbda85c 848 /**
mbed_official 532:fe11edbda85c 849 * @}
mbed_official 532:fe11edbda85c 850 */
mbed_official 87:085cde657901 851
mbed_official 87:085cde657901 852 /**
mbed_official 87:085cde657901 853 * @}
mbed_official 87:085cde657901 854 */
mbed_official 87:085cde657901 855
mbed_official 87:085cde657901 856 /**
mbed_official 87:085cde657901 857 * @}
mbed_official 87:085cde657901 858 */
mbed_official 87:085cde657901 859
mbed_official 87:085cde657901 860 #ifdef __cplusplus
mbed_official 87:085cde657901 861 }
mbed_official 87:085cde657901 862 #endif
mbed_official 87:085cde657901 863
mbed_official 87:085cde657901 864 #endif /* __STM32F4xx_HAL_FLASH_EX_H */
mbed_official 87:085cde657901 865
mbed_official 87:085cde657901 866 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/