inport from local

Dependents:   Hobbyking_Cheetah_0511

Committer:
NYX
Date:
Mon Mar 16 06:35:48 2020 +0000
Revision:
0:85b3fd62ea1a
reinport to mbed;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NYX 0:85b3fd62ea1a 1 /**
NYX 0:85b3fd62ea1a 2 ******************************************************************************
NYX 0:85b3fd62ea1a 3 * @file stm32f4xx_hal_flash.h
NYX 0:85b3fd62ea1a 4 * @author MCD Application Team
NYX 0:85b3fd62ea1a 5 * @version V1.7.1
NYX 0:85b3fd62ea1a 6 * @date 14-April-2017
NYX 0:85b3fd62ea1a 7 * @brief Header file of FLASH HAL module.
NYX 0:85b3fd62ea1a 8 ******************************************************************************
NYX 0:85b3fd62ea1a 9 * @attention
NYX 0:85b3fd62ea1a 10 *
NYX 0:85b3fd62ea1a 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
NYX 0:85b3fd62ea1a 12 *
NYX 0:85b3fd62ea1a 13 * Redistribution and use in source and binary forms, with or without modification,
NYX 0:85b3fd62ea1a 14 * are permitted provided that the following conditions are met:
NYX 0:85b3fd62ea1a 15 * 1. Redistributions of source code must retain the above copyright notice,
NYX 0:85b3fd62ea1a 16 * this list of conditions and the following disclaimer.
NYX 0:85b3fd62ea1a 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
NYX 0:85b3fd62ea1a 18 * this list of conditions and the following disclaimer in the documentation
NYX 0:85b3fd62ea1a 19 * and/or other materials provided with the distribution.
NYX 0:85b3fd62ea1a 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
NYX 0:85b3fd62ea1a 21 * may be used to endorse or promote products derived from this software
NYX 0:85b3fd62ea1a 22 * without specific prior written permission.
NYX 0:85b3fd62ea1a 23 *
NYX 0:85b3fd62ea1a 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
NYX 0:85b3fd62ea1a 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
NYX 0:85b3fd62ea1a 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
NYX 0:85b3fd62ea1a 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
NYX 0:85b3fd62ea1a 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
NYX 0:85b3fd62ea1a 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
NYX 0:85b3fd62ea1a 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
NYX 0:85b3fd62ea1a 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
NYX 0:85b3fd62ea1a 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
NYX 0:85b3fd62ea1a 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
NYX 0:85b3fd62ea1a 34 *
NYX 0:85b3fd62ea1a 35 ******************************************************************************
NYX 0:85b3fd62ea1a 36 */
NYX 0:85b3fd62ea1a 37
NYX 0:85b3fd62ea1a 38 /* Define to prevent recursive inclusion -------------------------------------*/
NYX 0:85b3fd62ea1a 39 #ifndef __STM32F4xx_HAL_FLASH_H
NYX 0:85b3fd62ea1a 40 #define __STM32F4xx_HAL_FLASH_H
NYX 0:85b3fd62ea1a 41
NYX 0:85b3fd62ea1a 42 #ifdef __cplusplus
NYX 0:85b3fd62ea1a 43 extern "C" {
NYX 0:85b3fd62ea1a 44 #endif
NYX 0:85b3fd62ea1a 45
NYX 0:85b3fd62ea1a 46 /* Includes ------------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 47 #include "stm32f4xx_hal_def.h"
NYX 0:85b3fd62ea1a 48
NYX 0:85b3fd62ea1a 49 /** @addtogroup STM32F4xx_HAL_Driver
NYX 0:85b3fd62ea1a 50 * @{
NYX 0:85b3fd62ea1a 51 */
NYX 0:85b3fd62ea1a 52
NYX 0:85b3fd62ea1a 53 /** @addtogroup FLASH
NYX 0:85b3fd62ea1a 54 * @{
NYX 0:85b3fd62ea1a 55 */
NYX 0:85b3fd62ea1a 56
NYX 0:85b3fd62ea1a 57 /* Exported types ------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 58 /** @defgroup FLASH_Exported_Types FLASH Exported Types
NYX 0:85b3fd62ea1a 59 * @{
NYX 0:85b3fd62ea1a 60 */
NYX 0:85b3fd62ea1a 61
NYX 0:85b3fd62ea1a 62 /**
NYX 0:85b3fd62ea1a 63 * @brief FLASH Procedure structure definition
NYX 0:85b3fd62ea1a 64 */
NYX 0:85b3fd62ea1a 65 typedef enum
NYX 0:85b3fd62ea1a 66 {
NYX 0:85b3fd62ea1a 67 FLASH_PROC_NONE = 0U,
NYX 0:85b3fd62ea1a 68 FLASH_PROC_SECTERASE,
NYX 0:85b3fd62ea1a 69 FLASH_PROC_MASSERASE,
NYX 0:85b3fd62ea1a 70 FLASH_PROC_PROGRAM
NYX 0:85b3fd62ea1a 71 } FLASH_ProcedureTypeDef;
NYX 0:85b3fd62ea1a 72
NYX 0:85b3fd62ea1a 73 /**
NYX 0:85b3fd62ea1a 74 * @brief FLASH handle Structure definition
NYX 0:85b3fd62ea1a 75 */
NYX 0:85b3fd62ea1a 76 typedef struct
NYX 0:85b3fd62ea1a 77 {
NYX 0:85b3fd62ea1a 78 __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*Internal variable to indicate which procedure is ongoing or not in IT context*/
NYX 0:85b3fd62ea1a 79
NYX 0:85b3fd62ea1a 80 __IO uint32_t NbSectorsToErase; /*Internal variable to save the remaining sectors to erase in IT context*/
NYX 0:85b3fd62ea1a 81
NYX 0:85b3fd62ea1a 82 __IO uint8_t VoltageForErase; /*Internal variable to provide voltage range selected by user in IT context*/
NYX 0:85b3fd62ea1a 83
NYX 0:85b3fd62ea1a 84 __IO uint32_t Sector; /*Internal variable to define the current sector which is erasing*/
NYX 0:85b3fd62ea1a 85
NYX 0:85b3fd62ea1a 86 __IO uint32_t Bank; /*Internal variable to save current bank selected during mass erase*/
NYX 0:85b3fd62ea1a 87
NYX 0:85b3fd62ea1a 88 __IO uint32_t Address; /*Internal variable to save address selected for program*/
NYX 0:85b3fd62ea1a 89
NYX 0:85b3fd62ea1a 90 HAL_LockTypeDef Lock; /* FLASH locking object */
NYX 0:85b3fd62ea1a 91
NYX 0:85b3fd62ea1a 92 __IO uint32_t ErrorCode; /* FLASH error code */
NYX 0:85b3fd62ea1a 93
NYX 0:85b3fd62ea1a 94 }FLASH_ProcessTypeDef;
NYX 0:85b3fd62ea1a 95
NYX 0:85b3fd62ea1a 96 /**
NYX 0:85b3fd62ea1a 97 * @}
NYX 0:85b3fd62ea1a 98 */
NYX 0:85b3fd62ea1a 99
NYX 0:85b3fd62ea1a 100 /* Exported constants --------------------------------------------------------*/
NYX 0:85b3fd62ea1a 101 /** @defgroup FLASH_Exported_Constants FLASH Exported Constants
NYX 0:85b3fd62ea1a 102 * @{
NYX 0:85b3fd62ea1a 103 */
NYX 0:85b3fd62ea1a 104 /** @defgroup FLASH_Error_Code FLASH Error Code
NYX 0:85b3fd62ea1a 105 * @brief FLASH Error Code
NYX 0:85b3fd62ea1a 106 * @{
NYX 0:85b3fd62ea1a 107 */
NYX 0:85b3fd62ea1a 108 #define HAL_FLASH_ERROR_NONE 0x00000000U /*!< No error */
NYX 0:85b3fd62ea1a 109 #define HAL_FLASH_ERROR_RD 0x00000001U /*!< Read Protection error */
NYX 0:85b3fd62ea1a 110 #define HAL_FLASH_ERROR_PGS 0x00000002U /*!< Programming Sequence error */
NYX 0:85b3fd62ea1a 111 #define HAL_FLASH_ERROR_PGP 0x00000004U /*!< Programming Parallelism error */
NYX 0:85b3fd62ea1a 112 #define HAL_FLASH_ERROR_PGA 0x00000008U /*!< Programming Alignment error */
NYX 0:85b3fd62ea1a 113 #define HAL_FLASH_ERROR_WRP 0x00000010U /*!< Write protection error */
NYX 0:85b3fd62ea1a 114 #define HAL_FLASH_ERROR_OPERATION 0x00000020U /*!< Operation Error */
NYX 0:85b3fd62ea1a 115 /**
NYX 0:85b3fd62ea1a 116 * @}
NYX 0:85b3fd62ea1a 117 */
NYX 0:85b3fd62ea1a 118
NYX 0:85b3fd62ea1a 119 /** @defgroup FLASH_Type_Program FLASH Type Program
NYX 0:85b3fd62ea1a 120 * @{
NYX 0:85b3fd62ea1a 121 */
NYX 0:85b3fd62ea1a 122 #define FLASH_TYPEPROGRAM_BYTE 0x00000000U /*!< Program byte (8-bit) at a specified address */
NYX 0:85b3fd62ea1a 123 #define FLASH_TYPEPROGRAM_HALFWORD 0x00000001U /*!< Program a half-word (16-bit) at a specified address */
NYX 0:85b3fd62ea1a 124 #define FLASH_TYPEPROGRAM_WORD 0x00000002U /*!< Program a word (32-bit) at a specified address */
NYX 0:85b3fd62ea1a 125 #define FLASH_TYPEPROGRAM_DOUBLEWORD 0x00000003U /*!< Program a double word (64-bit) at a specified address */
NYX 0:85b3fd62ea1a 126 /**
NYX 0:85b3fd62ea1a 127 * @}
NYX 0:85b3fd62ea1a 128 */
NYX 0:85b3fd62ea1a 129
NYX 0:85b3fd62ea1a 130 /** @defgroup FLASH_Flag_definition FLASH Flag definition
NYX 0:85b3fd62ea1a 131 * @brief Flag definition
NYX 0:85b3fd62ea1a 132 * @{
NYX 0:85b3fd62ea1a 133 */
NYX 0:85b3fd62ea1a 134 #define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Operation flag */
NYX 0:85b3fd62ea1a 135 #define FLASH_FLAG_OPERR FLASH_SR_SOP /*!< FLASH operation Error flag */
NYX 0:85b3fd62ea1a 136 #define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */
NYX 0:85b3fd62ea1a 137 #define FLASH_FLAG_PGAERR FLASH_SR_PGAERR /*!< FLASH Programming Alignment error flag */
NYX 0:85b3fd62ea1a 138 #define FLASH_FLAG_PGPERR FLASH_SR_PGPERR /*!< FLASH Programming Parallelism error flag */
NYX 0:85b3fd62ea1a 139 #define FLASH_FLAG_PGSERR FLASH_SR_PGSERR /*!< FLASH Programming Sequence error flag */
NYX 0:85b3fd62ea1a 140 #if defined(FLASH_SR_RDERR)
NYX 0:85b3fd62ea1a 141 #define FLASH_FLAG_RDERR FLASH_SR_RDERR /*!< Read Protection error flag (PCROP) */
NYX 0:85b3fd62ea1a 142 #endif /* FLASH_SR_RDERR */
NYX 0:85b3fd62ea1a 143 #define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */
NYX 0:85b3fd62ea1a 144 /**
NYX 0:85b3fd62ea1a 145 * @}
NYX 0:85b3fd62ea1a 146 */
NYX 0:85b3fd62ea1a 147
NYX 0:85b3fd62ea1a 148 /** @defgroup FLASH_Interrupt_definition FLASH Interrupt definition
NYX 0:85b3fd62ea1a 149 * @brief FLASH Interrupt definition
NYX 0:85b3fd62ea1a 150 * @{
NYX 0:85b3fd62ea1a 151 */
NYX 0:85b3fd62ea1a 152 #define FLASH_IT_EOP FLASH_CR_EOPIE /*!< End of FLASH Operation Interrupt source */
NYX 0:85b3fd62ea1a 153 #define FLASH_IT_ERR 0x02000000U /*!< Error Interrupt source */
NYX 0:85b3fd62ea1a 154 /**
NYX 0:85b3fd62ea1a 155 * @}
NYX 0:85b3fd62ea1a 156 */
NYX 0:85b3fd62ea1a 157
NYX 0:85b3fd62ea1a 158 /** @defgroup FLASH_Program_Parallelism FLASH Program Parallelism
NYX 0:85b3fd62ea1a 159 * @{
NYX 0:85b3fd62ea1a 160 */
NYX 0:85b3fd62ea1a 161 #define FLASH_PSIZE_BYTE 0x00000000U
NYX 0:85b3fd62ea1a 162 #define FLASH_PSIZE_HALF_WORD 0x00000100U
NYX 0:85b3fd62ea1a 163 #define FLASH_PSIZE_WORD 0x00000200U
NYX 0:85b3fd62ea1a 164 #define FLASH_PSIZE_DOUBLE_WORD 0x00000300U
NYX 0:85b3fd62ea1a 165 #define CR_PSIZE_MASK 0xFFFFFCFFU
NYX 0:85b3fd62ea1a 166 /**
NYX 0:85b3fd62ea1a 167 * @}
NYX 0:85b3fd62ea1a 168 */
NYX 0:85b3fd62ea1a 169
NYX 0:85b3fd62ea1a 170 /** @defgroup FLASH_Keys FLASH Keys
NYX 0:85b3fd62ea1a 171 * @{
NYX 0:85b3fd62ea1a 172 */
NYX 0:85b3fd62ea1a 173 #define RDP_KEY ((uint16_t)0x00A5)
NYX 0:85b3fd62ea1a 174 #define FLASH_KEY1 0x45670123U
NYX 0:85b3fd62ea1a 175 #define FLASH_KEY2 0xCDEF89ABU
NYX 0:85b3fd62ea1a 176 #define FLASH_OPT_KEY1 0x08192A3BU
NYX 0:85b3fd62ea1a 177 #define FLASH_OPT_KEY2 0x4C5D6E7FU
NYX 0:85b3fd62ea1a 178 /**
NYX 0:85b3fd62ea1a 179 * @}
NYX 0:85b3fd62ea1a 180 */
NYX 0:85b3fd62ea1a 181
NYX 0:85b3fd62ea1a 182 /**
NYX 0:85b3fd62ea1a 183 * @}
NYX 0:85b3fd62ea1a 184 */
NYX 0:85b3fd62ea1a 185
NYX 0:85b3fd62ea1a 186 /* Exported macro ------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 187 /** @defgroup FLASH_Exported_Macros FLASH Exported Macros
NYX 0:85b3fd62ea1a 188 * @{
NYX 0:85b3fd62ea1a 189 */
NYX 0:85b3fd62ea1a 190 /**
NYX 0:85b3fd62ea1a 191 * @brief Set the FLASH Latency.
NYX 0:85b3fd62ea1a 192 * @param __LATENCY__: FLASH Latency
NYX 0:85b3fd62ea1a 193 * The value of this parameter depend on device used within the same series
NYX 0:85b3fd62ea1a 194 * @retval none
NYX 0:85b3fd62ea1a 195 */
NYX 0:85b3fd62ea1a 196 #define __HAL_FLASH_SET_LATENCY(__LATENCY__) (*(__IO uint8_t *)ACR_BYTE0_ADDRESS = (uint8_t)(__LATENCY__))
NYX 0:85b3fd62ea1a 197
NYX 0:85b3fd62ea1a 198 /**
NYX 0:85b3fd62ea1a 199 * @brief Get the FLASH Latency.
NYX 0:85b3fd62ea1a 200 * @retval FLASH Latency
NYX 0:85b3fd62ea1a 201 * The value of this parameter depend on device used within the same series
NYX 0:85b3fd62ea1a 202 */
NYX 0:85b3fd62ea1a 203 #define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))
NYX 0:85b3fd62ea1a 204
NYX 0:85b3fd62ea1a 205 /**
NYX 0:85b3fd62ea1a 206 * @brief Enable the FLASH prefetch buffer.
NYX 0:85b3fd62ea1a 207 * @retval none
NYX 0:85b3fd62ea1a 208 */
NYX 0:85b3fd62ea1a 209 #define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTEN)
NYX 0:85b3fd62ea1a 210
NYX 0:85b3fd62ea1a 211 /**
NYX 0:85b3fd62ea1a 212 * @brief Disable the FLASH prefetch buffer.
NYX 0:85b3fd62ea1a 213 * @retval none
NYX 0:85b3fd62ea1a 214 */
NYX 0:85b3fd62ea1a 215 #define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTEN))
NYX 0:85b3fd62ea1a 216
NYX 0:85b3fd62ea1a 217 /**
NYX 0:85b3fd62ea1a 218 * @brief Enable the FLASH instruction cache.
NYX 0:85b3fd62ea1a 219 * @retval none
NYX 0:85b3fd62ea1a 220 */
NYX 0:85b3fd62ea1a 221 #define __HAL_FLASH_INSTRUCTION_CACHE_ENABLE() (FLASH->ACR |= FLASH_ACR_ICEN)
NYX 0:85b3fd62ea1a 222
NYX 0:85b3fd62ea1a 223 /**
NYX 0:85b3fd62ea1a 224 * @brief Disable the FLASH instruction cache.
NYX 0:85b3fd62ea1a 225 * @retval none
NYX 0:85b3fd62ea1a 226 */
NYX 0:85b3fd62ea1a 227 #define __HAL_FLASH_INSTRUCTION_CACHE_DISABLE() (FLASH->ACR &= (~FLASH_ACR_ICEN))
NYX 0:85b3fd62ea1a 228
NYX 0:85b3fd62ea1a 229 /**
NYX 0:85b3fd62ea1a 230 * @brief Enable the FLASH data cache.
NYX 0:85b3fd62ea1a 231 * @retval none
NYX 0:85b3fd62ea1a 232 */
NYX 0:85b3fd62ea1a 233 #define __HAL_FLASH_DATA_CACHE_ENABLE() (FLASH->ACR |= FLASH_ACR_DCEN)
NYX 0:85b3fd62ea1a 234
NYX 0:85b3fd62ea1a 235 /**
NYX 0:85b3fd62ea1a 236 * @brief Disable the FLASH data cache.
NYX 0:85b3fd62ea1a 237 * @retval none
NYX 0:85b3fd62ea1a 238 */
NYX 0:85b3fd62ea1a 239 #define __HAL_FLASH_DATA_CACHE_DISABLE() (FLASH->ACR &= (~FLASH_ACR_DCEN))
NYX 0:85b3fd62ea1a 240
NYX 0:85b3fd62ea1a 241 /**
NYX 0:85b3fd62ea1a 242 * @brief Resets the FLASH instruction Cache.
NYX 0:85b3fd62ea1a 243 * @note This function must be used only when the Instruction Cache is disabled.
NYX 0:85b3fd62ea1a 244 * @retval None
NYX 0:85b3fd62ea1a 245 */
NYX 0:85b3fd62ea1a 246 #define __HAL_FLASH_INSTRUCTION_CACHE_RESET() do {FLASH->ACR |= FLASH_ACR_ICRST; \
NYX 0:85b3fd62ea1a 247 FLASH->ACR &= ~FLASH_ACR_ICRST; \
NYX 0:85b3fd62ea1a 248 }while(0U)
NYX 0:85b3fd62ea1a 249
NYX 0:85b3fd62ea1a 250 /**
NYX 0:85b3fd62ea1a 251 * @brief Resets the FLASH data Cache.
NYX 0:85b3fd62ea1a 252 * @note This function must be used only when the data Cache is disabled.
NYX 0:85b3fd62ea1a 253 * @retval None
NYX 0:85b3fd62ea1a 254 */
NYX 0:85b3fd62ea1a 255 #define __HAL_FLASH_DATA_CACHE_RESET() do {FLASH->ACR |= FLASH_ACR_DCRST; \
NYX 0:85b3fd62ea1a 256 FLASH->ACR &= ~FLASH_ACR_DCRST; \
NYX 0:85b3fd62ea1a 257 }while(0U)
NYX 0:85b3fd62ea1a 258 /**
NYX 0:85b3fd62ea1a 259 * @brief Enable the specified FLASH interrupt.
NYX 0:85b3fd62ea1a 260 * @param __INTERRUPT__ : FLASH interrupt
NYX 0:85b3fd62ea1a 261 * This parameter can be any combination of the following values:
NYX 0:85b3fd62ea1a 262 * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt
NYX 0:85b3fd62ea1a 263 * @arg FLASH_IT_ERR: Error Interrupt
NYX 0:85b3fd62ea1a 264 * @retval none
NYX 0:85b3fd62ea1a 265 */
NYX 0:85b3fd62ea1a 266 #define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) (FLASH->CR |= (__INTERRUPT__))
NYX 0:85b3fd62ea1a 267
NYX 0:85b3fd62ea1a 268 /**
NYX 0:85b3fd62ea1a 269 * @brief Disable the specified FLASH interrupt.
NYX 0:85b3fd62ea1a 270 * @param __INTERRUPT__ : FLASH interrupt
NYX 0:85b3fd62ea1a 271 * This parameter can be any combination of the following values:
NYX 0:85b3fd62ea1a 272 * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt
NYX 0:85b3fd62ea1a 273 * @arg FLASH_IT_ERR: Error Interrupt
NYX 0:85b3fd62ea1a 274 * @retval none
NYX 0:85b3fd62ea1a 275 */
NYX 0:85b3fd62ea1a 276 #define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) (FLASH->CR &= ~(uint32_t)(__INTERRUPT__))
NYX 0:85b3fd62ea1a 277
NYX 0:85b3fd62ea1a 278 /**
NYX 0:85b3fd62ea1a 279 * @brief Get the specified FLASH flag status.
NYX 0:85b3fd62ea1a 280 * @param __FLAG__: specifies the FLASH flags to check.
NYX 0:85b3fd62ea1a 281 * This parameter can be any combination of the following values:
NYX 0:85b3fd62ea1a 282 * @arg FLASH_FLAG_EOP : FLASH End of Operation flag
NYX 0:85b3fd62ea1a 283 * @arg FLASH_FLAG_OPERR : FLASH operation Error flag
NYX 0:85b3fd62ea1a 284 * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
NYX 0:85b3fd62ea1a 285 * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
NYX 0:85b3fd62ea1a 286 * @arg FLASH_FLAG_PGPERR: FLASH Programming Parallelism error flag
NYX 0:85b3fd62ea1a 287 * @arg FLASH_FLAG_PGSERR: FLASH Programming Sequence error flag
NYX 0:85b3fd62ea1a 288 * @arg FLASH_FLAG_RDERR : FLASH Read Protection error flag (PCROP) (*)
NYX 0:85b3fd62ea1a 289 * @arg FLASH_FLAG_BSY : FLASH Busy flag
NYX 0:85b3fd62ea1a 290 * (*) FLASH_FLAG_RDERR is not available for STM32F405xx/407xx/415xx/417xx devices
NYX 0:85b3fd62ea1a 291 * @retval The new state of __FLAG__ (SET or RESET).
NYX 0:85b3fd62ea1a 292 */
NYX 0:85b3fd62ea1a 293 #define __HAL_FLASH_GET_FLAG(__FLAG__) ((FLASH->SR & (__FLAG__)))
NYX 0:85b3fd62ea1a 294
NYX 0:85b3fd62ea1a 295 /**
NYX 0:85b3fd62ea1a 296 * @brief Clear the specified FLASH flags.
NYX 0:85b3fd62ea1a 297 * @param __FLAG__: specifies the FLASH flags to clear.
NYX 0:85b3fd62ea1a 298 * This parameter can be any combination of the following values:
NYX 0:85b3fd62ea1a 299 * @arg FLASH_FLAG_EOP : FLASH End of Operation flag
NYX 0:85b3fd62ea1a 300 * @arg FLASH_FLAG_OPERR : FLASH operation Error flag
NYX 0:85b3fd62ea1a 301 * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
NYX 0:85b3fd62ea1a 302 * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
NYX 0:85b3fd62ea1a 303 * @arg FLASH_FLAG_PGPERR: FLASH Programming Parallelism error flag
NYX 0:85b3fd62ea1a 304 * @arg FLASH_FLAG_PGSERR: FLASH Programming Sequence error flag
NYX 0:85b3fd62ea1a 305 * @arg FLASH_FLAG_RDERR : FLASH Read Protection error flag (PCROP) (*)
NYX 0:85b3fd62ea1a 306 * (*) FLASH_FLAG_RDERR is not available for STM32F405xx/407xx/415xx/417xx devices
NYX 0:85b3fd62ea1a 307 * @retval none
NYX 0:85b3fd62ea1a 308 */
NYX 0:85b3fd62ea1a 309 #define __HAL_FLASH_CLEAR_FLAG(__FLAG__) (FLASH->SR = (__FLAG__))
NYX 0:85b3fd62ea1a 310 /**
NYX 0:85b3fd62ea1a 311 * @}
NYX 0:85b3fd62ea1a 312 */
NYX 0:85b3fd62ea1a 313
NYX 0:85b3fd62ea1a 314 /* Include FLASH HAL Extension module */
NYX 0:85b3fd62ea1a 315 #include "stm32f4xx_hal_flash_ex.h"
NYX 0:85b3fd62ea1a 316 #include "stm32f4xx_hal_flash_ramfunc.h"
NYX 0:85b3fd62ea1a 317
NYX 0:85b3fd62ea1a 318 /* Exported functions --------------------------------------------------------*/
NYX 0:85b3fd62ea1a 319 /** @addtogroup FLASH_Exported_Functions
NYX 0:85b3fd62ea1a 320 * @{
NYX 0:85b3fd62ea1a 321 */
NYX 0:85b3fd62ea1a 322 /** @addtogroup FLASH_Exported_Functions_Group1
NYX 0:85b3fd62ea1a 323 * @{
NYX 0:85b3fd62ea1a 324 */
NYX 0:85b3fd62ea1a 325 /* Program operation functions ***********************************************/
NYX 0:85b3fd62ea1a 326 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
NYX 0:85b3fd62ea1a 327 HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
NYX 0:85b3fd62ea1a 328 /* FLASH IRQ handler method */
NYX 0:85b3fd62ea1a 329 void HAL_FLASH_IRQHandler(void);
NYX 0:85b3fd62ea1a 330 /* Callbacks in non blocking modes */
NYX 0:85b3fd62ea1a 331 void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
NYX 0:85b3fd62ea1a 332 void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
NYX 0:85b3fd62ea1a 333 /**
NYX 0:85b3fd62ea1a 334 * @}
NYX 0:85b3fd62ea1a 335 */
NYX 0:85b3fd62ea1a 336
NYX 0:85b3fd62ea1a 337 /** @addtogroup FLASH_Exported_Functions_Group2
NYX 0:85b3fd62ea1a 338 * @{
NYX 0:85b3fd62ea1a 339 */
NYX 0:85b3fd62ea1a 340 /* Peripheral Control functions **********************************************/
NYX 0:85b3fd62ea1a 341 HAL_StatusTypeDef HAL_FLASH_Unlock(void);
NYX 0:85b3fd62ea1a 342 HAL_StatusTypeDef HAL_FLASH_Lock(void);
NYX 0:85b3fd62ea1a 343 HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
NYX 0:85b3fd62ea1a 344 HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
NYX 0:85b3fd62ea1a 345 /* Option bytes control */
NYX 0:85b3fd62ea1a 346 HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);
NYX 0:85b3fd62ea1a 347 /**
NYX 0:85b3fd62ea1a 348 * @}
NYX 0:85b3fd62ea1a 349 */
NYX 0:85b3fd62ea1a 350
NYX 0:85b3fd62ea1a 351 /** @addtogroup FLASH_Exported_Functions_Group3
NYX 0:85b3fd62ea1a 352 * @{
NYX 0:85b3fd62ea1a 353 */
NYX 0:85b3fd62ea1a 354 /* Peripheral State functions ************************************************/
NYX 0:85b3fd62ea1a 355 uint32_t HAL_FLASH_GetError(void);
NYX 0:85b3fd62ea1a 356 HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
NYX 0:85b3fd62ea1a 357 /**
NYX 0:85b3fd62ea1a 358 * @}
NYX 0:85b3fd62ea1a 359 */
NYX 0:85b3fd62ea1a 360
NYX 0:85b3fd62ea1a 361 /**
NYX 0:85b3fd62ea1a 362 * @}
NYX 0:85b3fd62ea1a 363 */
NYX 0:85b3fd62ea1a 364 /* Private types -------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 365 /* Private variables ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 366 /** @defgroup FLASH_Private_Variables FLASH Private Variables
NYX 0:85b3fd62ea1a 367 * @{
NYX 0:85b3fd62ea1a 368 */
NYX 0:85b3fd62ea1a 369
NYX 0:85b3fd62ea1a 370 /**
NYX 0:85b3fd62ea1a 371 * @}
NYX 0:85b3fd62ea1a 372 */
NYX 0:85b3fd62ea1a 373 /* Private constants ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 374 /** @defgroup FLASH_Private_Constants FLASH Private Constants
NYX 0:85b3fd62ea1a 375 * @{
NYX 0:85b3fd62ea1a 376 */
NYX 0:85b3fd62ea1a 377
NYX 0:85b3fd62ea1a 378 /**
NYX 0:85b3fd62ea1a 379 * @brief ACR register byte 0 (Bits[7:0]) base address
NYX 0:85b3fd62ea1a 380 */
NYX 0:85b3fd62ea1a 381 #define ACR_BYTE0_ADDRESS 0x40023C00U
NYX 0:85b3fd62ea1a 382 /**
NYX 0:85b3fd62ea1a 383 * @brief OPTCR register byte 0 (Bits[7:0]) base address
NYX 0:85b3fd62ea1a 384 */
NYX 0:85b3fd62ea1a 385 #define OPTCR_BYTE0_ADDRESS 0x40023C14U
NYX 0:85b3fd62ea1a 386 /**
NYX 0:85b3fd62ea1a 387 * @brief OPTCR register byte 1 (Bits[15:8]) base address
NYX 0:85b3fd62ea1a 388 */
NYX 0:85b3fd62ea1a 389 #define OPTCR_BYTE1_ADDRESS 0x40023C15U
NYX 0:85b3fd62ea1a 390 /**
NYX 0:85b3fd62ea1a 391 * @brief OPTCR register byte 2 (Bits[23:16]) base address
NYX 0:85b3fd62ea1a 392 */
NYX 0:85b3fd62ea1a 393 #define OPTCR_BYTE2_ADDRESS 0x40023C16U
NYX 0:85b3fd62ea1a 394 /**
NYX 0:85b3fd62ea1a 395 * @brief OPTCR register byte 3 (Bits[31:24]) base address
NYX 0:85b3fd62ea1a 396 */
NYX 0:85b3fd62ea1a 397 #define OPTCR_BYTE3_ADDRESS 0x40023C17U
NYX 0:85b3fd62ea1a 398
NYX 0:85b3fd62ea1a 399 /**
NYX 0:85b3fd62ea1a 400 * @}
NYX 0:85b3fd62ea1a 401 */
NYX 0:85b3fd62ea1a 402
NYX 0:85b3fd62ea1a 403 /* Private macros ------------------------------------------------------------*/
NYX 0:85b3fd62ea1a 404 /** @defgroup FLASH_Private_Macros FLASH Private Macros
NYX 0:85b3fd62ea1a 405 * @{
NYX 0:85b3fd62ea1a 406 */
NYX 0:85b3fd62ea1a 407
NYX 0:85b3fd62ea1a 408 /** @defgroup FLASH_IS_FLASH_Definitions FLASH Private macros to check input parameters
NYX 0:85b3fd62ea1a 409 * @{
NYX 0:85b3fd62ea1a 410 */
NYX 0:85b3fd62ea1a 411 #define IS_FLASH_TYPEPROGRAM(VALUE)(((VALUE) == FLASH_TYPEPROGRAM_BYTE) || \
NYX 0:85b3fd62ea1a 412 ((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \
NYX 0:85b3fd62ea1a 413 ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \
NYX 0:85b3fd62ea1a 414 ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD))
NYX 0:85b3fd62ea1a 415 /**
NYX 0:85b3fd62ea1a 416 * @}
NYX 0:85b3fd62ea1a 417 */
NYX 0:85b3fd62ea1a 418
NYX 0:85b3fd62ea1a 419 /**
NYX 0:85b3fd62ea1a 420 * @}
NYX 0:85b3fd62ea1a 421 */
NYX 0:85b3fd62ea1a 422
NYX 0:85b3fd62ea1a 423 /* Private functions ---------------------------------------------------------*/
NYX 0:85b3fd62ea1a 424 /** @defgroup FLASH_Private_Functions FLASH Private Functions
NYX 0:85b3fd62ea1a 425 * @{
NYX 0:85b3fd62ea1a 426 */
NYX 0:85b3fd62ea1a 427
NYX 0:85b3fd62ea1a 428 /**
NYX 0:85b3fd62ea1a 429 * @}
NYX 0:85b3fd62ea1a 430 */
NYX 0:85b3fd62ea1a 431
NYX 0:85b3fd62ea1a 432 /**
NYX 0:85b3fd62ea1a 433 * @}
NYX 0:85b3fd62ea1a 434 */
NYX 0:85b3fd62ea1a 435
NYX 0:85b3fd62ea1a 436 /**
NYX 0:85b3fd62ea1a 437 * @}
NYX 0:85b3fd62ea1a 438 */
NYX 0:85b3fd62ea1a 439
NYX 0:85b3fd62ea1a 440 #ifdef __cplusplus
NYX 0:85b3fd62ea1a 441 }
NYX 0:85b3fd62ea1a 442 #endif
NYX 0:85b3fd62ea1a 443
NYX 0:85b3fd62ea1a 444 #endif /* __STM32F4xx_HAL_FLASH_H */
NYX 0:85b3fd62ea1a 445
NYX 0:85b3fd62ea1a 446 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/