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

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

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

Committer:
AnnaBridge
Date:
Fri May 26 12:30:20 2017 +0100
Revision:
143:86740a56073b
Parent:
135:176b8275d35d
Release 143 of the mbed library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 126:abea610beb85 1 /**
AnnaBridge 126:abea610beb85 2 ******************************************************************************
AnnaBridge 126:abea610beb85 3 * @file stm32f3xx_hal_flash.h
AnnaBridge 126:abea610beb85 4 * @author MCD Application Team
<> 135:176b8275d35d 5 * @version V1.4.0
<> 135:176b8275d35d 6 * @date 16-December-2016
AnnaBridge 126:abea610beb85 7 * @brief Header file of Flash HAL module.
AnnaBridge 126:abea610beb85 8 ******************************************************************************
AnnaBridge 126:abea610beb85 9 * @attention
AnnaBridge 126:abea610beb85 10 *
AnnaBridge 126:abea610beb85 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
AnnaBridge 126:abea610beb85 12 *
AnnaBridge 126:abea610beb85 13 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 126:abea610beb85 14 * are permitted provided that the following conditions are met:
AnnaBridge 126:abea610beb85 15 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 126:abea610beb85 16 * this list of conditions and the following disclaimer.
AnnaBridge 126:abea610beb85 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 126:abea610beb85 18 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 126:abea610beb85 19 * and/or other materials provided with the distribution.
AnnaBridge 126:abea610beb85 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 126:abea610beb85 21 * may be used to endorse or promote products derived from this software
AnnaBridge 126:abea610beb85 22 * without specific prior written permission.
AnnaBridge 126:abea610beb85 23 *
AnnaBridge 126:abea610beb85 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 126:abea610beb85 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 126:abea610beb85 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 126:abea610beb85 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 126:abea610beb85 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 126:abea610beb85 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 126:abea610beb85 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 126:abea610beb85 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 126:abea610beb85 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 126:abea610beb85 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 126:abea610beb85 34 *
AnnaBridge 126:abea610beb85 35 ******************************************************************************
AnnaBridge 126:abea610beb85 36 */
AnnaBridge 126:abea610beb85 37
AnnaBridge 126:abea610beb85 38 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 126:abea610beb85 39 #ifndef __STM32F3xx_HAL_FLASH_H
AnnaBridge 126:abea610beb85 40 #define __STM32F3xx_HAL_FLASH_H
AnnaBridge 126:abea610beb85 41
AnnaBridge 126:abea610beb85 42 #ifdef __cplusplus
AnnaBridge 126:abea610beb85 43 extern "C" {
AnnaBridge 126:abea610beb85 44 #endif
AnnaBridge 126:abea610beb85 45
AnnaBridge 126:abea610beb85 46 /* Includes ------------------------------------------------------------------*/
AnnaBridge 126:abea610beb85 47 #include "stm32f3xx_hal_def.h"
AnnaBridge 126:abea610beb85 48
AnnaBridge 126:abea610beb85 49 /** @addtogroup STM32F3xx_HAL_Driver
AnnaBridge 126:abea610beb85 50 * @{
AnnaBridge 126:abea610beb85 51 */
AnnaBridge 126:abea610beb85 52
AnnaBridge 126:abea610beb85 53 /** @addtogroup FLASH
AnnaBridge 126:abea610beb85 54 * @{
AnnaBridge 126:abea610beb85 55 */
AnnaBridge 126:abea610beb85 56
AnnaBridge 126:abea610beb85 57 /** @addtogroup FLASH_Private_Constants
AnnaBridge 126:abea610beb85 58 * @{
AnnaBridge 126:abea610beb85 59 */
<> 135:176b8275d35d 60 #define FLASH_TIMEOUT_VALUE (50000U) /* 50 s */
AnnaBridge 126:abea610beb85 61 /**
AnnaBridge 126:abea610beb85 62 * @}
AnnaBridge 126:abea610beb85 63 */
AnnaBridge 126:abea610beb85 64
AnnaBridge 126:abea610beb85 65 /** @addtogroup FLASH_Private_Macros
AnnaBridge 126:abea610beb85 66 * @{
AnnaBridge 126:abea610beb85 67 */
AnnaBridge 126:abea610beb85 68
AnnaBridge 126:abea610beb85 69 #define IS_FLASH_TYPEPROGRAM(VALUE) (((VALUE) == FLASH_TYPEPROGRAM_HALFWORD) || \
AnnaBridge 126:abea610beb85 70 ((VALUE) == FLASH_TYPEPROGRAM_WORD) || \
AnnaBridge 126:abea610beb85 71 ((VALUE) == FLASH_TYPEPROGRAM_DOUBLEWORD))
AnnaBridge 126:abea610beb85 72
AnnaBridge 126:abea610beb85 73 #define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \
AnnaBridge 126:abea610beb85 74 ((__LATENCY__) == FLASH_LATENCY_1) || \
AnnaBridge 126:abea610beb85 75 ((__LATENCY__) == FLASH_LATENCY_2))
AnnaBridge 126:abea610beb85 76
AnnaBridge 126:abea610beb85 77 /**
AnnaBridge 126:abea610beb85 78 * @}
AnnaBridge 126:abea610beb85 79 */
AnnaBridge 126:abea610beb85 80
AnnaBridge 126:abea610beb85 81 /* Exported types ------------------------------------------------------------*/
AnnaBridge 126:abea610beb85 82 /** @defgroup FLASH_Exported_Types FLASH Exported Types
AnnaBridge 126:abea610beb85 83 * @{
AnnaBridge 126:abea610beb85 84 */
AnnaBridge 126:abea610beb85 85
AnnaBridge 126:abea610beb85 86 /**
AnnaBridge 126:abea610beb85 87 * @brief FLASH Procedure structure definition
AnnaBridge 126:abea610beb85 88 */
AnnaBridge 126:abea610beb85 89 typedef enum
AnnaBridge 126:abea610beb85 90 {
<> 135:176b8275d35d 91 FLASH_PROC_NONE = 0U,
<> 135:176b8275d35d 92 FLASH_PROC_PAGEERASE = 1U,
<> 135:176b8275d35d 93 FLASH_PROC_MASSERASE = 2U,
<> 135:176b8275d35d 94 FLASH_PROC_PROGRAMHALFWORD = 3U,
<> 135:176b8275d35d 95 FLASH_PROC_PROGRAMWORD = 4U,
<> 135:176b8275d35d 96 FLASH_PROC_PROGRAMDOUBLEWORD = 5U
AnnaBridge 126:abea610beb85 97 } FLASH_ProcedureTypeDef;
AnnaBridge 126:abea610beb85 98
AnnaBridge 126:abea610beb85 99 /**
AnnaBridge 126:abea610beb85 100 * @brief FLASH handle Structure definition
AnnaBridge 126:abea610beb85 101 */
AnnaBridge 126:abea610beb85 102 typedef struct
AnnaBridge 126:abea610beb85 103 {
AnnaBridge 126:abea610beb85 104 __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*!< Internal variable to indicate which procedure is ongoing or not in IT context */
AnnaBridge 126:abea610beb85 105
AnnaBridge 126:abea610beb85 106 __IO uint32_t DataRemaining; /*!< Internal variable to save the remaining pages to erase or half-word to program in IT context */
AnnaBridge 126:abea610beb85 107
AnnaBridge 126:abea610beb85 108 __IO uint32_t Address; /*!< Internal variable to save address selected for program or erase */
AnnaBridge 126:abea610beb85 109
AnnaBridge 126:abea610beb85 110 __IO uint64_t Data; /*!< Internal variable to save data to be programmed */
AnnaBridge 126:abea610beb85 111
AnnaBridge 126:abea610beb85 112 HAL_LockTypeDef Lock; /*!< FLASH locking object */
AnnaBridge 126:abea610beb85 113
AnnaBridge 126:abea610beb85 114 __IO uint32_t ErrorCode; /*!< FLASH error code
AnnaBridge 126:abea610beb85 115 This parameter can be a value of @ref FLASH_Error_Codes */
AnnaBridge 126:abea610beb85 116 } FLASH_ProcessTypeDef;
AnnaBridge 126:abea610beb85 117
AnnaBridge 126:abea610beb85 118 /**
AnnaBridge 126:abea610beb85 119 * @}
AnnaBridge 126:abea610beb85 120 */
AnnaBridge 126:abea610beb85 121
AnnaBridge 126:abea610beb85 122 /* Exported constants --------------------------------------------------------*/
AnnaBridge 126:abea610beb85 123 /** @defgroup FLASH_Exported_Constants FLASH Exported Constants
AnnaBridge 126:abea610beb85 124 * @{
AnnaBridge 126:abea610beb85 125 */
AnnaBridge 126:abea610beb85 126
AnnaBridge 126:abea610beb85 127 /** @defgroup FLASH_Error_Codes FLASH Error Codes
AnnaBridge 126:abea610beb85 128 * @{
AnnaBridge 126:abea610beb85 129 */
AnnaBridge 126:abea610beb85 130
AnnaBridge 126:abea610beb85 131 #define HAL_FLASH_ERROR_NONE 0x00U /*!< No error */
AnnaBridge 126:abea610beb85 132 #define HAL_FLASH_ERROR_PROG 0x01U /*!< Programming error */
AnnaBridge 126:abea610beb85 133 #define HAL_FLASH_ERROR_WRP 0x02U /*!< Write protection error */
AnnaBridge 126:abea610beb85 134
AnnaBridge 126:abea610beb85 135 /**
AnnaBridge 126:abea610beb85 136 * @}
AnnaBridge 126:abea610beb85 137 */
AnnaBridge 126:abea610beb85 138
AnnaBridge 126:abea610beb85 139 /** @defgroup FLASH_Type_Program FLASH Type Program
AnnaBridge 126:abea610beb85 140 * @{
AnnaBridge 126:abea610beb85 141 */
<> 135:176b8275d35d 142 #define FLASH_TYPEPROGRAM_HALFWORD (0x01U) /*!<Program a half-word (16-bit) at a specified address.*/
<> 135:176b8275d35d 143 #define FLASH_TYPEPROGRAM_WORD (0x02U) /*!<Program a word (32-bit) at a specified address.*/
<> 135:176b8275d35d 144 #define FLASH_TYPEPROGRAM_DOUBLEWORD (0x03U) /*!<Program a double word (64-bit) at a specified address*/
AnnaBridge 126:abea610beb85 145
AnnaBridge 126:abea610beb85 146 /**
AnnaBridge 126:abea610beb85 147 * @}
AnnaBridge 126:abea610beb85 148 */
AnnaBridge 126:abea610beb85 149
AnnaBridge 126:abea610beb85 150 /** @defgroup FLASH_Latency FLASH Latency
AnnaBridge 126:abea610beb85 151 * @{
AnnaBridge 126:abea610beb85 152 */
<> 135:176b8275d35d 153 #define FLASH_LATENCY_0 (0x00000000U) /*!< FLASH Zero Latency cycle */
AnnaBridge 126:abea610beb85 154 #define FLASH_LATENCY_1 FLASH_ACR_LATENCY_0 /*!< FLASH One Latency cycle */
AnnaBridge 126:abea610beb85 155 #define FLASH_LATENCY_2 FLASH_ACR_LATENCY_1 /*!< FLASH Two Latency cycles */
AnnaBridge 126:abea610beb85 156
AnnaBridge 126:abea610beb85 157 /**
AnnaBridge 126:abea610beb85 158 * @}
AnnaBridge 126:abea610beb85 159 */
AnnaBridge 126:abea610beb85 160
AnnaBridge 126:abea610beb85 161
AnnaBridge 126:abea610beb85 162 /** @defgroup FLASH_Flag_definition FLASH Flag definition
AnnaBridge 126:abea610beb85 163 * @{
AnnaBridge 126:abea610beb85 164 */
AnnaBridge 126:abea610beb85 165 #define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */
AnnaBridge 126:abea610beb85 166 #define FLASH_FLAG_PGERR FLASH_SR_PGERR /*!< FLASH Programming error flag */
AnnaBridge 126:abea610beb85 167 #define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */
AnnaBridge 126:abea610beb85 168 #define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Operation flag */
AnnaBridge 126:abea610beb85 169 /**
AnnaBridge 126:abea610beb85 170 * @}
AnnaBridge 126:abea610beb85 171 */
AnnaBridge 126:abea610beb85 172
AnnaBridge 126:abea610beb85 173 /** @defgroup FLASH_Interrupt_definition FLASH Interrupt definition
AnnaBridge 126:abea610beb85 174 * @{
AnnaBridge 126:abea610beb85 175 */
AnnaBridge 126:abea610beb85 176 #define FLASH_IT_EOP FLASH_CR_EOPIE /*!< End of FLASH Operation Interrupt source */
AnnaBridge 126:abea610beb85 177 #define FLASH_IT_ERR FLASH_CR_ERRIE /*!< Error Interrupt source */
AnnaBridge 126:abea610beb85 178 /**
AnnaBridge 126:abea610beb85 179 * @}
AnnaBridge 126:abea610beb85 180 */
AnnaBridge 126:abea610beb85 181
AnnaBridge 126:abea610beb85 182 /**
AnnaBridge 126:abea610beb85 183 * @}
AnnaBridge 126:abea610beb85 184 */
AnnaBridge 126:abea610beb85 185
AnnaBridge 126:abea610beb85 186 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 126:abea610beb85 187
AnnaBridge 126:abea610beb85 188 /** @defgroup FLASH_Exported_Macros FLASH Exported Macros
AnnaBridge 126:abea610beb85 189 * @brief macros to control FLASH features
AnnaBridge 126:abea610beb85 190 * @{
AnnaBridge 126:abea610beb85 191 */
AnnaBridge 126:abea610beb85 192
AnnaBridge 126:abea610beb85 193 /** @defgroup FLASH_Half_Cycle FLASH Half Cycle
AnnaBridge 126:abea610beb85 194 * @brief macros to handle FLASH half cycle
AnnaBridge 126:abea610beb85 195 * @{
AnnaBridge 126:abea610beb85 196 */
AnnaBridge 126:abea610beb85 197
AnnaBridge 126:abea610beb85 198 /**
AnnaBridge 126:abea610beb85 199 * @brief Enable the FLASH half cycle access.
AnnaBridge 126:abea610beb85 200 * @retval None
AnnaBridge 126:abea610beb85 201 */
AnnaBridge 126:abea610beb85 202 #define __HAL_FLASH_HALF_CYCLE_ACCESS_ENABLE() (FLASH->ACR |= FLASH_ACR_HLFCYA)
AnnaBridge 126:abea610beb85 203
AnnaBridge 126:abea610beb85 204 /**
AnnaBridge 126:abea610beb85 205 * @brief Disable the FLASH half cycle access.
AnnaBridge 126:abea610beb85 206 * @retval None
AnnaBridge 126:abea610beb85 207 */
AnnaBridge 126:abea610beb85 208 #define __HAL_FLASH_HALF_CYCLE_ACCESS_DISABLE() (FLASH->ACR &= (~FLASH_ACR_HLFCYA))
AnnaBridge 126:abea610beb85 209
AnnaBridge 126:abea610beb85 210 /**
AnnaBridge 126:abea610beb85 211 * @}
AnnaBridge 126:abea610beb85 212 */
AnnaBridge 126:abea610beb85 213
AnnaBridge 126:abea610beb85 214 /** @defgroup FLASH_EM_Latency FLASH Latency
AnnaBridge 126:abea610beb85 215 * @brief macros to handle FLASH Latency
AnnaBridge 126:abea610beb85 216 * @{
AnnaBridge 126:abea610beb85 217 */
AnnaBridge 126:abea610beb85 218
AnnaBridge 126:abea610beb85 219 /**
AnnaBridge 126:abea610beb85 220 * @brief Set the FLASH Latency.
AnnaBridge 126:abea610beb85 221 * @param __LATENCY__ FLASH Latency
AnnaBridge 126:abea610beb85 222 * This parameter can be one of the following values:
AnnaBridge 126:abea610beb85 223 * @arg @ref FLASH_LATENCY_0 FLASH Zero Latency cycle
AnnaBridge 126:abea610beb85 224 * @arg @ref FLASH_LATENCY_1 FLASH One Latency cycle
AnnaBridge 126:abea610beb85 225 * @arg @ref FLASH_LATENCY_2 FLASH Two Latency cycles
AnnaBridge 126:abea610beb85 226 * @retval None
AnnaBridge 126:abea610beb85 227 */
AnnaBridge 126:abea610beb85 228 #define __HAL_FLASH_SET_LATENCY(__LATENCY__) (FLASH->ACR = (FLASH->ACR&(~FLASH_ACR_LATENCY)) | (__LATENCY__))
AnnaBridge 126:abea610beb85 229
AnnaBridge 126:abea610beb85 230
AnnaBridge 126:abea610beb85 231 /**
AnnaBridge 126:abea610beb85 232 * @brief Get the FLASH Latency.
AnnaBridge 126:abea610beb85 233 * @retval FLASH Latency
AnnaBridge 126:abea610beb85 234 * This parameter can be one of the following values:
AnnaBridge 126:abea610beb85 235 * @arg @ref FLASH_LATENCY_0 FLASH Zero Latency cycle
AnnaBridge 126:abea610beb85 236 * @arg @ref FLASH_LATENCY_1 FLASH One Latency cycle
AnnaBridge 126:abea610beb85 237 * @arg @ref FLASH_LATENCY_2 FLASH Two Latency cycles
AnnaBridge 126:abea610beb85 238 */
AnnaBridge 126:abea610beb85 239 #define __HAL_FLASH_GET_LATENCY() (READ_BIT((FLASH->ACR), FLASH_ACR_LATENCY))
AnnaBridge 126:abea610beb85 240
AnnaBridge 126:abea610beb85 241 /**
AnnaBridge 126:abea610beb85 242 * @}
AnnaBridge 126:abea610beb85 243 */
AnnaBridge 126:abea610beb85 244
AnnaBridge 126:abea610beb85 245 /** @defgroup FLASH_Prefetch FLASH Prefetch
AnnaBridge 126:abea610beb85 246 * @brief macros to handle FLASH Prefetch buffer
AnnaBridge 126:abea610beb85 247 * @{
AnnaBridge 126:abea610beb85 248 */
AnnaBridge 126:abea610beb85 249 /**
AnnaBridge 126:abea610beb85 250 * @brief Enable the FLASH prefetch buffer.
AnnaBridge 126:abea610beb85 251 * @retval None
AnnaBridge 126:abea610beb85 252 */
AnnaBridge 126:abea610beb85 253 #define __HAL_FLASH_PREFETCH_BUFFER_ENABLE() (FLASH->ACR |= FLASH_ACR_PRFTBE)
AnnaBridge 126:abea610beb85 254
AnnaBridge 126:abea610beb85 255 /**
AnnaBridge 126:abea610beb85 256 * @brief Disable the FLASH prefetch buffer.
AnnaBridge 126:abea610beb85 257 * @retval None
AnnaBridge 126:abea610beb85 258 */
AnnaBridge 126:abea610beb85 259 #define __HAL_FLASH_PREFETCH_BUFFER_DISABLE() (FLASH->ACR &= (~FLASH_ACR_PRFTBE))
AnnaBridge 126:abea610beb85 260
AnnaBridge 126:abea610beb85 261 /**
AnnaBridge 126:abea610beb85 262 * @}
AnnaBridge 126:abea610beb85 263 */
AnnaBridge 126:abea610beb85 264
AnnaBridge 126:abea610beb85 265 /** @defgroup FLASH_Interrupt FLASH Interrupts
AnnaBridge 126:abea610beb85 266 * @brief macros to handle FLASH interrupts
AnnaBridge 126:abea610beb85 267 * @{
AnnaBridge 126:abea610beb85 268 */
AnnaBridge 126:abea610beb85 269
AnnaBridge 126:abea610beb85 270 /**
AnnaBridge 126:abea610beb85 271 * @brief Enable the specified FLASH interrupt.
AnnaBridge 126:abea610beb85 272 * @param __INTERRUPT__ FLASH interrupt
AnnaBridge 126:abea610beb85 273 * This parameter can be any combination of the following values:
AnnaBridge 126:abea610beb85 274 * @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt
AnnaBridge 126:abea610beb85 275 * @arg @ref FLASH_IT_ERR Error Interrupt
AnnaBridge 126:abea610beb85 276 * @retval none
AnnaBridge 126:abea610beb85 277 */
AnnaBridge 126:abea610beb85 278 #define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) SET_BIT((FLASH->CR), (__INTERRUPT__))
AnnaBridge 126:abea610beb85 279
AnnaBridge 126:abea610beb85 280 /**
AnnaBridge 126:abea610beb85 281 * @brief Disable the specified FLASH interrupt.
AnnaBridge 126:abea610beb85 282 * @param __INTERRUPT__ FLASH interrupt
AnnaBridge 126:abea610beb85 283 * This parameter can be any combination of the following values:
AnnaBridge 126:abea610beb85 284 * @arg @ref FLASH_IT_EOP End of FLASH Operation Interrupt
AnnaBridge 126:abea610beb85 285 * @arg @ref FLASH_IT_ERR Error Interrupt
AnnaBridge 126:abea610beb85 286 * @retval none
AnnaBridge 126:abea610beb85 287 */
AnnaBridge 126:abea610beb85 288 #define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) CLEAR_BIT((FLASH->CR), (uint32_t)(__INTERRUPT__))
AnnaBridge 126:abea610beb85 289
AnnaBridge 126:abea610beb85 290 /**
AnnaBridge 126:abea610beb85 291 * @brief Get the specified FLASH flag status.
AnnaBridge 126:abea610beb85 292 * @param __FLAG__ specifies the FLASH flag to check.
AnnaBridge 126:abea610beb85 293 * This parameter can be one of the following values:
AnnaBridge 126:abea610beb85 294 * @arg @ref FLASH_FLAG_BSY FLASH Busy flag
AnnaBridge 126:abea610beb85 295 * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag
AnnaBridge 126:abea610beb85 296 * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag
AnnaBridge 126:abea610beb85 297 * @arg @ref FLASH_FLAG_PGERR FLASH Programming error flag
AnnaBridge 126:abea610beb85 298 * @retval The new state of __FLAG__ (SET or RESET).
AnnaBridge 126:abea610beb85 299 */
AnnaBridge 126:abea610beb85 300 #define __HAL_FLASH_GET_FLAG(__FLAG__) (((FLASH->SR) & (__FLAG__)) == (__FLAG__))
AnnaBridge 126:abea610beb85 301
AnnaBridge 126:abea610beb85 302 /**
AnnaBridge 126:abea610beb85 303 * @brief Clear the specified FLASH flag.
AnnaBridge 126:abea610beb85 304 * @param __FLAG__ specifies the FLASH flags to clear.
AnnaBridge 126:abea610beb85 305 * This parameter can be any combination of the following values:
AnnaBridge 126:abea610beb85 306 * @arg @ref FLASH_FLAG_EOP FLASH End of Operation flag
AnnaBridge 126:abea610beb85 307 * @arg @ref FLASH_FLAG_WRPERR FLASH Write protected error flag
AnnaBridge 126:abea610beb85 308 * @arg @ref FLASH_FLAG_PGERR FLASH Programming error flag
AnnaBridge 126:abea610beb85 309 * @retval none
AnnaBridge 126:abea610beb85 310 */
AnnaBridge 126:abea610beb85 311 #define __HAL_FLASH_CLEAR_FLAG(__FLAG__) ((FLASH->SR) = (__FLAG__))
AnnaBridge 126:abea610beb85 312
AnnaBridge 126:abea610beb85 313 /**
AnnaBridge 126:abea610beb85 314 * @}
AnnaBridge 126:abea610beb85 315 */
AnnaBridge 126:abea610beb85 316
AnnaBridge 126:abea610beb85 317 /**
AnnaBridge 126:abea610beb85 318 * @}
AnnaBridge 126:abea610beb85 319 */
AnnaBridge 126:abea610beb85 320
AnnaBridge 126:abea610beb85 321 /* Include FLASH HAL Extended module */
AnnaBridge 126:abea610beb85 322 #include "stm32f3xx_hal_flash_ex.h"
AnnaBridge 126:abea610beb85 323
AnnaBridge 126:abea610beb85 324 /* Exported functions --------------------------------------------------------*/
AnnaBridge 126:abea610beb85 325 /** @addtogroup FLASH_Exported_Functions
AnnaBridge 126:abea610beb85 326 * @{
AnnaBridge 126:abea610beb85 327 */
AnnaBridge 126:abea610beb85 328
AnnaBridge 126:abea610beb85 329 /** @addtogroup FLASH_Exported_Functions_Group1
AnnaBridge 126:abea610beb85 330 * @{
AnnaBridge 126:abea610beb85 331 */
AnnaBridge 126:abea610beb85 332 /* IO operation functions *****************************************************/
AnnaBridge 126:abea610beb85 333 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
AnnaBridge 126:abea610beb85 334 HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data);
AnnaBridge 126:abea610beb85 335
AnnaBridge 126:abea610beb85 336 /* FLASH IRQ handler function */
AnnaBridge 126:abea610beb85 337 void HAL_FLASH_IRQHandler(void);
AnnaBridge 126:abea610beb85 338 /* Callbacks in non blocking modes */
AnnaBridge 126:abea610beb85 339 void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
AnnaBridge 126:abea610beb85 340 void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
AnnaBridge 126:abea610beb85 341
AnnaBridge 126:abea610beb85 342 /**
AnnaBridge 126:abea610beb85 343 * @}
AnnaBridge 126:abea610beb85 344 */
AnnaBridge 126:abea610beb85 345
AnnaBridge 126:abea610beb85 346 /** @addtogroup FLASH_Exported_Functions_Group2
AnnaBridge 126:abea610beb85 347 * @{
AnnaBridge 126:abea610beb85 348 */
AnnaBridge 126:abea610beb85 349 /* Peripheral Control functions ***********************************************/
AnnaBridge 126:abea610beb85 350 HAL_StatusTypeDef HAL_FLASH_Unlock(void);
AnnaBridge 126:abea610beb85 351 HAL_StatusTypeDef HAL_FLASH_Lock(void);
AnnaBridge 126:abea610beb85 352 HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
AnnaBridge 126:abea610beb85 353 HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
AnnaBridge 126:abea610beb85 354 HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);
AnnaBridge 126:abea610beb85 355
AnnaBridge 126:abea610beb85 356 /**
AnnaBridge 126:abea610beb85 357 * @}
AnnaBridge 126:abea610beb85 358 */
AnnaBridge 126:abea610beb85 359
AnnaBridge 126:abea610beb85 360 /** @addtogroup FLASH_Exported_Functions_Group3
AnnaBridge 126:abea610beb85 361 * @{
AnnaBridge 126:abea610beb85 362 */
AnnaBridge 126:abea610beb85 363 /* Peripheral State and Error functions ***************************************/
AnnaBridge 126:abea610beb85 364 uint32_t HAL_FLASH_GetError(void);
AnnaBridge 126:abea610beb85 365
AnnaBridge 126:abea610beb85 366 /**
AnnaBridge 126:abea610beb85 367 * @}
AnnaBridge 126:abea610beb85 368 */
AnnaBridge 126:abea610beb85 369
AnnaBridge 126:abea610beb85 370 /**
AnnaBridge 126:abea610beb85 371 * @}
AnnaBridge 126:abea610beb85 372 */
AnnaBridge 126:abea610beb85 373
AnnaBridge 126:abea610beb85 374 /* Private function -------------------------------------------------*/
AnnaBridge 126:abea610beb85 375 /** @addtogroup FLASH_Private_Functions
AnnaBridge 126:abea610beb85 376 * @{
AnnaBridge 126:abea610beb85 377 */
AnnaBridge 126:abea610beb85 378 HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
AnnaBridge 126:abea610beb85 379
AnnaBridge 126:abea610beb85 380 /**
AnnaBridge 126:abea610beb85 381 * @}
AnnaBridge 126:abea610beb85 382 */
AnnaBridge 126:abea610beb85 383
AnnaBridge 126:abea610beb85 384 /**
AnnaBridge 126:abea610beb85 385 * @}
AnnaBridge 126:abea610beb85 386 */
AnnaBridge 126:abea610beb85 387
AnnaBridge 126:abea610beb85 388 /**
AnnaBridge 126:abea610beb85 389 * @}
AnnaBridge 126:abea610beb85 390 */
AnnaBridge 126:abea610beb85 391
AnnaBridge 126:abea610beb85 392 #ifdef __cplusplus
AnnaBridge 126:abea610beb85 393 }
AnnaBridge 126:abea610beb85 394 #endif
AnnaBridge 126:abea610beb85 395
AnnaBridge 126:abea610beb85 396 #endif /* __STM32F3xx_HAL_FLASH_H */
AnnaBridge 126:abea610beb85 397
AnnaBridge 126:abea610beb85 398 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
AnnaBridge 126:abea610beb85 399