mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

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

Committer:
mbed_official
Date:
Mon Nov 03 10:45:07 2014 +0000
Revision:
382:ee426a420dbb
Parent:
targets/cmsis/TARGET_STM/TARGET_DISCO_L053C8/stm32l0xx_hal_flash.h@376:cb4d9db17537
Child:
489:119543c9f674
Synchronized with git revision d54467eb07f62efd9ccdf44f1ede7fe1c1b0cf83

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

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 376:cb4d9db17537 5 * @version V1.1.0
mbed_official 376:cb4d9db17537 6 * @date 18-June-2014
mbed_official 376:cb4d9db17537 7 * @brief This file contains all the functions prototypes for the FLASH
mbed_official 376:cb4d9db17537 8 * firmware library.
mbed_official 376:cb4d9db17537 9 ******************************************************************************
mbed_official 376:cb4d9db17537 10 * @attention
mbed_official 376:cb4d9db17537 11 *
mbed_official 376:cb4d9db17537 12 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 376:cb4d9db17537 13 *
mbed_official 376:cb4d9db17537 14 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 376:cb4d9db17537 15 * are permitted provided that the following conditions are met:
mbed_official 376:cb4d9db17537 16 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 376:cb4d9db17537 17 * this list of conditions and the following disclaimer.
mbed_official 376:cb4d9db17537 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 376:cb4d9db17537 19 * this list of conditions and the following disclaimer in the documentation
mbed_official 376:cb4d9db17537 20 * and/or other materials provided with the distribution.
mbed_official 376:cb4d9db17537 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 376:cb4d9db17537 22 * may be used to endorse or promote products derived from this software
mbed_official 376:cb4d9db17537 23 * without specific prior written permission.
mbed_official 376:cb4d9db17537 24 *
mbed_official 376:cb4d9db17537 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 376:cb4d9db17537 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 376:cb4d9db17537 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 376:cb4d9db17537 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 376:cb4d9db17537 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 376:cb4d9db17537 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 376:cb4d9db17537 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 376:cb4d9db17537 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 376:cb4d9db17537 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 376:cb4d9db17537 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 376:cb4d9db17537 35 *
mbed_official 376:cb4d9db17537 36 ******************************************************************************
mbed_official 376:cb4d9db17537 37 */
mbed_official 376:cb4d9db17537 38
mbed_official 376:cb4d9db17537 39 /* Define to prevent recursive inclusion -------------------------------------*/
mbed_official 376:cb4d9db17537 40 #ifndef __STM32L0XX_HAL_FLASH_H
mbed_official 376:cb4d9db17537 41 #define __STM32L0XX_HAL_FLASH_H
mbed_official 376:cb4d9db17537 42
mbed_official 376:cb4d9db17537 43 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 44 extern "C" {
mbed_official 376:cb4d9db17537 45 #endif
mbed_official 376:cb4d9db17537 46
mbed_official 376:cb4d9db17537 47 /* Includes ------------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 48 #include "stm32l0xx_hal_def.h"
mbed_official 376:cb4d9db17537 49
mbed_official 376:cb4d9db17537 50 /** @addtogroup STM32L0xx_HAL_Driver
mbed_official 376:cb4d9db17537 51 * @{
mbed_official 376:cb4d9db17537 52 */
mbed_official 376:cb4d9db17537 53
mbed_official 376:cb4d9db17537 54 /** @addtogroup FLASH
mbed_official 376:cb4d9db17537 55 * @{
mbed_official 376:cb4d9db17537 56 */
mbed_official 376:cb4d9db17537 57
mbed_official 376:cb4d9db17537 58 /* Exported types ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 59
mbed_official 376:cb4d9db17537 60 /**
mbed_official 376:cb4d9db17537 61 * @brief FLASH Error structure definition
mbed_official 376:cb4d9db17537 62 */
mbed_official 376:cb4d9db17537 63 typedef enum
mbed_official 376:cb4d9db17537 64 {
mbed_official 376:cb4d9db17537 65 FLASH_ERROR_RD = 0x01,
mbed_official 376:cb4d9db17537 66 FLASH_ERROR_ENDHV = 0x02,
mbed_official 376:cb4d9db17537 67 FLASH_ERROR_SIZE = 0x04,
mbed_official 376:cb4d9db17537 68 FLASH_ERROR_PGA = 0x08,
mbed_official 376:cb4d9db17537 69 FLASH_ERROR_WRP = 0x10,
mbed_official 376:cb4d9db17537 70 FLASH_ERROR_OPTV = 0x20,
mbed_official 376:cb4d9db17537 71 FLASH_ERROR_NOTZERO = 0x40
mbed_official 376:cb4d9db17537 72 }FLASH_ErrorTypeDef;
mbed_official 376:cb4d9db17537 73
mbed_official 376:cb4d9db17537 74 /**
mbed_official 376:cb4d9db17537 75 * @brief FLASH Procedure structure definition
mbed_official 376:cb4d9db17537 76 */
mbed_official 376:cb4d9db17537 77 typedef enum
mbed_official 376:cb4d9db17537 78 {
mbed_official 376:cb4d9db17537 79 FLASH_PROC_NONE = 0,
mbed_official 376:cb4d9db17537 80 FLASH_PROC_PAGEERASE,
mbed_official 376:cb4d9db17537 81 FLASH_PROC_PROGRAM
mbed_official 376:cb4d9db17537 82 } FLASH_ProcedureTypeDef;
mbed_official 376:cb4d9db17537 83
mbed_official 376:cb4d9db17537 84 /**
mbed_official 376:cb4d9db17537 85 * @brief FLASH Erase structure definition
mbed_official 376:cb4d9db17537 86 */
mbed_official 376:cb4d9db17537 87 typedef struct
mbed_official 376:cb4d9db17537 88 {
mbed_official 376:cb4d9db17537 89 uint32_t TypeErase; /*!< TypeErase: Mass erase or sector Erase.
mbed_official 376:cb4d9db17537 90 This parameter can be a value of @ref FLASH_Type_Erase */
mbed_official 376:cb4d9db17537 91
mbed_official 376:cb4d9db17537 92 uint32_t Page; /*!< Sector: Initial FLASH sector to erase when Mass erase is disabled
mbed_official 376:cb4d9db17537 93 This parameter must be an address value between 0x08000000 and 0x0800FFFF */
mbed_official 376:cb4d9db17537 94
mbed_official 376:cb4d9db17537 95 uint32_t NbPages; /*!< NbSectors: Number of sectors to be erased.
mbed_official 376:cb4d9db17537 96 This parameter must be a value between 1 and (max number of sectors - initial sector value) */
mbed_official 376:cb4d9db17537 97
mbed_official 376:cb4d9db17537 98 } FLASH_EraseInitTypeDef;
mbed_official 376:cb4d9db17537 99
mbed_official 376:cb4d9db17537 100 /**
mbed_official 376:cb4d9db17537 101 * @brief FLASH Option Bytes PROGRAM structure definition
mbed_official 376:cb4d9db17537 102 */
mbed_official 376:cb4d9db17537 103 typedef struct
mbed_official 376:cb4d9db17537 104 {
mbed_official 376:cb4d9db17537 105 uint32_t OptionType; /*!< OptionType: Option byte to be configured.
mbed_official 376:cb4d9db17537 106 This parameter can be a value of @ref FLASH_Option_Type */
mbed_official 376:cb4d9db17537 107
mbed_official 376:cb4d9db17537 108 uint32_t WRPState; /*!< WRPState: Write protection activation or deactivation.
mbed_official 376:cb4d9db17537 109 This parameter can be a value of @ref FLASH_WRP_State */
mbed_official 376:cb4d9db17537 110
mbed_official 376:cb4d9db17537 111 uint32_t WRPSector; /*!< WRPSector: specifies the sector(s) to be write protected.
mbed_official 376:cb4d9db17537 112 The value of this parameter depends on device used within the same series */
mbed_official 376:cb4d9db17537 113
mbed_official 376:cb4d9db17537 114 uint32_t RDPLevel; /*!< RDPLevel: Set the read protection level..
mbed_official 376:cb4d9db17537 115 This parameter can be a value of @ref FLASH_Option_Bytes_Read_Protection */
mbed_official 376:cb4d9db17537 116
mbed_official 376:cb4d9db17537 117 uint32_t BORLevel; /*!< BORLevel: Set the BOR Level.
mbed_official 376:cb4d9db17537 118 This parameter can be a value of @ref FLASH_Option_Bytes_BOR_Level */
mbed_official 376:cb4d9db17537 119 uint8_t USERConfig; /*!< USERConfig: Program the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY.
mbed_official 376:cb4d9db17537 120 This parameter can be a combination of @ref FLASH_Option_Bytes_IWatchdog, @ref FLASH_Option_Bytes_nRST_STOP and @ref FLASH_Option_Bytes_nRST_STDBY*/
mbed_official 376:cb4d9db17537 121 } FLASH_OBProgramInitTypeDef;
mbed_official 376:cb4d9db17537 122
mbed_official 376:cb4d9db17537 123 /**
mbed_official 376:cb4d9db17537 124 * @brief FLASH handle Structure definition
mbed_official 376:cb4d9db17537 125 */
mbed_official 376:cb4d9db17537 126 typedef struct
mbed_official 376:cb4d9db17537 127 {
mbed_official 376:cb4d9db17537 128 __IO FLASH_ProcedureTypeDef ProcedureOnGoing; /*Internal variable to indicate which procedure is ongoing or not in IT context*/
mbed_official 376:cb4d9db17537 129
mbed_official 376:cb4d9db17537 130 __IO uint32_t NbPagesToErase; /*Internal variable to save the remaining sectors to erase in IT context*/
mbed_official 376:cb4d9db17537 131
mbed_official 376:cb4d9db17537 132 __IO uint32_t Page; /*Internal variable to define the current sector which is erasing*/
mbed_official 376:cb4d9db17537 133
mbed_official 376:cb4d9db17537 134 __IO uint32_t Address; /*Internal variable to save address selected for program*/
mbed_official 376:cb4d9db17537 135
mbed_official 376:cb4d9db17537 136 HAL_LockTypeDef Lock; /* FLASH locking object */
mbed_official 376:cb4d9db17537 137
mbed_official 376:cb4d9db17537 138 __IO FLASH_ErrorTypeDef ErrorCode; /* FLASH error code */
mbed_official 376:cb4d9db17537 139
mbed_official 376:cb4d9db17537 140 }FLASH_ProcessTypeDef;
mbed_official 376:cb4d9db17537 141
mbed_official 376:cb4d9db17537 142 /*Variables used for Erase sectors under interruption*/
mbed_official 376:cb4d9db17537 143 extern FLASH_ProcessTypeDef pFlash;
mbed_official 376:cb4d9db17537 144
mbed_official 376:cb4d9db17537 145 /* Exported constants --------------------------------------------------------*/
mbed_official 376:cb4d9db17537 146
mbed_official 376:cb4d9db17537 147 /** @defgroup FLASH_Exported_Constants FLASH Exported Constants
mbed_official 376:cb4d9db17537 148 * @{
mbed_official 376:cb4d9db17537 149 */
mbed_official 376:cb4d9db17537 150
mbed_official 376:cb4d9db17537 151 /** @defgroup FLASH_Type_Erase
mbed_official 376:cb4d9db17537 152 * @{
mbed_official 376:cb4d9db17537 153 */
mbed_official 376:cb4d9db17537 154 #define TYPEERASE_PAGEERASE ((uint32_t)0x00) /*!<Page erase only*/
mbed_official 376:cb4d9db17537 155 #define TYPEERASE_WORD ((uint32_t)0x01) /*!<Data erase word activation*/
mbed_official 376:cb4d9db17537 156
mbed_official 376:cb4d9db17537 157 #define IS_TYPEERASE(VALUE)(((VALUE) == TYPEERASE_PAGEERASE) || \
mbed_official 376:cb4d9db17537 158 ((VALUE) == TYPEERASE_WORD))
mbed_official 376:cb4d9db17537 159 /**
mbed_official 376:cb4d9db17537 160 * @}
mbed_official 376:cb4d9db17537 161 */
mbed_official 376:cb4d9db17537 162
mbed_official 376:cb4d9db17537 163 /** @defgroup FLASH_Type_Program
mbed_official 376:cb4d9db17537 164 * @{
mbed_official 376:cb4d9db17537 165 */
mbed_official 376:cb4d9db17537 166 #define TYPEPROGRAM_BYTE ((uint32_t)0x00) /*!<Program byte (8-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 167 #define TYPEPROGRAM_HALFWORD ((uint32_t)0x01) /*!<Program a half-word (16-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 168 #define TYPEPROGRAM_WORD ((uint32_t)0x02) /*!<Program a word (32-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 169 #define TYPEPROGRAM_FASTBYTE ((uint32_t)0x04) /*!<Fast Program byte (8-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 170 #define TYPEPROGRAM_FASTHALFWORD ((uint32_t)0x08) /*!<Fast Program a half-word (16-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 171 #define TYPEPROGRAM_FASTWORD ((uint32_t)0x10) /*!<Fast Program a word (32-bit) at a specified address.*/
mbed_official 376:cb4d9db17537 172
mbed_official 376:cb4d9db17537 173 #define IS_TYPEPROGRAM(VALUE)(((VALUE) == TYPEPROGRAM_BYTE) || \
mbed_official 376:cb4d9db17537 174 ((VALUE) == TYPEPROGRAM_HALFWORD) || \
mbed_official 376:cb4d9db17537 175 ((VALUE) == TYPEPROGRAM_WORD) || \
mbed_official 376:cb4d9db17537 176 ((VALUE) == TYPEPROGRAM_FASTBYTE) || \
mbed_official 376:cb4d9db17537 177 ((VALUE) == TYPEPROGRAM_FASTHALFWORD) || \
mbed_official 376:cb4d9db17537 178 ((VALUE) == TYPEPROGRAM_FASTWORD))
mbed_official 376:cb4d9db17537 179 /**
mbed_official 376:cb4d9db17537 180 * @}
mbed_official 376:cb4d9db17537 181 */
mbed_official 376:cb4d9db17537 182
mbed_official 376:cb4d9db17537 183 /** @defgroup FLASH_WRP_State
mbed_official 376:cb4d9db17537 184 * @{
mbed_official 376:cb4d9db17537 185 */
mbed_official 376:cb4d9db17537 186 #define WRPSTATE_DISABLE ((uint32_t)0x00) /*!<Disable the write protection of the desired bank 1 sectors*/
mbed_official 376:cb4d9db17537 187 #define WRPSTATE_ENABLE ((uint32_t)0x01) /*!<Enable the write protection of the desired bank 1 sectors*/
mbed_official 376:cb4d9db17537 188
mbed_official 376:cb4d9db17537 189 #define IS_WRPSTATE(VALUE)(((VALUE) == WRPSTATE_DISABLE) || \
mbed_official 376:cb4d9db17537 190 ((VALUE) == WRPSTATE_ENABLE))
mbed_official 376:cb4d9db17537 191 /**
mbed_official 376:cb4d9db17537 192 * @}
mbed_official 376:cb4d9db17537 193 */
mbed_official 376:cb4d9db17537 194
mbed_official 376:cb4d9db17537 195 /** @defgroup FLASH_Option_Type
mbed_official 376:cb4d9db17537 196 * @{
mbed_official 376:cb4d9db17537 197 */
mbed_official 376:cb4d9db17537 198 #define OPTIONBYTE_WRP ((uint32_t)0x01) /*!<WRP option byte configuration*/
mbed_official 376:cb4d9db17537 199 #define OPTIONBYTE_RDP ((uint32_t)0x02) /*!<RDP option byte configuration*/
mbed_official 376:cb4d9db17537 200 #define OPTIONBYTE_USER ((uint32_t)0x04) /*!<USER option byte configuration*/
mbed_official 376:cb4d9db17537 201 #define OPTIONBYTE_BOR ((uint32_t)0x08) /*!<BOR option byte configuration*/
mbed_official 376:cb4d9db17537 202
mbed_official 376:cb4d9db17537 203 #define IS_OPTIONBYTE(VALUE)(((VALUE) < (OPTIONBYTE_WRP|OPTIONBYTE_RDP|OPTIONBYTE_USER|OPTIONBYTE_BOR)))
mbed_official 376:cb4d9db17537 204 /**
mbed_official 376:cb4d9db17537 205 * @}
mbed_official 376:cb4d9db17537 206 */
mbed_official 376:cb4d9db17537 207
mbed_official 376:cb4d9db17537 208 /** @defgroup FLASH_Interrupts
mbed_official 376:cb4d9db17537 209 * @{
mbed_official 376:cb4d9db17537 210 */
mbed_official 376:cb4d9db17537 211 #define FLASH_IT_EOP FLASH_PECR_EOPIE /*!< End of programming interrupt source */
mbed_official 376:cb4d9db17537 212 #define FLASH_IT_ERR FLASH_PECR_ERRIE /*!< Error interrupt source */
mbed_official 376:cb4d9db17537 213 #define IS_FLASH_IT(IT) ((((IT) & (uint32_t)0xFFFCFFFF) == 0x00000000) && (((IT) != 0x00000000)))
mbed_official 376:cb4d9db17537 214 /**
mbed_official 376:cb4d9db17537 215 * @}
mbed_official 376:cb4d9db17537 216 */
mbed_official 376:cb4d9db17537 217
mbed_official 376:cb4d9db17537 218 /** @defgroup FLASH_Address
mbed_official 376:cb4d9db17537 219 * @{
mbed_official 376:cb4d9db17537 220 */
mbed_official 376:cb4d9db17537 221 #define IS_FLASH_DATA_ADDRESS(ADDRESS) (((ADDRESS) >= DATA_EEPROM_BASE) && ((ADDRESS) <= DATA_EEPROM_END)) /* 2K */
mbed_official 376:cb4d9db17537 222 #define IS_FLASH_PROGRAM_ADDRESS(ADDRESS) (((ADDRESS) >= FLASH_BASE) && ((ADDRESS) <= FLASH_END)) /* 64K */
mbed_official 376:cb4d9db17537 223 #define IS_NBPAGES(PAGES) (((PAGES) >= 1) && ((PAGES) <= 512)) /* 512 pages from page0 to page 511 */
mbed_official 376:cb4d9db17537 224 /**
mbed_official 376:cb4d9db17537 225 * @}
mbed_official 376:cb4d9db17537 226 */
mbed_official 376:cb4d9db17537 227
mbed_official 376:cb4d9db17537 228 /** @defgroup FLASH_Option_Bytes_Write_Protection
mbed_official 376:cb4d9db17537 229 * @{
mbed_official 376:cb4d9db17537 230 */
mbed_official 376:cb4d9db17537 231 #define OB_WRP_Pages0to31 ((uint32_t)0x00000001) /* Write protection of Sector0 */
mbed_official 376:cb4d9db17537 232 #define OB_WRP_Pages32to63 ((uint32_t)0x00000002) /* Write protection of Sector1 */
mbed_official 376:cb4d9db17537 233 #define OB_WRP_Pages64to95 ((uint32_t)0x00000004) /* Write protection of Sector2 */
mbed_official 376:cb4d9db17537 234 #define OB_WRP_Pages96to127 ((uint32_t)0x00000008) /* Write protection of Sector3 */
mbed_official 376:cb4d9db17537 235 #define OB_WRP_Pages128to159 ((uint32_t)0x00000010) /* Write protection of Sector4 */
mbed_official 376:cb4d9db17537 236 #define OB_WRP_Pages160to191 ((uint32_t)0x00000020) /* Write protection of Sector5 */
mbed_official 376:cb4d9db17537 237 #define OB_WRP_Pages192to223 ((uint32_t)0x00000040) /* Write protection of Sector6 */
mbed_official 376:cb4d9db17537 238 #define OB_WRP_Pages224to255 ((uint32_t)0x00000080) /* Write protection of Sector7 */
mbed_official 376:cb4d9db17537 239 #define OB_WRP_Pages256to287 ((uint32_t)0x00000100) /* Write protection of Sector8 */
mbed_official 376:cb4d9db17537 240 #define OB_WRP_Pages288to319 ((uint32_t)0x00000200) /* Write protection of Sector9 */
mbed_official 376:cb4d9db17537 241 #define OB_WRP_Pages320to351 ((uint32_t)0x00000400) /* Write protection of Sector10 */
mbed_official 376:cb4d9db17537 242 #define OB_WRP_Pages352to383 ((uint32_t)0x00000800) /* Write protection of Sector11 */
mbed_official 376:cb4d9db17537 243 #define OB_WRP_Pages384to415 ((uint32_t)0x00001000) /* Write protection of Sector12 */
mbed_official 376:cb4d9db17537 244 #define OB_WRP_Pages416to447 ((uint32_t)0x00002000) /* Write protection of Sector13 */
mbed_official 376:cb4d9db17537 245 #define OB_WRP_Pages448to479 ((uint32_t)0x00004000) /* Write protection of Sector14 */
mbed_official 376:cb4d9db17537 246 #define OB_WRP_Pages480to511 ((uint32_t)0x00008000) /* Write protection of Sector15 */
mbed_official 376:cb4d9db17537 247
mbed_official 376:cb4d9db17537 248 #define OB_WRP_AllPages ((uint32_t)0x0000FFFF) /*!< Write protection of all Sectors */
mbed_official 376:cb4d9db17537 249
mbed_official 376:cb4d9db17537 250 #define IS_OB_WRP(PAGE) (((PAGE) != 0x0000000))
mbed_official 376:cb4d9db17537 251 /**
mbed_official 376:cb4d9db17537 252 * @}
mbed_official 376:cb4d9db17537 253 */
mbed_official 376:cb4d9db17537 254
mbed_official 376:cb4d9db17537 255 /** @defgroup FLASH_Option_Bytes_Read_Protection
mbed_official 376:cb4d9db17537 256 * @{
mbed_official 376:cb4d9db17537 257 */
mbed_official 376:cb4d9db17537 258
mbed_official 376:cb4d9db17537 259 /**
mbed_official 376:cb4d9db17537 260 * @brief FLASH_Option_Bytes_Read_Protection
mbed_official 376:cb4d9db17537 261 */
mbed_official 376:cb4d9db17537 262 #define OB_RDP_Level_0 ((uint8_t)0xAA)
mbed_official 376:cb4d9db17537 263 #define OB_RDP_Level_1 ((uint8_t)0xBB)
mbed_official 376:cb4d9db17537 264 /*#define OB_RDP_Level_2 ((uint8_t)0xCC)*/ /* Warning: When enabling read protection level 2
mbed_official 376:cb4d9db17537 265 it's no more possible to go back to level 1 or 0 */
mbed_official 376:cb4d9db17537 266
mbed_official 376:cb4d9db17537 267 #define IS_OB_RDP(LEVEL) (((LEVEL) == OB_RDP_Level_0)||\
mbed_official 376:cb4d9db17537 268 ((LEVEL) == OB_RDP_Level_1))/*||\
mbed_official 376:cb4d9db17537 269 ((LEVEL) == OB_RDP_Level_2))*/
mbed_official 376:cb4d9db17537 270 /**
mbed_official 376:cb4d9db17537 271 * @}
mbed_official 376:cb4d9db17537 272 */
mbed_official 376:cb4d9db17537 273
mbed_official 376:cb4d9db17537 274 /** @defgroup FLASH_Option_Bytes_IWatchdog
mbed_official 376:cb4d9db17537 275 * @{
mbed_official 376:cb4d9db17537 276 */
mbed_official 376:cb4d9db17537 277 #define OB_IWDG_SW ((uint8_t)0x10) /*!< Software WDG selected */
mbed_official 376:cb4d9db17537 278 #define OB_IWDG_HW ((uint8_t)0x00) /*!< Hardware WDG selected */
mbed_official 376:cb4d9db17537 279 #define IS_OB_IWDG_SOURCE(SOURCE) (((SOURCE) == OB_IWDG_SW) || ((SOURCE) == OB_IWDG_HW))
mbed_official 376:cb4d9db17537 280 /**
mbed_official 376:cb4d9db17537 281 * @}
mbed_official 376:cb4d9db17537 282 */
mbed_official 376:cb4d9db17537 283
mbed_official 376:cb4d9db17537 284 /** @defgroup FLASH_Option_Bytes_nRST_STOP
mbed_official 376:cb4d9db17537 285 * @{
mbed_official 376:cb4d9db17537 286 */
mbed_official 376:cb4d9db17537 287 #define OB_STOP_NoRST ((uint8_t)0x20) /*!< No reset generated when entering in STOP */
mbed_official 376:cb4d9db17537 288 #define OB_STOP_RST ((uint8_t)0x00) /*!< Reset generated when entering in STOP */
mbed_official 376:cb4d9db17537 289 #define IS_OB_STOP_SOURCE(SOURCE) (((SOURCE) == OB_STOP_NoRST) || ((SOURCE) == OB_STOP_RST))
mbed_official 376:cb4d9db17537 290 /**
mbed_official 376:cb4d9db17537 291 * @}
mbed_official 376:cb4d9db17537 292 */
mbed_official 376:cb4d9db17537 293
mbed_official 376:cb4d9db17537 294 /** @defgroup FLASH_Option_Bytes_nRST_STDBY
mbed_official 376:cb4d9db17537 295 * @{
mbed_official 376:cb4d9db17537 296 */
mbed_official 376:cb4d9db17537 297 #define OB_STDBY_NoRST ((uint8_t)0x40) /*!< No reset generated when entering in STANDBY */
mbed_official 376:cb4d9db17537 298 #define OB_STDBY_RST ((uint8_t)0x00) /*!< Reset generated when entering in STANDBY */
mbed_official 376:cb4d9db17537 299 #define IS_OB_STDBY_SOURCE(SOURCE) (((SOURCE) == OB_STDBY_NoRST) || ((SOURCE) == OB_STDBY_RST))
mbed_official 376:cb4d9db17537 300 /**
mbed_official 376:cb4d9db17537 301 * @}
mbed_official 376:cb4d9db17537 302 */
mbed_official 376:cb4d9db17537 303
mbed_official 376:cb4d9db17537 304 /** @defgroup FLASH_Option_Bytes_BOR_Level
mbed_official 376:cb4d9db17537 305 * @{
mbed_official 376:cb4d9db17537 306 */
mbed_official 376:cb4d9db17537 307
mbed_official 376:cb4d9db17537 308 #define OB_BOR_OFF ((uint8_t)0x00) /*!< BOR is disabled at power down, the reset is asserted when the VDD
mbed_official 376:cb4d9db17537 309 power supply reaches the PDR(Power Down Reset) threshold (1.5V) */
mbed_official 376:cb4d9db17537 310 #define OB_BOR_LEVEL1 ((uint8_t)0x08) /*!< BOR Reset threshold levels for 1.7V - 1.8V VDD power supply */
mbed_official 376:cb4d9db17537 311 #define OB_BOR_LEVEL2 ((uint8_t)0x09) /*!< BOR Reset threshold levels for 1.9V - 2.0V VDD power supply */
mbed_official 376:cb4d9db17537 312 #define OB_BOR_LEVEL3 ((uint8_t)0x0A) /*!< BOR Reset threshold levels for 2.3V - 2.4V VDD power supply */
mbed_official 376:cb4d9db17537 313 #define OB_BOR_LEVEL4 ((uint8_t)0x0B) /*!< BOR Reset threshold levels for 2.55V - 2.65V VDD power supply */
mbed_official 376:cb4d9db17537 314 #define OB_BOR_LEVEL5 ((uint8_t)0x0C) /*!< BOR Reset threshold levels for 2.8V - 2.9V VDD power supply */
mbed_official 376:cb4d9db17537 315
mbed_official 376:cb4d9db17537 316 #define IS_OB_BOR_LEVEL(LEVEL) (((LEVEL) == OB_BOR_OFF) || \
mbed_official 376:cb4d9db17537 317 ((LEVEL) == OB_BOR_LEVEL1) || \
mbed_official 376:cb4d9db17537 318 ((LEVEL) == OB_BOR_LEVEL2) || \
mbed_official 376:cb4d9db17537 319 ((LEVEL) == OB_BOR_LEVEL3) || \
mbed_official 376:cb4d9db17537 320 ((LEVEL) == OB_BOR_LEVEL4) || \
mbed_official 376:cb4d9db17537 321 ((LEVEL) == OB_BOR_LEVEL5))
mbed_official 376:cb4d9db17537 322
mbed_official 376:cb4d9db17537 323 /**
mbed_official 376:cb4d9db17537 324 * @}
mbed_official 376:cb4d9db17537 325 */
mbed_official 376:cb4d9db17537 326
mbed_official 376:cb4d9db17537 327 /** @defgroup FLASH_Flags
mbed_official 376:cb4d9db17537 328 * @{
mbed_official 376:cb4d9db17537 329 */
mbed_official 376:cb4d9db17537 330
mbed_official 376:cb4d9db17537 331 #define FLASH_FLAG_BSY FLASH_SR_BSY /*!< FLASH Busy flag */
mbed_official 376:cb4d9db17537 332 #define FLASH_FLAG_EOP FLASH_SR_EOP /*!< FLASH End of Programming flag */
mbed_official 376:cb4d9db17537 333 #define FLASH_FLAG_ENDHV FLASH_SR_ENHV /*!< FLASH End of High Voltage flag */
mbed_official 376:cb4d9db17537 334 #define FLASH_FLAG_READY FLASH_SR_READY /*!< FLASH Ready flag after low power mode */
mbed_official 376:cb4d9db17537 335 #define FLASH_FLAG_WRPERR FLASH_SR_WRPERR /*!< FLASH Write protected error flag */
mbed_official 376:cb4d9db17537 336 #define FLASH_FLAG_PGAERR FLASH_SR_PGAERR /*!< FLASH Programming Alignment error flag */
mbed_official 376:cb4d9db17537 337 #define FLASH_FLAG_SIZERR FLASH_SR_SIZERR /*!< FLASH Size error flag */
mbed_official 376:cb4d9db17537 338 #define FLASH_FLAG_OPTVERR FLASH_SR_OPTVERR /*!< FLASH Option Validity error flag */
mbed_official 376:cb4d9db17537 339 #define FLASH_FLAG_RDERR FLASH_SR_RDERR /*!< FLASH Read protected error flag */
mbed_official 376:cb4d9db17537 340 #define FLASH_FLAG_NOTZEROERR FLASH_SR_NOTZEROERR /*!< FLASH Read protected error flag */
mbed_official 376:cb4d9db17537 341
mbed_official 376:cb4d9db17537 342 #define IS_FLASH_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFED0FF) == 0x00000000) && ((FLAG) != 0x00000000))
mbed_official 376:cb4d9db17537 343
mbed_official 376:cb4d9db17537 344 #define IS_FLASH_GET_FLAG(FLAG) (((FLAG) == FLASH_FLAG_BSY) || ((FLAG) == FLASH_FLAG_EOP) || \
mbed_official 376:cb4d9db17537 345 ((FLAG) == FLASH_FLAG_ENDHV) || ((FLAG) == FLASH_FLAG_READY ) || \
mbed_official 376:cb4d9db17537 346 ((FLAG) == FLASH_FLAG_WRPERR) || ((FLAG) == FLASH_FLAG_PGAERR ) || \
mbed_official 376:cb4d9db17537 347 ((FLAG) == FLASH_FLAG_SIZERR) || ((FLAG) == FLASH_FLAG_OPTVERR) || \
mbed_official 376:cb4d9db17537 348 ((FLAG) == FLASH_FLAG_RDERR) || ((FLAG) == FLASH_FLAG_NOTZEROERR))
mbed_official 376:cb4d9db17537 349 /**
mbed_official 376:cb4d9db17537 350 * @}
mbed_official 376:cb4d9db17537 351 */
mbed_official 376:cb4d9db17537 352
mbed_official 376:cb4d9db17537 353 /** @defgroup FLASH_Keys
mbed_official 376:cb4d9db17537 354 * @{
mbed_official 376:cb4d9db17537 355 */
mbed_official 376:cb4d9db17537 356
mbed_official 376:cb4d9db17537 357 #define FLASH_PDKEY1 ((uint32_t)0x04152637) /*!< Flash power down key1 */
mbed_official 376:cb4d9db17537 358 #define FLASH_PDKEY2 ((uint32_t)0xFAFBFCFD) /*!< Flash power down key2: used with FLASH_PDKEY1
mbed_official 376:cb4d9db17537 359 to unlock the RUN_PD bit in FLASH_ACR */
mbed_official 376:cb4d9db17537 360
mbed_official 376:cb4d9db17537 361 #define FLASH_PEKEY1 ((uint32_t)0x89ABCDEF) /*!< Flash program erase key1 */
mbed_official 376:cb4d9db17537 362 #define FLASH_PEKEY2 ((uint32_t)0x02030405) /*!< Flash program erase key: used with FLASH_PEKEY2
mbed_official 376:cb4d9db17537 363 to unlock the write access to the FLASH_PECR register and
mbed_official 376:cb4d9db17537 364 data EEPROM */
mbed_official 376:cb4d9db17537 365
mbed_official 376:cb4d9db17537 366 #define FLASH_PRGKEY1 ((uint32_t)0x8C9DAEBF) /*!< Flash program memory key1 */
mbed_official 376:cb4d9db17537 367 #define FLASH_PRGKEY2 ((uint32_t)0x13141516) /*!< Flash program memory key2: used with FLASH_PRGKEY2
mbed_official 376:cb4d9db17537 368 to unlock the program memory */
mbed_official 376:cb4d9db17537 369
mbed_official 376:cb4d9db17537 370 #define FLASH_OPTKEY1 ((uint32_t)0xFBEAD9C8) /*!< Flash option key1 */
mbed_official 376:cb4d9db17537 371 #define FLASH_OPTKEY2 ((uint32_t)0x24252627) /*!< Flash option key2: used with FLASH_OPTKEY1 to
mbed_official 376:cb4d9db17537 372 unlock the write access to the option byte block */
mbed_official 376:cb4d9db17537 373 /**
mbed_official 376:cb4d9db17537 374 * @}
mbed_official 376:cb4d9db17537 375 */
mbed_official 376:cb4d9db17537 376
mbed_official 376:cb4d9db17537 377 /* CMSIS_Legacy */
mbed_official 376:cb4d9db17537 378
mbed_official 376:cb4d9db17537 379 #if defined ( __ICCARM__ )
mbed_official 376:cb4d9db17537 380 #define InterruptType_ACTLR_DISMCYCINT_Msk IntType_ACTLR_DISMCYCINT_Msk
mbed_official 376:cb4d9db17537 381 #endif
mbed_official 376:cb4d9db17537 382
mbed_official 376:cb4d9db17537 383 /**
mbed_official 376:cb4d9db17537 384 * @}
mbed_official 376:cb4d9db17537 385 */
mbed_official 376:cb4d9db17537 386
mbed_official 376:cb4d9db17537 387 /* Exported macro ------------------------------------------------------------*/
mbed_official 376:cb4d9db17537 388 /** @defgroup FLASH_Interrupt FLASH Interrupt
mbed_official 376:cb4d9db17537 389 * @brief macros to handle FLASH interrupts
mbed_official 376:cb4d9db17537 390 * @{
mbed_official 376:cb4d9db17537 391 */
mbed_official 376:cb4d9db17537 392
mbed_official 376:cb4d9db17537 393 /**
mbed_official 376:cb4d9db17537 394 * @brief Enables or disables the specified FLASH interrupts.
mbed_official 376:cb4d9db17537 395 * @param __INTERRUPT__: specifies the FLASH interrupt sources to be enabled or
mbed_official 376:cb4d9db17537 396 * disabled.
mbed_official 376:cb4d9db17537 397 * This parameter can be any combination of the following values:
mbed_official 376:cb4d9db17537 398 * @arg FLASH_IT_EOP: FLASH end of programming Interrupt
mbed_official 376:cb4d9db17537 399 * @arg FLASH_IT_ERR: FLASH Error Interrupt
mbed_official 376:cb4d9db17537 400 * @retval None
mbed_official 376:cb4d9db17537 401 */
mbed_official 376:cb4d9db17537 402 #define __HAL_FLASH_ENABLE_IT(__INTERRUPT__) (FLASH->PECR |= (__INTERRUPT__))
mbed_official 376:cb4d9db17537 403
mbed_official 376:cb4d9db17537 404 /**
mbed_official 376:cb4d9db17537 405 * @brief Disable the specified FLASH interrupt.
mbed_official 376:cb4d9db17537 406 * @param __INTERRUPT__ : FLASH interrupt
mbed_official 376:cb4d9db17537 407 * This parameter can be any combination of the following values:
mbed_official 376:cb4d9db17537 408 * @arg FLASH_IT_EOP: End of FLASH Operation Interrupt
mbed_official 376:cb4d9db17537 409 * @arg FLASH_IT_ERR: Error Interrupt
mbed_official 376:cb4d9db17537 410 * @retval none
mbed_official 376:cb4d9db17537 411 */
mbed_official 376:cb4d9db17537 412 #define __HAL_FLASH_DISABLE_IT(__INTERRUPT__) (FLASH->PECR &= ~(uint32_t)(__INTERRUPT__))
mbed_official 376:cb4d9db17537 413
mbed_official 376:cb4d9db17537 414 /**
mbed_official 376:cb4d9db17537 415 * @brief Checks whether the specified FLASH flag is set or not.
mbed_official 376:cb4d9db17537 416 * @param __FLAG__: specifies the FLASH flag to check.
mbed_official 376:cb4d9db17537 417 * This parameter can be one of the following values:
mbed_official 376:cb4d9db17537 418 * @arg FLASH_FLAG_BSY: FLASH write/erase operations in progress flag
mbed_official 376:cb4d9db17537 419 * @arg FLASH_FLAG_EOP: FLASH End of Operation flag
mbed_official 376:cb4d9db17537 420 * @arg FLASH_FLAG_READY: FLASH Ready flag after low power mode
mbed_official 376:cb4d9db17537 421 * @arg FLASH_FLAG_ENDHV: FLASH End of high voltage flag
mbed_official 376:cb4d9db17537 422 * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
mbed_official 376:cb4d9db17537 423 * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
mbed_official 376:cb4d9db17537 424 * @arg FLASH_FLAG_SIZERR: FLASH size error flag
mbed_official 376:cb4d9db17537 425 * @arg FLASH_FLAG_OPTVERR: FLASH Option validity error flag
mbed_official 376:cb4d9db17537 426 * @arg FLASH_FLAG_OPTVERRUSR: FLASH Option User validity error flag
mbed_official 376:cb4d9db17537 427 * @arg FLASH_FLAG_RDERR: FLASH Read protected error flag
mbed_official 376:cb4d9db17537 428 * @arg FLASH_FLAG_NOTZEROERR: Not Zero area error flag
mbed_official 376:cb4d9db17537 429 * @retval The new state of FLASH_FLAG (SET or RESET).
mbed_official 376:cb4d9db17537 430 */
mbed_official 376:cb4d9db17537 431 #define __HAL_FLASH_GET_FLAG(__FLAG__) ((FLASH->SR & (__FLAG__)) == (__FLAG__))
mbed_official 376:cb4d9db17537 432
mbed_official 376:cb4d9db17537 433 /**
mbed_official 376:cb4d9db17537 434 * @brief Clears the FLASH's pending flags.
mbed_official 376:cb4d9db17537 435 * @param __FLAG__: specifies the FLASH flags to clear.
mbed_official 376:cb4d9db17537 436 * This parameter can be any combination of the following values:
mbed_official 376:cb4d9db17537 437 * @arg FLASH_FLAG_EOP: FLASH End of Operation flag
mbed_official 376:cb4d9db17537 438 * @arg FLASH_FLAG_WRPERR: FLASH Write protected error flag
mbed_official 376:cb4d9db17537 439 * @arg FLASH_FLAG_PGAERR: FLASH Programming Alignment error flag
mbed_official 376:cb4d9db17537 440 * @arg FLASH_FLAG_SIZERR: FLASH size error flag
mbed_official 376:cb4d9db17537 441 * @arg FLASH_FLAG_OPTVERR: FLASH Option validity error flag
mbed_official 376:cb4d9db17537 442 * @arg FLASH_FLAG_OPTVERRUSR: FLASH Option User validity error flag
mbed_official 376:cb4d9db17537 443 * @arg FLASH_FLAG_RDERR: FLASH Read protected error flag
mbed_official 376:cb4d9db17537 444 * @arg FLASH_FLAG_NOTZEROERR: Not Zero area error flag
mbed_official 376:cb4d9db17537 445 * @retval None
mbed_official 376:cb4d9db17537 446 */
mbed_official 376:cb4d9db17537 447 #define __HAL_FLASH_CLEAR_FLAG(__FLAG__) (FLASH->SR = (__FLAG__))
mbed_official 376:cb4d9db17537 448
mbed_official 376:cb4d9db17537 449 /**
mbed_official 376:cb4d9db17537 450 * @}
mbed_official 376:cb4d9db17537 451 */
mbed_official 376:cb4d9db17537 452
mbed_official 376:cb4d9db17537 453 /* Include FLASH HAL Extension module */
mbed_official 376:cb4d9db17537 454 #include "stm32l0xx_hal_flash_ex.h"
mbed_official 376:cb4d9db17537 455 #include "stm32l0xx_hal_flash_ramfunc.h"
mbed_official 376:cb4d9db17537 456
mbed_official 376:cb4d9db17537 457 /* Exported functions ------------------------------------------------------- */
mbed_official 376:cb4d9db17537 458
mbed_official 376:cb4d9db17537 459 /**
mbed_official 376:cb4d9db17537 460 * @brief FLASH memory functions that can be executed from FLASH.
mbed_official 376:cb4d9db17537 461 */
mbed_official 376:cb4d9db17537 462 /* Program operation functions ***********************************************/
mbed_official 376:cb4d9db17537 463 HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data);
mbed_official 376:cb4d9db17537 464 HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data);
mbed_official 376:cb4d9db17537 465
mbed_official 376:cb4d9db17537 466 /* FLASH IRQ handler function */
mbed_official 376:cb4d9db17537 467 void HAL_FLASH_IRQHandler(void);
mbed_official 376:cb4d9db17537 468
mbed_official 376:cb4d9db17537 469 /* Callbacks in non blocking modes */
mbed_official 376:cb4d9db17537 470 void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue);
mbed_official 376:cb4d9db17537 471 void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue);
mbed_official 376:cb4d9db17537 472
mbed_official 376:cb4d9db17537 473 /* Peripheral Control functions **********************************************/
mbed_official 376:cb4d9db17537 474 HAL_StatusTypeDef HAL_FLASH_Unlock(void);
mbed_official 376:cb4d9db17537 475 HAL_StatusTypeDef HAL_FLASH_Lock(void);
mbed_official 376:cb4d9db17537 476 HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void);
mbed_official 376:cb4d9db17537 477 HAL_StatusTypeDef HAL_FLASH_OB_Lock(void);
mbed_official 376:cb4d9db17537 478
mbed_official 376:cb4d9db17537 479 /* Option bytes control */
mbed_official 376:cb4d9db17537 480 HAL_StatusTypeDef HAL_FLASH_OB_Launch(void);
mbed_official 376:cb4d9db17537 481
mbed_official 376:cb4d9db17537 482 /* Peripheral State functions ************************************************/
mbed_official 376:cb4d9db17537 483 FLASH_ErrorTypeDef HAL_FLASH_GetError(void);
mbed_official 376:cb4d9db17537 484
mbed_official 376:cb4d9db17537 485 /* Non-User functions ********************************************************/
mbed_official 376:cb4d9db17537 486 HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout);
mbed_official 376:cb4d9db17537 487 void FLASH_Erase_Page(uint32_t Page_Address);
mbed_official 376:cb4d9db17537 488
mbed_official 376:cb4d9db17537 489 #ifdef __cplusplus
mbed_official 376:cb4d9db17537 490 }
mbed_official 376:cb4d9db17537 491 #endif
mbed_official 376:cb4d9db17537 492
mbed_official 376:cb4d9db17537 493 #endif /* __STM32L0XX_HAL_FLASH_H */
mbed_official 376:cb4d9db17537 494
mbed_official 376:cb4d9db17537 495 /**
mbed_official 376:cb4d9db17537 496 * @}
mbed_official 376:cb4d9db17537 497 */
mbed_official 376:cb4d9db17537 498
mbed_official 376:cb4d9db17537 499 /**
mbed_official 376:cb4d9db17537 500 * @}
mbed_official 376:cb4d9db17537 501 */
mbed_official 376:cb4d9db17537 502
mbed_official 376:cb4d9db17537 503 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/