A simple 128x32 graphical LCD program to quickstart with LCD on ARM mbed IoT Starter Kit. This requires mbed Applciation Shield with FRDM-K64F platform.

Dependencies:   C12832

Committer:
tushki7
Date:
Sun Apr 12 15:45:52 2015 +0000
Revision:
1:eb68c94a8ee5
Parent:
0:60d829a0353a
A simple 128x32 LCD program with ARM mbed IoT Starter Kit;

Who changed what in which revision?

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