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:
Anna Bridge
Date:
Fri Jun 22 15:38:59 2018 +0100
Revision:
169:a7c7b631e539
Parent:
163:e59c8e839560
mbed library. Release version 162

Who changed what in which revision?

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