mbed library sources

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Wed Sep 30 17:00:09 2015 +0100
Revision:
636:a11c0372f0ba
Parent:
490:119543c9f674
Synchronized with git revision d29c98dae61be0946ddf3a3c641c7726056f9452

Full URL: https://github.com/mbedmicro/mbed/commit/d29c98dae61be0946ddf3a3c641c7726056f9452/

Added support for SAMW25

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 376:cb4d9db17537 1 /**
mbed_official 376:cb4d9db17537 2 ******************************************************************************
mbed_official 376:cb4d9db17537 3 * @file stm32l0xx_hal_flash.h
mbed_official 376:cb4d9db17537 4 * @author MCD Application Team
mbed_official 490:119543c9f674 5 * @version V1.2.0
mbed_official 490:119543c9f674 6 * @date 06-February-2015
mbed_official 490:119543c9f674 7 * @brief Header file of Flash HAL module.
mbed_official 376:cb4d9db17537 8 ******************************************************************************
mbed_official 376:cb4d9db17537 9 * @attention
mbed_official 376:cb4d9db17537 10 *
mbed_official 490:119543c9f674 11 * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 12 *
mbed_official 376:cb4d9db17537 13 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 14 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 16 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 19 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 21 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 22 * without specific prior written permission.
mbed_official 376:cb4d9db17537 23 *
mbed_official 376:cb4d9db17537 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 34 *
mbed_official 376:cb4d9db17537 35 ******************************************************************************
mbed_official 376:cb4d9db17537 36 */
mbed_official 376:cb4d9db17537 37
mbed_official 376:cb4d9db17537 38 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 376:cb4d9db17537 39 #ifndef __STM32L0XX_HAL_FLASH_H
mbed_official 376:cb4d9db17537 40 #define __STM32L0XX_HAL_FLASH_H
mbed_official 376:cb4d9db17537 41
mbed_official 376:cb4d9db17537 42 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 43 extern "C" {
mbed_official 376:cb4d9db17537 44 #endif
mbed_official 376:cb4d9db17537 45
mbed_official 376:cb4d9db17537 46 /* Includes ------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 47 #include "stm32l0xx_hal_def.h"
mbed_official 376:cb4d9db17537 48
mbed_official 376:cb4d9db17537 49 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 50 * @{
mbed_official 376:cb4d9db17537 51 */
mbed_official 376:cb4d9db17537 52
mbed_official 490:119543c9f674 53 /** @defgroup FLASH FLASH
mbed_official 376:cb4d9db17537 54 * @{
mbed_official 376:cb4d9db17537 55 */
mbed_official 376:cb4d9db17537 56
mbed_official 490:119543c9f674 57 /** @defgroup FLASH_Exported_Types FLASH Exported Types
mbed_official 490:119543c9f674 58 * @{
mbed_official 490:119543c9f674 59 */
mbed_official 376:cb4d9db17537 60
mbed_official 376:cb4d9db17537 61 /**
mbed_official 376:cb4d9db17537 62 * @brief FLASH Procedure structure definition
mbed_official 376:cb4d9db17537 63 */
mbed_official 376:cb4d9db17537 64 typedef enum
mbed_official 376:cb4d9db17537 65 {
mbed_official 376:cb4d9db17537 66 FLASH_PROC_NONE = 0,
mbed_official 376:cb4d9db17537 67 FLASH_PROC_PAGEERASE,
mbed_official 376:cb4d9db17537 68 FLASH_PROC_PROGRAM
mbed_official 376:cb4d9db17537 69 } FLASH_ProcedureTypeDef;
mbed_official 376:cb4d9db17537 70
mbed_official 376:cb4d9db17537 71 /**
mbed_official 490:119543c9f674 72 * @brief FLASH Erase structure definition
mbed_official 490:119543c9f674 73 */
mbed_official 490:119543c9f674 74 typedef struct
mbed_official 490:119543c9f674 75 {
mbed_official 490:119543c9f674 76 uint32_t TypeErase; /*!< TypeErase: Page Erase only.
mbed_official 490:119543c9f674 77 This parameter can be a value of @ref FLASHEx_Type_Erase */
mbed_official 490:119543c9f674 78
mbed_official 490:119543c9f674 79 uint32_t PageAddress ; /*!< PageAddress : Initial FLASH address to be erased
mbed_official 490:119543c9f674 80 This parameter must be a value belonging to FLASH Programm address (depending on the devices) */
mbed_official 490:119543c9f674 81
mbed_official 490:119543c9f674 82 uint32_t NbPages; /*!< NbPages: Number of pages to be erased.
mbed_official 490:119543c9f674 83 This parameter must be a value between 1 and (max number of pages - value of Initial page)*/
mbed_official 376:cb4d9db17537 84
mbed_official 490:119543c9f674 85 } FLASH_EraseInitTypeDef;
mbed_official 376:cb4d9db17537 86 /**
mbed_official 490:119543c9f674 87 * @}
mbed_official 490:119543c9f674 88 */
mbed_official 490:119543c9f674 89
mbed_official 490:119543c9f674 90
mbed_official 490:119543c9f674 91 /** @defgroup FLASH_Private_Types FLASH Private Types
mbed_official 490:119543c9f674 92 * @{
mbed_official 490:119543c9f674 93 */
mbed_official 376:cb4d9db17537 94
mbed_official 376:cb4d9db17537 95 /**
mbed_official 376:cb4d9db17537 96 * @brief FLASH handle Structure definition
mbed_official 376:cb4d9db17537 97 */
mbed_official 376:cb4d9db17537 98 typedef struct
mbed_official 376:cb4d9db17537 99 {
mbed_official 490:119543c9f674 100 __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /* Internal variable to indicate which procedure is ongoing or not in IT context */
mbed_official 376:cb4d9db17537 101
mbed_official 490:119543c9f674 102 __IO uint32_t NbPagesToErase; /* Internal variable to save the remaining sectors to erase in IT context */
mbed_official 376:cb4d9db17537 103
mbed_official 490:119543c9f674 104 __IO uint32_t Page; /* Internal variable to define the current sector which is erasing */
mbed_official 376:cb4d9db17537 105
mbed_official 490:119543c9f674 106 __IO uint32_t Address; /* Internal variable to save address selected for program */
mbed_official 376:cb4d9db17537 107
mbed_official 376:cb4d9db17537 108 HAL_LockTypeDef Lock; /* FLASH locking object */
mbed_official 376:cb4d9db17537 109
mbed_official 490:119543c9f674 110 __IO uint32_t ErrorCode; /* FLASH error code */
mbed_official 376:cb4d9db17537 111
mbed_official 376:cb4d9db17537 112 }FLASH_ProcessTypeDef;
mbed_official 376:cb4d9db17537 113 /**
mbed_official 376:cb4d9db17537 114 * @}
mbed_official 376:cb4d9db17537 115 */
mbed_official 376:cb4d9db17537 116
mbed_official 490:119543c9f674 117 /** @defgroup FLASH_Private_Variables FLASH Private Variables
mbed_official 376:cb4d9db17537 118 * @{
mbed_official 490:119543c9f674 119 */
mbed_official 490:119543c9f674 120
mbed_official 490:119543c9f674 121 /**
mbed_official 490:119543c9f674 122 * @brief Variable used for Program/Erase sectors under interruption.
mbed_official 490:119543c9f674 123 * Put as extern as used also in flash_ex.c.
mbed_official 376:cb4d9db17537 124 */
mbed_official 490:119543c9f674 125 extern FLASH_ProcessTypeDef ProcFlash;
mbed_official 376:cb4d9db17537 126 /**
mbed_official 376:cb4d9db17537 127 * @}
mbed_official 376:cb4d9db17537 128 */
mbed_official 376:cb4d9db17537 129
mbed_official 490:119543c9f674 130 /** @defgroup FLASH_Private_Constants FLASH Private Constants
mbed_official 376:cb4d9db17537 131 * @{
mbed_official 376:cb4d9db17537 132 */
mbed_official 490:119543c9f674 133 #define FLASH_TIMEOUT_VALUE ((uint32_t)50000) /* 50 s */
mbed_official 490:119543c9f674 134 #define FLASH_SIZE_DATA_REGISTER ((uint32_t)0x1FF8007C)
mbed_official 376:cb4d9db17537 135 /**
mbed_official 376:cb4d9db17537 136 * @}
mbed_official 376:cb4d9db17537 137 */
mbed_official 376:cb4d9db17537 138
mbed_official 490:119543c9f674 139
mbed_official 490:119543c9f674 140 /** @defgroup FLASH_Exported_Constants FLASH Public Constants
mbed_official 376:cb4d9db17537 141 * @{
mbed_official 376:cb4d9db17537 142 */
mbed_official 490:119543c9f674 143
mbed_official 490:119543c9f674 144 /**
mbed_official 490:119543c9f674 145 * @brief FLASH size information
mbed_official 490:119543c9f674 146 */
mbed_official 490:119543c9f674 147 #define FLASH_SIZE (uint32_t)(*((uint16_t *)FLASH_SIZE_DATA_REGISTER) * 1024)
mbed_official 490:119543c9f674 148 #define FLASH_PAGE_SIZE ((uint32_t)128)
mbed_official 490:119543c9f674 149
mbed_official 490:119543c9f674 150 /** @defgroup FLASH_Type_Program
mbed_official 490:119543c9f674 151 * @{
mbed_official 490:119543c9f674 152 */
mbed_official 490:119543c9f674 153 #define FLASH_TYPEPROGRAM_WORD ((uint32_t)0x02) /*!<Program a word (32-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 154 /**
mbed_official 376:cb4d9db17537 155 * @}
mbed_official 376:cb4d9db17537 156 */
mbed_official 376:cb4d9db17537 157
mbed_official 490:119543c9f674 158 /** @defgroup FLASH_Latency FLASH Latency
mbed_official 376:cb4d9db17537 159 * @{
mbed_official 490:119543c9f674 160 */
mbed_official 490:119543c9f674 161 #define FLASH_LATENCY_0 ((uint8_t)0x00) /*!< FLASH Zero Latency cycle */
mbed_official 490:119543c9f674 162 #define FLASH_LATENCY_1 ((uint8_t)0x01) /*!< FLASH One Latency cycle */
mbed_official 376:cb4d9db17537 163 /**
mbed_official 376:cb4d9db17537 164 * @}
mbed_official 376:cb4d9db17537 165 */
mbed_official 376:cb4d9db17537 166
mbed_official 490:119543c9f674 167 /** @defgroup FLASH_Interrupts FLASH Interrupts
mbed_official 376:cb4d9db17537 168 * @{
mbed_official 376:cb4d9db17537 169 */
mbed_official 490:119543c9f674 170 #define FLASH_IT_EOP FLASH_PECR_EOPIE /*!< End of programming interrupt source */
mbed_official 490:119543c9f674 171 #define FLASH_IT_ERR FLASH_PECR_ERRIE /*!< Error interrupt source */
mbed_official 376:cb4d9db17537 172 /**
mbed_official 376:cb4d9db17537 173 * @}
mbed_official 376:cb4d9db17537 174 */
mbed_official 376:cb4d9db17537 175
mbed_official 490:119543c9f674 176 /** @defgroup FLASH_Flags FLASH Flags
mbed_official 376:cb4d9db17537 177 * @{
mbed_official 376:cb4d9db17537 178 */
mbed_official 490:119543c9f674 179 #define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */
mbed_official 490:119543c9f674 180 #define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Programming flag */
mbed_official 490:119543c9f674 181 #define FLASH_FLAG_ENDHV FLASH_SR_HVOFF /*!< FLASH End of High Voltage flag */
mbed_official 490:119543c9f674 182 #define FLASH_FLAG_READY FLASH_SR_READY /*!< FLASH Ready flag after low power mode */
mbed_official 490:119543c9f674 183 #define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */
mbed_official 490:119543c9f674 184 #define FLASH_FLAG_PGAERR FLASH_SR_PGAERR /*!< FLASH Programming Alignment error flag */
mbed_official 490:119543c9f674 185 #define FLASH_FLAG_SIZERR FLASH_SR_SIZERR /*!< FLASH Size error flag */
mbed_official 490:119543c9f674 186 #define FLASH_FLAG_OPTVERR FLASH_SR_OPTVERR /*!< FLASH Option Validity error flag */
mbed_official 490:119543c9f674 187 #define FLASH_FLAG_RDERR FLASH_SR_RDERR /*!< FLASH Read protected error flag */
mbed_official 490:119543c9f674 188 #define FLASH_FLAG_FWWERR FLASH_SR_FWWERR /*!< FLASH Write or Errase operation aborted */
mbed_official 490:119543c9f674 189 #define FLASH_FLAG_NOTZEROERR FLASH_SR_NOTZEROERR /*!< FLASH Read protected error flag */
mbed_official 490:119543c9f674 190 /**
mbed_official 490:119543c9f674 191 * @}
mbed_official 490:119543c9f674 192 */
mbed_official 376:cb4d9db17537 193
mbed_official 490:119543c9f674 194 /** @defgroup FLASH_Error_Code Flash Error Code
mbed_official 490:119543c9f674 195 * @{
mbed_official 490:119543c9f674 196 */
mbed_official 490:119543c9f674 197 #define HAL_FLASH_ERROR_NONE 0x00
mbed_official 490:119543c9f674 198 #define HAL_FLASH_ERROR_RD 0x01
mbed_official 490:119543c9f674 199 #define HAL_FLASH_ERROR_SIZE 0x02
mbed_official 490:119543c9f674 200 #define HAL_FLASH_ERROR_PGA 0x04
mbed_official 490:119543c9f674 201 #define HAL_FLASH_ERROR_WRP 0x08
mbed_official 490:119543c9f674 202 #define HAL_FLASH_ERROR_OPTV 0x10
mbed_official 490:119543c9f674 203 #define HAL_FLASH_ERROR_FWWERR 0x20
mbed_official 490:119543c9f674 204 #define HAL_FLASH_ERROR_NOTZERO 0x40
mbed_official 490:119543c9f674 205 /**
mbed_official 490:119543c9f674 206 * @}
mbed_official 490:119543c9f674 207 */
mbed_official 490:119543c9f674 208
mbed_official 490:119543c9f674 209 /** @defgroup FLASH_Keys FLASH Keys
mbed_official 490:119543c9f674 210 * @{
mbed_official 490:119543c9f674 211 */
mbed_official 376:cb4d9db17537 212 #define FLASH_PDKEY1 ((uint32_t)0x04152637) /*!< Flash power down key1 */
mbed_official 376:cb4d9db17537 213 #define FLASH_PDKEY2 ((uint32_t)0xFAFBFCFD) /*!< Flash power down key2: used with FLASH_PDKEY1
mbed_official 490:119543c9f674 214 to unlock the RUN_PD bit in FLASH_ACR */
mbed_official 376:cb4d9db17537 215
mbed_official 376:cb4d9db17537 216 #define FLASH_PEKEY1 ((uint32_t)0x89ABCDEF) /*!< Flash program erase key1 */
mbed_official 376:cb4d9db17537 217 #define FLASH_PEKEY2 ((uint32_t)0x02030405) /*!< Flash program erase key: used with FLASH_PEKEY2
mbed_official 376:cb4d9db17537 218 to unlock the write access to the FLASH_PECR register and
mbed_official 376:cb4d9db17537 219 data EEPROM */
mbed_official 376:cb4d9db17537 220
mbed_official 376:cb4d9db17537 221 #define FLASH_PRGKEY1 ((uint32_t)0x8C9DAEBF) /*!< Flash program memory key1 */
mbed_official 376:cb4d9db17537 222 #define FLASH_PRGKEY2 ((uint32_t)0x13141516) /*!< Flash program memory key2: used with FLASH_PRGKEY2
mbed_official 376:cb4d9db17537 223 to unlock the program memory */
mbed_official 376:cb4d9db17537 224
mbed_official 376:cb4d9db17537 225 #define FLASH_OPTKEY1 ((uint32_t)0xFBEAD9C8) /*!< Flash option key1 */
mbed_official 376:cb4d9db17537 226 #define FLASH_OPTKEY2 ((uint32_t)0x24252627) /*!< Flash option key2: used with FLASH_OPTKEY1 to
mbed_official 490:119543c9f674 227 unlock the write access to the option byte block */
mbed_official 376:cb4d9db17537 228 /**
mbed_official 376:cb4d9db17537 229 * @}
mbed_official 376:cb4d9db17537 230 */
mbed_official 490:119543c9f674 231
mbed_official 376:cb4d9db17537 232 /* CMSIS_Legacy */
mbed_official 376:cb4d9db17537 233
mbed_official 376:cb4d9db17537 234 #if defined ( __ICCARM__ )
mbed_official 376:cb4d9db17537 235 #define InterruptType_ACTLR_DISMCYCINT_Msk IntType_ACTLR_DISMCYCINT_Msk
mbed_official 376:cb4d9db17537 236 #endif
mbed_official 376:cb4d9db17537 237
mbed_official 376:cb4d9db17537 238 /**
mbed_official 376:cb4d9db17537 239 * @}
mbed_official 490:119543c9f674 240 */
mbed_official 376:cb4d9db17537 241
mbed_official 490:119543c9f674 242 /** @defgroup FLASH_Exported_Macros FLASH Exported Macros
mbed_official 490:119543c9f674 243 * @{
mbed_official 490:119543c9f674 244 */
mbed_official 376:cb4d9db17537 245
mbed_official 490:119543c9f674 246 /** @defgroup FLASH_Interrupt macros to handle FLASH interrupts
mbed_official 490:119543c9f674 247 * @{
mbed_official 490:119543c9f674 248 */
mbed_official 376:cb4d9db17537 249 /**
mbed_official 490:119543c9f674 250 * @brief Enable/Disable the specified FLASH interrupt.
mbed_official 490:119543c9f674 251 * @param __INTERRUPT__ : FLASH interrupt
mbed_official 376:cb4d9db17537 252 * This parameter can be any combination of the following values:
mbed_official 376:cb4d9db17537 253 * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt
mbed_official 376:cb4d9db17537 254 * @arg FLASH_IT_ERR: Error Interrupt
mbed_official 376:cb4d9db17537 255 * @retval none
mbed_official 490:119543c9f674 256 */
mbed_official 490:119543c9f674 257 #define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) ((FLASH->PECR) |= (__INTERRUPT__))
mbed_official 490:119543c9f674 258 #define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) ((FLASH->PECR) &= ~(uint32_t)(__INTERRUPT__))
mbed_official 376:cb4d9db17537 259
mbed_official 376:cb4d9db17537 260 /**
mbed_official 490:119543c9f674 261 * @brief Get the specified FLASH flag status.
mbed_official 376:cb4d9db17537 262 * @param __FLAG__: specifies the FLASH flag to check.
mbed_official 376:cb4d9db17537 263 * This parameter can be one of the following values:
mbed_official 490:119543c9f674 264 * @arg FLASH_FLAG_BSY : FLASH Busy flag
mbed_official 490:119543c9f674 265 * @arg FLASH_FLAG_EOP: FLASH End of Operation flag
mbed_official 490:119543c9f674 266 * @arg FLASH_FLAG_READY: FLASH Ready flag after low power mode
mbed_official 490:119543c9f674 267 * @arg FLASH_FLAG_ENDHV: FLASH End of high voltage flag
mbed_official 490:119543c9f674 268 * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
mbed_official 490:119543c9f674 269 * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
mbed_official 490:119543c9f674 270 * @arg FLASH_FLAG_SIZERR: FLASH Size error flag
mbed_official 490:119543c9f674 271 * @arg FLASH_FLAG_OPTVERR: FLASH Option validity error flag
mbed_official 490:119543c9f674 272 * @arg FLASH_FLAG_RDERR: FLASH Read protected error flag
mbed_official 490:119543c9f674 273 * @arg FLASH_FLAG_FWWERR: FLASH Fetch While Write Error flag
mbed_official 376:cb4d9db17537 274 * @arg FLASH_FLAG_NOTZEROERR: Not Zero area error flag
mbed_official 490:119543c9f674 275 * @retval The new state of __FLAG__ (SET or RESET).
mbed_official 376:cb4d9db17537 276 */
mbed_official 490:119543c9f674 277 #define __HAL_FLASH_GET_FLAG(__FLAG__) (((FLASH->SR) & (__FLAG__)) == (__FLAG__))
mbed_official 376:cb4d9db17537 278
mbed_official 376:cb4d9db17537 279 /**
mbed_official 490:119543c9f674 280 * @brief Clear the specified FLASH flag.
mbed_official 376:cb4d9db17537 281 * @param __FLAG__: specifies the FLASH flags to clear.
mbed_official 376:cb4d9db17537 282 * This parameter can be any combination of the following values:
mbed_official 490:119543c9f674 283 * @arg FLASH_FLAG_EOP: FLASH End of Operation flag
mbed_official 490:119543c9f674 284 * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
mbed_official 490:119543c9f674 285 * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
mbed_official 490:119543c9f674 286 * @arg FLASH_FLAG_SIZERR: FLASH size error flag
mbed_official 490:119543c9f674 287 * @arg FLASH_FLAG_OPTVERR: FLASH Option validity error flag
mbed_official 490:119543c9f674 288 * @arg FLASH_FLAG_RDERR: FLASH Read protected error flag
mbed_official 490:119543c9f674 289 * @arg FLASH_FLAG_FWWERR: FLASH Fetch While Write Error flag
mbed_official 490:119543c9f674 290 * @arg FLASH_FLAG_NOTZEROERR: Not Zero area error flag
mbed_official 376:cb4d9db17537 291 * @retval None
mbed_official 376:cb4d9db17537 292 */
mbed_official 376:cb4d9db17537 293 #define __HAL_FLASH_CLEAR_FLAG(__FLAG__) (FLASH->SR = (__FLAG__))
mbed_official 376:cb4d9db17537 294
mbed_official 376:cb4d9db17537 295 /**
mbed_official 376:cb4d9db17537 296 * @}
mbed_official 490:119543c9f674 297 */
mbed_official 490:119543c9f674 298
mbed_official 490:119543c9f674 299 /**
mbed_official 490:119543c9f674 300 * @}
mbed_official 490:119543c9f674 301 */
mbed_official 376:cb4d9db17537 302
mbed_official 376:cb4d9db17537 303 /* Include FLASH HAL Extension module */
mbed_official 376:cb4d9db17537 304 #include "stm32l0xx_hal_flash_ex.h"
mbed_official 376:cb4d9db17537 305 #include "stm32l0xx_hal_flash_ramfunc.h"
mbed_official 376:cb4d9db17537 306
mbed_official 376:cb4d9db17537 307 /* Exported functions ------------------------------------------------------- */
mbed_official 376:cb4d9db17537 308
mbed_official 490:119543c9f674 309 /** @defgroup FLASH_Exported_Functions FLASH Exported functions
mbed_official 490:119543c9f674 310 * @{
mbed_official 490:119543c9f674 311 */
mbed_official 490:119543c9f674 312
mbed_official 490:119543c9f674 313 /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions
mbed_official 490:119543c9f674 314 * @{
mbed_official 490:119543c9f674 315 */
mbed_official 490:119543c9f674 316
mbed_official 376:cb4d9db17537 317 /**
mbed_official 376:cb4d9db17537 318 * @brief FLASH memory functions that can be executed from FLASH.
mbed_official 490:119543c9f674 319 */
mbed_official 376:cb4d9db17537 320 /* Program operation functions ***********************************************/
mbed_official 376:cb4d9db17537 321 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data);
mbed_official 376:cb4d9db17537 322 HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data);
mbed_official 376:cb4d9db17537 323
mbed_official 490:119543c9f674 324 /* FLASH IRQ handler function ***********************************************/
mbed_official 376:cb4d9db17537 325 void HAL_FLASH_IRQHandler(void);
mbed_official 376:cb4d9db17537 326
mbed_official 490:119543c9f674 327 /* Callbacks in non blocking modes ******************************************/
mbed_official 376:cb4d9db17537 328 void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
mbed_official 376:cb4d9db17537 329 void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
mbed_official 490:119543c9f674 330
mbed_official 490:119543c9f674 331 /**
mbed_official 490:119543c9f674 332 * @}
mbed_official 490:119543c9f674 333 */
mbed_official 376:cb4d9db17537 334
mbed_official 490:119543c9f674 335 /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions
mbed_official 490:119543c9f674 336 * @{
mbed_official 490:119543c9f674 337 */
mbed_official 490:119543c9f674 338
mbed_official 490:119543c9f674 339 /* FLASH Memory Programming functions *****************************************/
mbed_official 376:cb4d9db17537 340 HAL_StatusTypeDef HAL_FLASH_Unlock(void);
mbed_official 376:cb4d9db17537 341 HAL_StatusTypeDef HAL_FLASH_Lock(void);
mbed_official 490:119543c9f674 342
mbed_official 490:119543c9f674 343 /* Option Bytes Programming functions *****************************************/
mbed_official 376:cb4d9db17537 344 HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
mbed_official 376:cb4d9db17537 345 HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
mbed_official 376:cb4d9db17537 346 HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);
mbed_official 376:cb4d9db17537 347
mbed_official 490:119543c9f674 348 /**
mbed_official 490:119543c9f674 349 * @}
mbed_official 490:119543c9f674 350 */
mbed_official 490:119543c9f674 351
mbed_official 490:119543c9f674 352 /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions
mbed_official 490:119543c9f674 353 * @{
mbed_official 490:119543c9f674 354 */
mbed_official 490:119543c9f674 355 /* Peripheral State methods **************************************************/
mbed_official 490:119543c9f674 356 uint32_t HAL_FLASH_GetError(void);
mbed_official 490:119543c9f674 357
mbed_official 490:119543c9f674 358 /**
mbed_official 490:119543c9f674 359 * @}
mbed_official 490:119543c9f674 360 */
mbed_official 490:119543c9f674 361
mbed_official 490:119543c9f674 362 /**
mbed_official 490:119543c9f674 363 * @}
mbed_official 490:119543c9f674 364 */
mbed_official 490:119543c9f674 365
mbed_official 490:119543c9f674 366 /** @defgroup FLASH_Private_Macros FLASH Private Macros
mbed_official 490:119543c9f674 367 * @{
mbed_official 490:119543c9f674 368 */
mbed_official 490:119543c9f674 369
mbed_official 490:119543c9f674 370 #define IS_FLASH_TYPEPROGRAM(VALUE) ((VALUE) == FLASH_TYPEPROGRAM_WORD)
mbed_official 376:cb4d9db17537 371
mbed_official 490:119543c9f674 372 #define IS_FLASH_LATENCY(__LATENCY__) (((__LATENCY__) == FLASH_LATENCY_0) || \
mbed_official 490:119543c9f674 373 ((__LATENCY__) == FLASH_LATENCY_1))
mbed_official 490:119543c9f674 374 /**
mbed_official 490:119543c9f674 375 * @}
mbed_official 490:119543c9f674 376 */
mbed_official 490:119543c9f674 377
mbed_official 490:119543c9f674 378
mbed_official 490:119543c9f674 379 /** @defgroup FLASH_Private_Functions FLASH Private functions
mbed_official 490:119543c9f674 380 * @{
mbed_official 490:119543c9f674 381 */
mbed_official 490:119543c9f674 382
mbed_official 490:119543c9f674 383 /**
mbed_official 490:119543c9f674 384 * @brief Function used internally by HAL FLASH driver.
mbed_official 490:119543c9f674 385 */
mbed_official 376:cb4d9db17537 386 HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
mbed_official 490:119543c9f674 387 void FLASH_ErasePage(uint32_t Page_Address);
mbed_official 490:119543c9f674 388 /**
mbed_official 490:119543c9f674 389 * @}
mbed_official 490:119543c9f674 390 */
mbed_official 490:119543c9f674 391
mbed_official 490:119543c9f674 392 /**
mbed_official 490:119543c9f674 393 * @}
mbed_official 490:119543c9f674 394 */
mbed_official 490:119543c9f674 395
mbed_official 490:119543c9f674 396 /**
mbed_official 490:119543c9f674 397 * @}
mbed_official 490:119543c9f674 398 */
mbed_official 376:cb4d9db17537 399
mbed_official 376:cb4d9db17537 400 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 401 }
mbed_official 376:cb4d9db17537 402 #endif
mbed_official 376:cb4d9db17537 403
mbed_official 376:cb4d9db17537 404 #endif /* __STM32L0XX_HAL_FLASH_H */
mbed_official 376:cb4d9db17537 405
mbed_official 490:119543c9f674 406 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
mbed_official 376:cb4d9db17537 407