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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_F413ZH/TARGET_STM/TARGET_STM32F4/device/stm32f4xx_hal_flash_ex.h@163:e59c8e839560
mbed library. Release version 164

Who changed what in which revision?

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