lzbp li / mbed-stm32l0l1-src-1

Fork of mbed-stm32l0/l1-src by lzbp li

Committer:
mbed_official
Date:
Fri Oct 31 11:00:10 2014 +0000
Revision:
376:cb4d9db17537
Synchronized with git revision 07b49da75eac883fc8916d3d6b6962664b8db29e

Full URL: https://github.com/mbedmicro/mbed/commit/07b49da75eac883fc8916d3d6b6962664b8db29e/

Targets: DISCO_L053C8 - new platform - STM32L0 Discovery board

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****/