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:
Thu Nov 09 11:14:10 2017 +0000
Revision:
157:e7ca05fa8600
Child:
167:84c0a372a020
Release 155 of the mbed library.

Who changed what in which revision?

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