ARM GAS /tmp/cc9alhJF.s page 1 1 .cpu cortex-m0plus 2 .eabi_attribute 20, 1 3 .eabi_attribute 21, 1 4 .eabi_attribute 23, 3 5 .eabi_attribute 24, 1 6 .eabi_attribute 25, 1 7 .eabi_attribute 26, 1 8 .eabi_attribute 30, 1 9 .eabi_attribute 34, 0 10 .eabi_attribute 18, 4 11 .file "stm32l0xx_hal_flash_ex.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.FLASH_OB_ProtectedSectorsConfig,"ax",%progbits 16 .align 1 17 .syntax unified 18 .code 16 19 .thumb_func 20 .fpu softvfp 22 FLASH_OB_ProtectedSectorsConfig: 23 .LFB62: 24 .file 1 "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c" 1:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 2:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ****************************************************************************** 3:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @file stm32l0xx_hal_flash_ex.c 4:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @author MCD Application Team 5:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Extended FLASH HAL module driver. 6:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 7:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This file provides firmware functions to manage the following 8:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * functionalities of the internal FLASH memory: 9:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * + FLASH Interface configuration 10:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * + FLASH Memory Erasing 11:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * + DATA EEPROM Programming/Erasing 12:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * + Option Bytes Programming 13:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * + Interrupts management 14:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 15:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @verbatim 16:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 17:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ##### Flash peripheral Extended features ##### 18:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 19:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 20:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] Comparing to other products, the FLASH interface for STM32L0xx 21:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** devices contains the following additional features 22:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) Erase functions 23:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) DATA_EEPROM memory management 24:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) BOOT option bit configuration 25:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) PCROP protection for all sectors 26:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 27:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ##### How to use this driver ##### 28:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 29:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] This driver provides functions to configure and program the FLASH memory 30:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** of all STM32L0xx. It includes: 31:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) Full DATA_EEPROM erase and program management 32:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) Boot activation 33:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) PCROP protection configuration and control for all pages 34:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ARM GAS /tmp/cc9alhJF.s page 2 35:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @endverbatim 36:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ****************************************************************************** 37:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @attention 38:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 39:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *

© COPYRIGHT(c) 2016 STMicroelectronics

40:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 41:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * Redistribution and use in source and binary forms, with or without modification, 42:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * are permitted provided that the following conditions are met: 43:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 1. Redistributions of source code must retain the above copyright notice, 44:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * this list of conditions and the following disclaimer. 45:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, 46:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * this list of conditions and the following disclaimer in the documentation 47:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * and/or other materials provided with the distribution. 48:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 3. Neither the name of STMicroelectronics nor the names of its contributors 49:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * may be used to endorse or promote products derived from this software 50:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * without specific prior written permission. 51:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 52:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 53:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 54:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 55:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 56:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 57:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 58:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 59:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 60:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 61:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 62:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 63:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ****************************************************************************** 64:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 65:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 66:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Includes ------------------------------------------------------------------*/ 67:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #include "stm32l0xx_hal.h" 68:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 69:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @addtogroup STM32L0xx_HAL_Driver 70:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 71:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 72:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #ifdef HAL_FLASH_MODULE_ENABLED 73:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 74:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @addtogroup FLASH 75:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 76:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 77:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @addtogroup FLASH_Private_Variables 78:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 79:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 80:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Variables used for Erase pages under interruption*/ 81:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** extern FLASH_ProcessTypeDef pFlash; 82:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 83:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 84:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 85:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 86:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 87:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 88:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 89:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 90:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx FLASHEx 91:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief FLASH HAL Extension module driver ARM GAS /tmp/cc9alhJF.s page 3 92:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 93:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 94:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 95:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Private typedef -----------------------------------------------------------*/ 96:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Private define ------------------------------------------------------------*/ 97:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Private_Constants FLASHEx Private Constants 98:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 99:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Private macro -------------------------------------------------------------*/ 105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Private_Macros FLASHEx Private Macros 106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Private variables ---------------------------------------------------------*/ 113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Private function prototypes -----------------------------------------------*/ 114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions 115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** void FLASH_PageErase(uint32_t PageAddress); 118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_BFB2) 119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BootConfig(uint8_t OB_BOOT); 120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_BFB2 */ 121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_RDPConfig(uint8_t OB_RDP); 122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY); 123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BORConfig(uint8_t OB_BOR); 124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetRDP(void); 125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetUser(void); 126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetBOR(void); 127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetBOOTBit1(void); 128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BOOTBit1Config(uint8_t OB_BootBit1); 129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t Sector2, uint32 131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #else 132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t NewState); 133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void); 135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP2(void); 137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Exported functions ---------------------------------------------------------*/ 144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions 145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions_Group1 FLASHEx Memory Erasing functions ARM GAS /tmp/cc9alhJF.s page 4 149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief FLASH Memory Erasing functions 150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @verbatim 152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ##### FLASH Erasing Programming functions ##### 154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] The FLASH Memory Erasing functions, includes the following functions: 157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) @ref HAL_FLASHEx_Erase: return only when erase has been done 158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (+) @ref HAL_FLASHEx_Erase_IT: end of erase is done when @ref HAL_FLASH_EndOfOperationCallback 159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** is called with parameter 0xFFFFFFFF 160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] Any operation of erase should follow these steps: 162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the @ref HAL_FLASH_Unlock() function to enable the flash control register and 163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** program memory access. 164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the desired function to erase page. 165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the @ref HAL_FLASH_Lock() to disable the flash program memory access 166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (recommended to protect the FLASH memory against possible unwanted operation). 167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @endverbatim 169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Erase the specified FLASH memory Pages 174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function 175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * must be called before. 176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * (recommended to protect the FLASH memory against possible unwanted operation) 178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param[in] pEraseInit pointer to an FLASH_EraseInitTypeDef structure that 179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information for the erasing. 180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param[out] PageError pointer to variable that 182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information on faulty page in case of error 183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * (0xFFFFFFFF means that all the pages have been correctly erased) 184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError) 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t address = 0U; 191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Locked */ 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status == HAL_OK) 199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /*Initialization of PageError variable*/ 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *PageError = 0xFFFFFFFFU; 202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_NBPAGES(pEraseInit->NbPages)); 205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); ARM GAS /tmp/cc9alhJF.s page 5 206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress)); 207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1U)) + pEr 208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Erase page by page to be done*/ 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** for(address = pEraseInit->PageAddress; 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress); 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** FLASH_PageErase(address); 215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* If the erase operation is completed, disable the ERASE Bit */ 220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* In case of error, stop erase procedure and return the faulty address */ 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *PageError = address; 227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** break; 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ 233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Perform a page erase of the specified FLASH memory pages with interrupt enabled 240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * must be called before. 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * (recommended to protect the FLASH memory against possible unwanted operation) 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * End of erase is done when @ref HAL_FLASH_EndOfOperationCallback is called with paramet 245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 0xFFFFFFFF 246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param pEraseInit pointer to an FLASH_EraseInitTypeDef structure that 247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information for the erasing. 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* If procedure already ongoing, reject the next one */ 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (pFlash.ProcedureOnGoing != FLASH_PROC_NONE) 257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return HAL_ERROR; 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_NBPAGES(pEraseInit->NbPages)); ARM GAS /tmp/cc9alhJF.s page 6 263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress)); 265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS((pEraseInit->PageAddress & ~(FLASH_PAGE_SIZE - 1)) + pErase 266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Locked */ 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status == HAL_OK) 274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Enable End of FLASH Operation and Error source interrupts */ 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); 277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PAGEERASE; 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.NbPagesToErase = pEraseInit->NbPages; 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.Page = pEraseInit->PageAddress; 281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /*Erase 1st page and wait for IT*/ 283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** FLASH_PageErase(pEraseInit->PageAddress); 284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else 286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ 288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions_Group2 Option Bytes Programming functions 299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Option Bytes Programming functions 300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @verbatim 302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ##### Option Bytes Programming functions ##### 304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] Any operation of erase or program should follow these steps: 307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the @ref HAL_FLASH_OB_Unlock() function to enable the Flash option control 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** register access. 309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call following function to program the desired option bytes. 310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (++) @ref HAL_FLASHEx_OBProgram: 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** - To Enable/Disable the desired sector write protection. 312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** - To set the desired read Protection Level. 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** - To configure the user option Bytes: IWDG, STOP and the Standby. 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** - To Set the BOR level. 315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Once all needed option bytes to be programmed are correctly written, call the 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @ref HAL_FLASH_OB_Launch(void) function to launch the Option Bytes programming process. 317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the @ref HAL_FLASH_OB_Lock() to disable the Flash option control register access (reco 318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** to protect the option Bytes against possible unwanted operations). 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ARM GAS /tmp/cc9alhJF.s page 7 320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] Proprietary code Read Out Protection (PcROP): 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) The PcROP sector is selected by using the same option bytes as the Write 322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** protection (nWRPi bits). As a result, these 2 options are exclusive each other. 323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) In order to activate the PcROP (change the function of the nWRPi option bits), 324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** the WPRMOD option bit must be activated. 325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) The active value of nWRPi bits is inverted when PCROP mode is active, this 326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** means: if WPRMOD = 1 and nWRPi = 1 (default value), then the user sector "i" 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** is read/write protected. 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) To activate PCROP mode for Flash sector(s), you need to call the following function: 329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (++) @ref HAL_FLASHEx_AdvOBProgram in selecting sectors to be read/write protected 330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (++) @ref HAL_FLASHEx_OB_SelectPCROP to enable the read/write protection 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @endverbatim 333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Program option bytes 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param pOBInit pointer to an FLASH_OBInitStruct structure that 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information for the programming. 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit) 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Locked */ 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OPTIONBYTE(pOBInit->OptionType)); 352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /*Write protection configuration*/ 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP) 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_WRPSTATE(pOBInit->WRPState)); 357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_ProtectedSectorsConfig(pOBInit->WRPSector, pOBInit->WRPSector2, pOBInit->WRPS 359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #else 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_ProtectedSectorsConfig(pOBInit->WRPSector, pOBInit->WRPState); 361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Read protection configuration*/ 371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP) 372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_RDPConfig(pOBInit->RDPLevel); 374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ ARM GAS /tmp/cc9alhJF.s page 8 377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* USER configuration*/ 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER) 384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_UserConfig(pOBInit->USERConfig & OB_IWDG_SW, 386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STOP_NORST, 387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STDBY_NORST); 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ 391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* BOR Level configuration*/ 397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_BOR) == OPTIONBYTE_BOR) 398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_BORConfig(pOBInit->BORLevel); 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program BOOT Bit1 config option byte */ 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if ((pOBInit->OptionType & OPTIONBYTE_BOOT_BIT1) == OPTIONBYTE_BOOT_BIT1) 410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_BOOTBit1Config(pOBInit->BOOTBit1Config); 412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ 414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Get the Option byte configuration 421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param pOBInit pointer to an FLASH_OBInitStruct structure that 422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information for the programming. 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval None 425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit) 427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER | OPTIONBYTE_BOR; 429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get WRP sector */ 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->WRPSector = FLASH_OB_GetWRP(); 432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || ARM GAS /tmp/cc9alhJF.s page 9 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->WRPSector2 = FLASH_OB_GetWRP2(); 435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /*Get RDP Level*/ 438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->RDPLevel = FLASH_OB_GetRDP(); 439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /*Get USER*/ 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->USERConfig = FLASH_OB_GetUser(); 442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /*Get BOR Level*/ 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->BORLevel = FLASH_OB_GetBOR(); 445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get BOOT bit 1 config OB */ 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->BOOTBit1Config = FLASH_OB_GetBOOTBit1(); 448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_WPRMOD) || defined(FLASH_OPTR_BFB2) 451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Program option bytes 454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param pAdvOBInit pointer to an FLASH_AdvOBProgramInitTypeDef structure that 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information for the programming. 456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_AdvOBProgram (FLASH_AdvOBProgramInitTypeDef *pAdvOBInit) 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OBEX(pAdvOBInit->OptionType)); 465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_WPRMOD) 467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program PCROP option byte*/ 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if ((pAdvOBInit->OptionType & OPTIONBYTE_PCROP) == OPTIONBYTE_PCROP) 470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_PCROPSTATE(pAdvOBInit->PCROPState)); 473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_ProtectedSectorsConfig(pAdvOBInit->PCROPSector, pAdvOBInit->PCROPSector2, pAd 475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #else 476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_ProtectedSectorsConfig(pAdvOBInit->PCROPSector, pAdvOBInit->PCROPState); 477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_WPRMOD */ 481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_BFB2) 483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program BOOT config option byte */ 485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if ((pAdvOBInit->OptionType & OPTIONBYTE_BOOTCONFIG) == OPTIONBYTE_BOOTCONFIG) 486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_OB_BootConfig(pAdvOBInit->BootConfig); 488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_BFB2 */ ARM GAS /tmp/cc9alhJF.s page 10 491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Get the OBEX byte configuration 497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param pAdvOBInit pointer to an FLASH_AdvOBProgramInitTypeDef structure that 498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * contains the configuration information for the programming. 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval None 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** void HAL_FLASHEx_AdvOBGetConfig(FLASH_AdvOBProgramInitTypeDef *pAdvOBInit) 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->OptionType = 0; 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_WPRMOD) 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->OptionType |= OPTIONBYTE_PCROP; 509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get PCROP state */ 512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->PCROPState = (FLASH->OPTR & FLASH_OPTR_WPRMOD) >> FLASH_OPTR_WPRMOD_Pos; 513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get PCROP protected sector */ 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->PCROPSector = FLASH->WRPR; 515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get PCROP protected sector */ 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->PCROPSector2 = FLASH->WRPR2; 519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_WPRMOD */ 521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_BFB2) 523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->OptionType |= OPTIONBYTE_BOOTCONFIG; 525:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get Boot config OB */ 527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->BootConfig = (FLASH->OPTR & FLASH_OPTR_BFB2) >> 16U; 528:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 529:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_BFB2 */ 530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 531:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 532:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_WPRMOD || FLASH_OPTR_BFB2 */ 533:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 534:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_WPRMOD) 535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 536:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 537:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Select the Protection Mode (WPRMOD). 538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note Once WPRMOD bit is active, unprotection of a protected sector is not possible 539:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note Read a protected sector will set RDERR Flag and write a protected sector will set WRPER 540:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 542:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_OB_SelectPCROP(void) 543:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 544:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 545:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint16_t tmp1 = 0; 546:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp2 = 0; 547:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint8_t optiontmp = 0; ARM GAS /tmp/cc9alhJF.s page 11 548:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint16_t optiontmp2 = 0; 549:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 550:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 551:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 552:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Mask RDP Byte */ 553:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** optiontmp = (uint8_t)(*(__IO uint8_t *)(OB_BASE)); 554:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 555:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Update Option Byte */ 556:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** optiontmp2 = (uint16_t)(OB_PCROP_SELECTED | optiontmp); 557:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 558:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* calculate the option byte to write */ 559:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = (uint16_t)(~(optiontmp2 )); 560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)optiontmp2)); 561:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 563:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 566:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 567:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* program PCRop */ 568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->RDP = tmp2; 569:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 570:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 571:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 572:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 574:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the Read protection operation Status */ 575:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 578:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 579:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Deselect the Protection Mode (WPRMOD). 580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note Once WPRMOD bit is active, unprotection of a protected sector is not possible 581:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note Read a protected sector will set RDERR Flag and write a protected sector will set WRPER 582:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 583:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 584:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_OB_DeSelectPCROP(void) 585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 586:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 587:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint16_t tmp1 = 0; 588:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp2 = 0; 589:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint8_t optiontmp = 0; 590:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint16_t optiontmp2 = 0; 591:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 593:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 594:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Mask RDP Byte */ 595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** optiontmp = (uint8_t)(*(__IO uint8_t *)(OB_BASE)); 596:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 597:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Update Option Byte */ 598:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** optiontmp2 = (uint16_t)(OB_PCROP_DESELECTED | optiontmp); 599:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 600:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* calculate the option byte to write */ 601:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = (uint16_t)(~(optiontmp2 )); 602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)optiontmp2)); 603:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) ARM GAS /tmp/cc9alhJF.s page 12 605:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 606:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 609:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* program PCRop */ 610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->RDP = tmp2; 611:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 612:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 614:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 615:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 616:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the Read protection operation Status */ 617:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 618:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 619:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 620:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_WPRMOD */ 621:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 622:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 623:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 624:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 626:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions_Group3 DATA EEPROM Programming functions 627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief DATA EEPROM Programming functions 628:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 629:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @verbatim 630:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** =============================================================================== 631:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ##### DATA EEPROM Programming functions ##### 632:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** =============================================================================== 633:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** [..] Any operation of erase or program should follow these steps: 635:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the @ref HAL_FLASHEx_DATAEEPROM_Unlock() function to enable the data EEPROM access 636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** and Flash program erase control register access. 637:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the desired function to erase or program data. 638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** (#) Call the @ref HAL_FLASHEx_DATAEEPROM_Lock() to disable the data EEPROM access 639:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** and Flash program erase control register access(recommended 640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** to protect the DATA_EEPROM against possible unwanted operation). 641:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** @endverbatim 643:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 646:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 647:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Unlocks the data memory and FLASH_PECR register access. 648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 649:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Unlock(void) 651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET) 653:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Unlocking the Data memory and FLASH_PECR register access*/ 655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** FLASH->PEKEYR = FLASH_PEKEY1; 656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** FLASH->PEKEYR = FLASH_PEKEY2; 657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else 659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return HAL_ERROR; 661:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } ARM GAS /tmp/cc9alhJF.s page 13 662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return HAL_OK; 663:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 665:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Locks the Data memory and FLASH_PECR register access. 667:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 669:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Lock(void) 670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 671:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Set the PELOCK Bit to lock the data memory and FLASH_PECR register access */ 672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PELOCK); 673:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return HAL_OK; 675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Erase a word in data memory. 679:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param Address specifies the address to be erased. 680:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASHEx_DATAEEPROM_Unlock() function 681:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * must be called before. 682:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * Call the @ref HAL_FLASHEx_DATAEEPROM_Lock() to the data EEPROM access 683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * and Flash program erase control register access(recommended to protect 684:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * the DATA_EEPROM against possible unwanted operation). 685:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Erase(uint32_t Address) 688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 689:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 690:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 692:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_DATA_ADDRESS(Address)); 693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 694:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 696:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 697:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 698:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 699:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 701:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 702:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Write 00000000h to valid address in the data memory */ 703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *(__IO uint32_t *) Address = 0x00000000U; 704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 705:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 706:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 707:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 708:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the erase status */ 709:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 710:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 712:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Program word at a specified address 714:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASHEx_DATAEEPROM_Unlock() function 715:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * must be called before. 716:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * Call the @ref HAL_FLASHEx_DATAEEPROM_Unlock() to he data EEPROM access 717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * and Flash program erase control register access(recommended to protect 718:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * the DATA_EEPROM against possible unwanted operation). ARM GAS /tmp/cc9alhJF.s page 14 719:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note The function @ref HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram() can be called before 720:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * this function to configure the Fixed Time Programming. 721:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param TypeProgram Indicate the way to program at a specified address. 722:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be a value of @ref FLASHEx_Type_Program_Data 723:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param Address specifie the address to be programmed. 724:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param Data specifie the data to be programmed 725:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 726:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 727:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 728:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 729:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_DATAEEPROM_Program(uint32_t TypeProgram, uint32_t Address, uint32_t 730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 731:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 732:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 733:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Locked */ 734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 735:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 737:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_TYPEPROGRAMDATA(TypeProgram)); 738:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_FLASH_DATA_ADDRESS(Address)); 739:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 740:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 741:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 742:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 743:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 744:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 745:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 746:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 747:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 748:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(TypeProgram == FLASH_TYPEPROGRAMDATA_WORD) 749:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 750:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program word (32-bit) at a specified address.*/ 751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *(__IO uint32_t *)Address = Data; 752:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else if(TypeProgram == FLASH_TYPEPROGRAMDATA_HALFWORD) 754:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 755:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program halfword (16-bit) at a specified address.*/ 756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *(__IO uint16_t *)Address = (uint16_t) Data; 757:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 758:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else if(TypeProgram == FLASH_TYPEPROGRAMDATA_BYTE) 759:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 760:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program byte (8-bit) at a specified address.*/ 761:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *(__IO uint8_t *)Address = (uint8_t) Data; 762:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 763:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else 764:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 765:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = HAL_ERROR; 766:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 767:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 768:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 769:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 770:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 771:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 772:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 773:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 774:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 775:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Process Unlocked */ ARM GAS /tmp/cc9alhJF.s page 15 776:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 777:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 778:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 779:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 780:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 781:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 782:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Enable DATA EEPROM fixed Time programming (2*Tprog). 783:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval None 784:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 785:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** void HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram(void) 786:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 787:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** SET_BIT(FLASH->PECR, FLASH_PECR_FIX); 788:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 789:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 790:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 791:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Disables DATA EEPROM fixed Time programming (2*Tprog). 792:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval None 793:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 794:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** void HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram(void) 795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 796:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_FIX); 797:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 798:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 799:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 800:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 801:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 802:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 803:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 804:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 805:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 806:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 807:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @addtogroup FLASHEx_Private_Functions 808:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 809:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 810:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 811:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* 812:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 813:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OPTIONS BYTES 814:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ============================================================================== 815:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 816:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 817:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Enables or disables the read out protection. 818:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASH_OB_Unlock() function 819:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * must be called before. 820:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_RDP specifies the read protection level. 821:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be: 822:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_0 No protection 823:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory 824:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_2 Chip protection 825:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 826:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * !!!Warning!!! When enabling OB_RDP_LEVEL_2 it's no more possible to go back to level 1 or 0 827:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * 828:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 829:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 830:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_RDPConfig(uint8_t OB_RDP) 831:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 832:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; ARM GAS /tmp/cc9alhJF.s page 16 833:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp1 = 0U, tmp2 = 0U, tmp3 = 0U; 834:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 835:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 836:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_RDP(OB_RDP)); 837:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 838:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = (uint32_t)(OB->RDP & FLASH_OPTR_RDPROT); 839:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 840:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_WPRMOD) 841:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Mask WPRMOD bit */ 842:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp3 = (uint32_t)(OB->RDP & FLASH_OPTR_WPRMOD); 843:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 844:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 845:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* calculate the option byte to write */ 846:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = (~((uint32_t)(OB_RDP | tmp3))); 847:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)(OB_RDP | tmp3))); 848:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 849:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 850:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 851:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 852:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 853:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 854:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 855:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 856:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 857:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* program read protection level */ 858:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->RDP = tmp2; 859:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 860:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 861:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 862:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 863:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 864:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the Read protection operation Status */ 865:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 866:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 867:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 868:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 869:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Programs the FLASH brownout reset threshold level Option Byte. 870:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_BOR Selects the brownout reset threshold level. 871:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 872:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOR_OFF BOR is disabled at power down, the reset is asserted when the VDD 873:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * power supply reaches the PDR(Power Down Reset) threshold (1.5V) 874:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOR_LEVEL1 BOR Reset threshold levels for 1.7V - 1.8V VDD power supply 875:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOR_LEVEL2 BOR Reset threshold levels for 1.9V - 2.0V VDD power supply 876:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOR_LEVEL3 BOR Reset threshold levels for 2.3V - 2.4V VDD power supply 877:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOR_LEVEL4 BOR Reset threshold levels for 2.55V - 2.65V VDD power supply 878:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOR_LEVEL5 BOR Reset threshold levels for 2.8V - 2.9V VDD power supply 879:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 880:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 881:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BORConfig(uint8_t OB_BOR) 882:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 883:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 884:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp = 0, tmp1 = 0; 885:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 886:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 887:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_BOR_LEVEL(OB_BOR)); 888:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 889:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get the User Option byte register */ ARM GAS /tmp/cc9alhJF.s page 17 890:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = OB->USER & ((~FLASH_OPTR_BOR_LEV) >> 16U); 891:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 892:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Calculate the option byte to write - [0xFF | nUSER | 0x00 | USER]*/ 893:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp = (uint32_t)~((OB_BOR | tmp1)) << 16U; 894:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= (OB_BOR | tmp1); 895:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 896:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 897:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 898:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 899:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 900:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 901:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 902:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 903:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 904:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Write the BOR Option Byte */ 905:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->USER = tmp; 906:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 907:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 908:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 909:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 910:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 911:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the Option Byte BOR programmation Status */ 912:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 913:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 914:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 915:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 916:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Sets or resets the BOOT bit1 option bit. 917:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_BootBit1 Set or Reset the BOOT bit1 option bit. 918:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 919:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOOT_BIT1_RESET BOOT1 option bit reset 920:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOOT_BIT1_SET BOOT1 option bit set 921:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 922:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 923:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BOOTBit1Config(uint8_t OB_BootBit1) 924:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 925:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp = 0, tmp1 = 0, OB_Bits = ((uint32_t) OB_BootBit1) << 15; 927:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 928:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 929:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_BOOT1(OB_BootBit1)); 930:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 931:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get the User Option byte register */ 932:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = OB->USER & ((~FLASH_OPTR_BOOT1) >> 16U); 933:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 934:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Calculate the user option byte to write */ 935:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp = (~(OB_Bits | tmp1)) << 16U; 936:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= OB_Bits | tmp1; 937:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 938:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 939:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 940:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 941:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 942:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 943:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 944:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 945:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program OB */ 946:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->USER = tmp; ARM GAS /tmp/cc9alhJF.s page 18 947:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 948:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 949:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 950:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 951:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 952:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 953:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 954:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 955:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Returns the FLASH User Option Bytes values. 956:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval The FLASH User Option Bytes. 957:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 958:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetUser(void) 959:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 960:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the User Option Byte */ 961:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return (uint8_t)((FLASH->OPTR & FLASH_OPTR_USER) >> 16U); 962:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 963:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 964:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 965:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Returns the FLASH Read Protection level. 966:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval FLASH RDP level 967:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 968:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_0 No protection 969:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory 970:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_2 Full chip protection 971:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 972:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetRDP(void) 973:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 974:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return (uint8_t)(FLASH->OPTR & FLASH_OPTR_RDPROT); 975:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 976:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 977:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 978:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Returns the FLASH BOR level. 979:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval The BOR level Option Bytes. 980:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 981:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetBOR(void) 982:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 983:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the BOR level */ 984:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return (uint8_t)((FLASH->OPTR & (uint32_t)FLASH_OPTR_BOR_LEV) >> 16U); 985:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 986:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 987:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 988:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Returns the FLASH BOOT bit1 value. 989:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval The BOOT bit 1 value Option Bytes. 990:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 991:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetBOOTBit1(void) 992:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 993:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the BOR level */ 994:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return (FLASH->OPTR & FLASH_OPTR_BOOT1) >> FLASH_OPTR_BOOT1_Pos; 995:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 996:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 997:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 998:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 999:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Returns the FLASH Write Protection Option Bytes value. 1000:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval The FLASH Write Protection Option Bytes value. 1001:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1002:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void) 1003:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { ARM GAS /tmp/cc9alhJF.s page 19 1004:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the FLASH write protection Register value */ 1005:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return (uint32_t)(FLASH->WRPR); 1006:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1007:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1008:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 1009:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1010:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Returns the FLASH Write Protection Option Bytes value. 1011:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval The FLASH Write Protection Option Bytes value. 1012:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1013:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP2(void) 1014:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1015:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the FLASH write protection Register value */ 1016:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return (uint32_t)(FLASH->WRPR2); 1017:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1018:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* STM32L071xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx */ 1019:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1020:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 1021:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1022:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Write Option Byte of the desired pages of the Flash. 1023:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param Sector specifies the sectors to be write protected. 1024:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param Sector2 specifies the sectors to be write protected (only stm32l07xxx and stm32l08xxx d 1025:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param NewState new state of the specified FLASH Pages Write protection. 1026:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be: 1027:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_WRPSTATE_ENABLE 1028:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_WRPSTATE_DISABLE 1029:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef 1030:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1031:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t Sector2, uint32_ 1032:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #else 1033:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1034:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Write Option Byte of the desired pages of the Flash. 1035:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param Sector specifies the sectors to be write protected. 1036:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param NewState new state of the specified FLASH Pages Write protection. 1037:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be: 1038:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_WRPSTATE_ENABLE 1039:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_WRPSTATE_DISABLE 1040:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef 1041:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1042:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_ProtectedSectorsConfig(uint32_t Sector, uint32_t NewState) 1043:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 1044:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 25 .loc 1 1044 0 26 .cfi_startproc 27 @ args = 0, pretend = 0, frame = 0 28 @ frame_needed = 0, uses_anonymous_args = 0 29 .LVL0: 30 0000 70B5 push {r4, r5, r6, lr} 31 .LCFI0: 32 .cfi_def_cfa_offset 16 33 .cfi_offset 4, -16 34 .cfi_offset 5, -12 35 .cfi_offset 6, -8 36 .cfi_offset 14, -4 37 0002 0400 movs r4, r0 38 0004 0E00 movs r6, r1 39 0006 1500 movs r5, r2 40 .LVL1: ARM GAS /tmp/cc9alhJF.s page 20 1045:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1046:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t WRP_Data = 0; 1047:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t OB_WRP = Sector; 1048:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1049:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 1050:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 41 .loc 1 1050 0 42 0008 2948 ldr r0, .L9 43 .LVL2: 44 000a FFF7FEFF bl FLASH_WaitForLastOperation 45 .LVL3: 1051:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1052:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 46 .loc 1 1052 0 47 000e 0028 cmp r0, #0 48 0010 2DD1 bne .L2 1053:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1054:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 1055:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 49 .loc 1 1055 0 50 0012 284B ldr r3, .L9+4 51 0014 0022 movs r2, #0 52 0016 5A61 str r2, [r3, #20] 1056:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1057:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Update WRP only if at least 1 selected sector */ 1058:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (OB_WRP != 0x00000000U) 53 .loc 1 1058 0 54 0018 002C cmp r4, #0 55 001a 0BD0 beq .L3 1059:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1060:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if ((OB_WRP & WRP_MASK_LOW) != 0x00000000U) 56 .loc 1 1060 0 57 001c 2304 lsls r3, r4, #16 58 001e 09D0 beq .L3 1061:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1062:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (NewState != OB_WRPSTATE_DISABLE) 59 .loc 1 1062 0 60 0020 002D cmp r5, #0 61 0022 28D0 beq .L4 1063:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1064:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** WRP_Data = (uint16_t)(((OB_WRP & WRP_MASK_LOW) | OB->WRP01)); 62 .loc 1 1064 0 63 0024 2449 ldr r1, .L9+8 64 0026 8B68 ldr r3, [r1, #8] 65 0028 2343 orrs r3, r4 66 002a 9BB2 uxth r3, r3 67 .LVL4: 1065:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP01 = (uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); 68 .loc 1 1065 0 69 002c DA43 mvns r2, r3 70 002e 1204 lsls r2, r2, #16 71 0030 1343 orrs r3, r2 72 .LVL5: 73 0032 8B60 str r3, [r1, #8] 74 .L3: 1066:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1067:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else ARM GAS /tmp/cc9alhJF.s page 21 1068:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1069:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** WRP_Data = (uint16_t)(~OB_WRP & (WRP_MASK_LOW & OB->WRP01)); 1070:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP01 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); 1071:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1072:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1073:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1074:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(STM32L071xx) || defined(STM32L072xx) || defined(STM32L073xx) || defined(STM32L081xx) || 1075:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Update WRP only if at least 1 selected sector */ 1076:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (OB_WRP != 0x00000000U) 75 .loc 1 1076 0 76 0034 002C cmp r4, #0 77 0036 0CD0 beq .L5 1077:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1078:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if ((OB_WRP & WRP_MASK_HIGH) != 0x00000000U) 78 .loc 1 1078 0 79 0038 230C lsrs r3, r4, #16 80 003a 0AD0 beq .L5 1079:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1080:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (NewState != OB_WRPSTATE_DISABLE) 81 .loc 1 1080 0 82 003c 002D cmp r5, #0 83 003e 23D0 beq .L6 1081:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1082:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** WRP_Data = (uint16_t)((((OB_WRP & WRP_MASK_HIGH) >> 16U | OB->WRP23))); 84 .loc 1 1082 0 85 0040 1C00 movs r4, r3 86 .LVL6: 87 0042 1D4A ldr r2, .L9+8 88 0044 D368 ldr r3, [r2, #12] 89 0046 1C43 orrs r4, r3 90 0048 A4B2 uxth r4, r4 91 .LVL7: 1083:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP23 = (uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); 92 .loc 1 1083 0 93 004a E343 mvns r3, r4 94 004c 1B04 lsls r3, r3, #16 95 004e 1C43 orrs r4, r3 96 .LVL8: 97 0050 D460 str r4, [r2, #12] 98 .L5: 99 .LVL9: 1084:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1085:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else 1086:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1087:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** WRP_Data = (uint16_t)((((~OB_WRP & WRP_MASK_HIGH) >> 16U & OB->WRP23))); 1088:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP23 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); 1089:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1090:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1091:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1092:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1093:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB_WRP = Sector2; 1094:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Update WRP only if at least 1 selected sector */ 1095:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (OB_WRP != 0x00000000U) 100 .loc 1 1095 0 101 0052 002E cmp r6, #0 102 0054 0BD0 beq .L2 1096:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { ARM GAS /tmp/cc9alhJF.s page 22 1097:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if ((OB_WRP & WRP_MASK_LOW) != 0x00000000U) 103 .loc 1 1097 0 104 0056 3304 lsls r3, r6, #16 105 0058 09D0 beq .L2 1098:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1099:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (NewState != OB_WRPSTATE_DISABLE) 106 .loc 1 1099 0 107 005a 002D cmp r5, #0 108 005c 1ED1 bne .L8 1100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** WRP_Data = (uint16_t)(((OB_WRP & WRP_MASK_LOW) | OB->WRP45)); 1102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP45 =(uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); 1103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** else 1105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** WRP_Data = (uint16_t)(~OB_WRP & (WRP_MASK_LOW & OB->WRP45)); 109 .loc 1 1106 0 110 005e 1649 ldr r1, .L9+8 111 0060 0B69 ldr r3, [r1, #16] 112 0062 B343 bics r3, r6 113 0064 9BB2 uxth r3, r3 114 .LVL10: 1107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP45 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); 115 .loc 1 1107 0 116 0066 DA43 mvns r2, r3 117 0068 1204 lsls r2, r2, #16 118 006a 1343 orrs r3, r2 119 .LVL11: 120 006c 0B61 str r3, [r1, #16] 121 .LVL12: 122 .L2: 1108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* STM32L071xx || STM32L072xx || STM32L073xx || STM32L081xx || STM32L082xx || STM32L083xx */ 1112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 1114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 123 .loc 1 1114 0 124 006e 1048 ldr r0, .L9 125 .LVL13: 126 0070 FFF7FEFF bl FLASH_WaitForLastOperation 127 .LVL14: 1115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the write protection operation Status */ 1117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 1118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 128 .loc 1 1118 0 129 @ sp needed 130 .LVL15: 131 0074 70BD pop {r4, r5, r6, pc} 132 .LVL16: 133 .L4: 1069:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP01 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); 134 .loc 1 1069 0 135 0076 1049 ldr r1, .L9+8 136 0078 8B68 ldr r3, [r1, #8] ARM GAS /tmp/cc9alhJF.s page 23 137 007a A343 bics r3, r4 138 007c 9BB2 uxth r3, r3 139 .LVL17: 1070:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 140 .loc 1 1070 0 141 007e DA43 mvns r2, r3 142 0080 1204 lsls r2, r2, #16 143 0082 1343 orrs r3, r2 144 .LVL18: 145 0084 8B60 str r3, [r1, #8] 146 0086 D5E7 b .L3 147 .L6: 1087:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP23 = (uint32_t)((~WRP_Data) << 16U) | (WRP_Data); 148 .loc 1 1087 0 149 0088 E443 mvns r4, r4 150 .LVL19: 151 008a 240C lsrs r4, r4, #16 152 .LVL20: 153 008c 0A4A ldr r2, .L9+8 154 008e D368 ldr r3, [r2, #12] 155 0090 2340 ands r3, r4 156 .LVL21: 1088:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 157 .loc 1 1088 0 158 0092 DC43 mvns r4, r3 159 0094 2404 lsls r4, r4, #16 160 0096 1C43 orrs r4, r3 161 0098 D460 str r4, [r2, #12] 162 009a DAE7 b .L5 163 .LVL22: 164 .L8: 1101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->WRP45 =(uint32_t)(~(WRP_Data) << 16U) | (WRP_Data); 165 .loc 1 1101 0 166 009c 064A ldr r2, .L9+8 167 009e 1369 ldr r3, [r2, #16] 168 00a0 1E43 orrs r6, r3 169 .LVL23: 170 00a2 B6B2 uxth r6, r6 171 .LVL24: 1102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 172 .loc 1 1102 0 173 00a4 F343 mvns r3, r6 174 00a6 1B04 lsls r3, r3, #16 175 00a8 1E43 orrs r6, r3 176 .LVL25: 177 00aa 1661 str r6, [r2, #16] 178 00ac DFE7 b .L2 179 .L10: 180 00ae C046 .align 2 181 .L9: 182 00b0 50C30000 .word 50000 183 00b4 00000000 .word pFlash 184 00b8 0000F81F .word 536346624 185 .cfi_endproc 186 .LFE62: 188 .section .text.HAL_FLASHEx_Erase,"ax",%progbits 189 .align 1 ARM GAS /tmp/cc9alhJF.s page 24 190 .global HAL_FLASHEx_Erase 191 .syntax unified 192 .code 16 193 .thumb_func 194 .fpu softvfp 196 HAL_FLASHEx_Erase: 197 .LFB39: 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 198 .loc 1 188 0 199 .cfi_startproc 200 @ args = 0, pretend = 0, frame = 0 201 @ frame_needed = 0, uses_anonymous_args = 0 202 .LVL26: 203 0000 F0B5 push {r4, r5, r6, r7, lr} 204 .LCFI1: 205 .cfi_def_cfa_offset 20 206 .cfi_offset 4, -20 207 .cfi_offset 5, -16 208 .cfi_offset 6, -12 209 .cfi_offset 7, -8 210 .cfi_offset 14, -4 211 0002 C646 mov lr, r8 212 0004 00B5 push {lr} 213 .LCFI2: 214 .cfi_def_cfa_offset 24 215 .cfi_offset 8, -24 216 0006 0600 movs r6, r0 217 0008 8846 mov r8, r1 218 .LVL27: 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 219 .loc 1 193 0 220 000a 204B ldr r3, .L19 221 000c 1B7C ldrb r3, [r3, #16] 222 000e 012B cmp r3, #1 223 0010 3AD0 beq .L17 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 224 .loc 1 193 0 is_stmt 0 discriminator 2 225 0012 1E4B ldr r3, .L19 226 0014 0122 movs r2, #1 227 0016 1A74 strb r2, [r3, #16] 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 228 .loc 1 196 0 is_stmt 1 discriminator 2 229 0018 1D48 ldr r0, .L19+4 230 .LVL28: 231 001a FFF7FEFF bl FLASH_WaitForLastOperation 232 .LVL29: 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 233 .loc 1 198 0 discriminator 2 234 001e 0028 cmp r0, #0 235 0020 2CD1 bne .L13 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 236 .loc 1 201 0 237 0022 0123 movs r3, #1 238 0024 5B42 rsbs r3, r3, #0 239 0026 4246 mov r2, r8 240 0028 1360 str r3, [r2] 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress); ARM GAS /tmp/cc9alhJF.s page 25 241 .loc 1 210 0 242 002a 7568 ldr r5, [r6, #4] 243 .LVL30: 244 .L14: 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 245 .loc 1 211 0 discriminator 1 246 002c B368 ldr r3, [r6, #8] 247 002e DB01 lsls r3, r3, #7 248 0030 7268 ldr r2, [r6, #4] 249 0032 9446 mov ip, r2 250 0034 6344 add r3, r3, ip 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress); 251 .loc 1 210 0 discriminator 1 252 0036 AB42 cmp r3, r5 253 0038 20D9 bls .L13 254 .LVL31: 255 .LBB18: 256 .LBB19: 1119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Programs the FLASH User Option Byte: IWDG_SW / RST_STOP / RST_STDBY. 1122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_IWDG Selects the WDG mode. 1123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 1124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_IWDG_SW Software WDG selected 1125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_IWDG_HW Hardware WDG selected 1126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_STOP Reset event when entering STOP mode. 1127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 1128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_STOP_NORST No reset generated when entering in STOP 1129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_STOP_RST Reset generated when entering in STOP 1130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_STDBY Reset event when entering Standby mode. 1131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 1132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_STDBY_NORST No reset generated when entering in STANDBY 1133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_STDBY_RST Reset generated when entering in STANDBY 1134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 1135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t OB_IWDG, uint8_t OB_STOP, uint8_t OB_STDBY) 1137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp = 0, tmp1 = 0; 1140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 1142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_SOURCE(OB_IWDG)); 1143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_STOP_SOURCE(OB_STOP)); 1144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_STDBY_SOURCE(OB_STDBY)); 1145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get the User Option byte register */ 1147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = OB->USER & ((~FLASH_OPTR_USER) >> 16U); 1148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Calculate the user option byte to write */ 1150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp = (uint32_t)(((uint32_t)~((uint32_t)((uint32_t)(OB_IWDG) | (uint32_t)(OB_STOP) | (uint32_t)(O 1151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= ((uint32_t)(OB_IWDG) | ((uint32_t)OB_STOP) | (uint32_t)(OB_STDBY) | tmp1); 1152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 1154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 1155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 1157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { ARM GAS /tmp/cc9alhJF.s page 26 1158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 1159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Write the User Option Byte */ 1162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->USER = tmp; 1163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 1165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 1166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the Option Byte program Status */ 1169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 1170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #if defined(FLASH_OPTR_BFB2) 1173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Configures to boot from Bank1 or Bank2. 1175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param OB_BOOT select the FLASH Bank to boot from. 1176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 1177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * This parameter can be one of the following values: 1178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOOT_BANK1 BFB2 option bit reset 1179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @arg @ref OB_BOOT_BANK2 BFB2 option bit set 1180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval HAL status 1181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_BootConfig(uint8_t OB_BOOT) 1183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** uint32_t tmp = 0U, tmp1 = 0U; 1186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Check the parameters */ 1188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** assert_param(IS_OB_BOOT_BANK(OB_BOOT)); 1189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get the User Option byte register and BOR Level*/ 1191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp1 = OB->USER & ((~FLASH_OPTR_BFB2) >> 16U); 1192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Calculate the option byte to write */ 1194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp = (uint32_t)~(OB_BOOT | tmp1) << 16U; 1195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= (OB_BOOT | tmp1); 1196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 1198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 1199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if(status == HAL_OK) 1201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 1203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Write the BOOT Option Byte */ 1206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** OB->USER = tmp; 1207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 1209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 1210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Return the Option Byte program Status */ 1213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 1214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } ARM GAS /tmp/cc9alhJF.s page 27 1215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif /* FLASH_OPTR_BFB2 */ 1217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 1220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @} 1224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @addtogroup FLASH 1227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 1228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** @addtogroup FLASH_Private_Functions 1232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @{ 1233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /** 1236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @brief Erases a specified page in program memory. 1237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @param PageAddress The page address in program memory to be erased. 1238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @note A Page is erased in the Program memory only if the address to load 1239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * is the start address of a page (multiple of @ref FLASH_PAGE_SIZE bytes). 1240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** * @retval None 1241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** */ 1242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** void FLASH_PageErase(uint32_t PageAddress) 1243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 1245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 257 .loc 1 1245 0 258 003a 0022 movs r2, #0 259 003c 134B ldr r3, .L19 260 003e 5A61 str r2, [r3, #20] 1246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Set the ERASE bit */ 1248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); 261 .loc 1 1248 0 262 0040 144C ldr r4, .L19+8 263 0042 6168 ldr r1, [r4, #4] 264 0044 8023 movs r3, #128 265 0046 9B00 lsls r3, r3, #2 266 0048 0B43 orrs r3, r1 267 004a 6360 str r3, [r4, #4] 1249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Set PROG bit */ 1251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 268 .loc 1 1251 0 269 004c 6368 ldr r3, [r4, #4] 270 004e 0827 movs r7, #8 271 0050 3B43 orrs r3, r7 272 0052 6360 str r3, [r4, #4] 1252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Write 00000000h to the first word of the program page to erase */ 1254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** *(__IO uint32_t *)(uint32_t)(PageAddress & ~(FLASH_PAGE_SIZE - 1)) = 0x00000000; 273 .loc 1 1254 0 ARM GAS /tmp/cc9alhJF.s page 28 274 0054 7F23 movs r3, #127 275 0056 2900 movs r1, r5 276 0058 9943 bics r1, r3 277 005a 0A60 str r2, [r1] 278 .LVL32: 279 .LBE19: 280 .LBE18: 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 281 .loc 1 217 0 282 005c 0C48 ldr r0, .L19+4 283 .LVL33: 284 005e FFF7FEFF bl FLASH_WaitForLastOperation 285 .LVL34: 220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 286 .loc 1 220 0 287 0062 6368 ldr r3, [r4, #4] 288 0064 BB43 bics r3, r7 289 0066 6360 str r3, [r4, #4] 221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 290 .loc 1 221 0 291 0068 6368 ldr r3, [r4, #4] 292 006a 0B4A ldr r2, .L19+12 293 006c 1340 ands r3, r2 294 006e 6360 str r3, [r4, #4] 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 295 .loc 1 223 0 296 0070 0028 cmp r0, #0 297 0072 01D1 bne .L18 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 298 .loc 1 212 0 299 0074 8035 adds r5, r5, #128 300 .LVL35: 301 0076 D9E7 b .L14 302 .L18: 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** break; 303 .loc 1 226 0 304 0078 4346 mov r3, r8 305 007a 1D60 str r5, [r3] 306 .LVL36: 307 .L13: 233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 308 .loc 1 233 0 309 007c 034B ldr r3, .L19 310 007e 0022 movs r2, #0 311 0080 1A74 strb r2, [r3, #16] 312 .LVL37: 313 .L12: 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 314 .loc 1 236 0 315 @ sp needed 316 .LVL38: 317 .LVL39: 318 0082 04BC pop {r2} 319 0084 9046 mov r8, r2 320 0086 F0BD pop {r4, r5, r6, r7, pc} 321 .LVL40: 322 .L17: ARM GAS /tmp/cc9alhJF.s page 29 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 323 .loc 1 193 0 324 0088 0220 movs r0, #2 325 .LVL41: 326 008a FAE7 b .L12 327 .L20: 328 .align 2 329 .L19: 330 008c 00000000 .word pFlash 331 0090 50C30000 .word 50000 332 0094 00200240 .word 1073881088 333 0098 FFFDFFFF .word -513 334 .cfi_endproc 335 .LFE39: 337 .section .text.HAL_FLASHEx_Erase_IT,"ax",%progbits 338 .align 1 339 .global HAL_FLASHEx_Erase_IT 340 .syntax unified 341 .code 16 342 .thumb_func 343 .fpu softvfp 345 HAL_FLASHEx_Erase_IT: 346 .LFB40: 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 347 .loc 1 252 0 348 .cfi_startproc 349 @ args = 0, pretend = 0, frame = 0 350 @ frame_needed = 0, uses_anonymous_args = 0 351 .LVL42: 352 0000 70B5 push {r4, r5, r6, lr} 353 .LCFI3: 354 .cfi_def_cfa_offset 16 355 .cfi_offset 4, -16 356 .cfi_offset 5, -12 357 .cfi_offset 6, -8 358 .cfi_offset 14, -4 359 0002 0400 movs r4, r0 360 .LVL43: 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 361 .loc 1 256 0 362 0004 1A4B ldr r3, .L27 363 0006 1B78 ldrb r3, [r3] 364 0008 002B cmp r3, #0 365 000a 2CD1 bne .L24 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 366 .loc 1 268 0 367 000c 184B ldr r3, .L27 368 000e 1B7C ldrb r3, [r3, #16] 369 0010 012B cmp r3, #1 370 0012 2AD0 beq .L25 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 371 .loc 1 268 0 is_stmt 0 discriminator 2 372 0014 164B ldr r3, .L27 373 0016 0122 movs r2, #1 374 0018 1A74 strb r2, [r3, #16] 271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 375 .loc 1 271 0 is_stmt 1 discriminator 2 ARM GAS /tmp/cc9alhJF.s page 30 376 001a 1648 ldr r0, .L27+4 377 .LVL44: 378 001c FFF7FEFF bl FLASH_WaitForLastOperation 379 .LVL45: 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 380 .loc 1 273 0 discriminator 2 381 0020 0028 cmp r0, #0 382 0022 03D0 beq .L26 288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 383 .loc 1 288 0 384 0024 124B ldr r3, .L27 385 0026 0022 movs r2, #0 386 0028 1A74 strb r2, [r3, #16] 387 002a 1DE0 b .L22 388 .L26: 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 389 .loc 1 276 0 390 002c 124B ldr r3, .L27+8 391 002e 5968 ldr r1, [r3, #4] 392 0030 C022 movs r2, #192 393 0032 9202 lsls r2, r2, #10 394 0034 0A43 orrs r2, r1 395 0036 5A60 str r2, [r3, #4] 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.NbPagesToErase = pEraseInit->NbPages; 396 .loc 1 278 0 397 0038 0D4A ldr r2, .L27 398 003a 0121 movs r1, #1 399 003c 1170 strb r1, [r2] 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pFlash.Page = pEraseInit->PageAddress; 400 .loc 1 279 0 401 003e A168 ldr r1, [r4, #8] 402 0040 5160 str r1, [r2, #4] 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 403 .loc 1 280 0 404 0042 6168 ldr r1, [r4, #4] 405 0044 D160 str r1, [r2, #12] 283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 406 .loc 1 283 0 407 0046 6168 ldr r1, [r4, #4] 408 .LVL46: 409 .LBB20: 410 .LBB21: 1245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 411 .loc 1 1245 0 412 0048 0024 movs r4, #0 413 .LVL47: 414 004a 5461 str r4, [r2, #20] 1248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 415 .loc 1 1248 0 416 004c 5D68 ldr r5, [r3, #4] 417 004e 8022 movs r2, #128 418 0050 9200 lsls r2, r2, #2 419 0052 2A43 orrs r2, r5 420 0054 5A60 str r2, [r3, #4] 1251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 421 .loc 1 1251 0 422 0056 5A68 ldr r2, [r3, #4] ARM GAS /tmp/cc9alhJF.s page 31 423 0058 0825 movs r5, #8 424 005a 2A43 orrs r2, r5 425 005c 5A60 str r2, [r3, #4] 426 .loc 1 1254 0 427 005e 7F23 movs r3, #127 428 0060 9943 bics r1, r3 429 .LVL48: 430 0062 0C60 str r4, [r1] 431 0064 00E0 b .L22 432 .LVL49: 433 .L24: 434 .LBE21: 435 .LBE20: 258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 436 .loc 1 258 0 437 0066 0120 movs r0, #1 438 .LVL50: 439 .L22: 292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 440 .loc 1 292 0 441 @ sp needed 442 0068 70BD pop {r4, r5, r6, pc} 443 .LVL51: 444 .L25: 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 445 .loc 1 268 0 446 006a 0220 movs r0, #2 447 .LVL52: 448 006c FCE7 b .L22 449 .L28: 450 006e C046 .align 2 451 .L27: 452 0070 00000000 .word pFlash 453 0074 50C30000 .word 50000 454 0078 00200240 .word 1073881088 455 .cfi_endproc 456 .LFE40: 458 .section .text.HAL_FLASHEx_OBProgram,"ax",%progbits 459 .align 1 460 .global HAL_FLASHEx_OBProgram 461 .syntax unified 462 .code 16 463 .thumb_func 464 .fpu softvfp 466 HAL_FLASHEx_OBProgram: 467 .LFB41: 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 468 .loc 1 344 0 469 .cfi_startproc 470 @ args = 0, pretend = 0, frame = 0 471 @ frame_needed = 0, uses_anonymous_args = 0 472 .LVL53: 473 0000 70B5 push {r4, r5, r6, lr} 474 .LCFI4: 475 .cfi_def_cfa_offset 16 476 .cfi_offset 4, -16 477 .cfi_offset 5, -12 ARM GAS /tmp/cc9alhJF.s page 32 478 .cfi_offset 6, -8 479 .cfi_offset 14, -4 480 0002 0400 movs r4, r0 481 .LVL54: 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 482 .loc 1 348 0 483 0004 514B ldr r3, .L50 484 0006 1B7C ldrb r3, [r3, #16] 485 0008 012B cmp r3, #1 486 000a 00D1 bne .LCB475 487 000c 9CE0 b .L40 @long jump 488 .LCB475: 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 489 .loc 1 348 0 is_stmt 0 discriminator 2 490 000e 0123 movs r3, #1 491 0010 4E4A ldr r2, .L50 492 0012 1374 strb r3, [r2, #16] 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 493 .loc 1 354 0 is_stmt 1 discriminator 2 494 0014 0268 ldr r2, [r0] 495 0016 1342 tst r3, r2 496 0018 11D1 bne .L42 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 497 .loc 1 345 0 498 001a 0120 movs r0, #1 499 .LVL55: 500 .L31: 371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 501 .loc 1 371 0 502 001c 2368 ldr r3, [r4] 503 001e 9B07 lsls r3, r3, #30 504 0020 18D4 bmi .L43 505 .LVL56: 506 .L32: 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 507 .loc 1 383 0 508 0022 2368 ldr r3, [r4] 509 0024 5B07 lsls r3, r3, #29 510 0026 34D4 bmi .L44 511 .LVL57: 512 .L34: 397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 513 .loc 1 397 0 514 0028 2368 ldr r3, [r4] 515 002a 1B07 lsls r3, r3, #28 516 002c 56D4 bmi .L45 517 .LVL58: 518 .L36: 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 519 .loc 1 409 0 520 002e 2368 ldr r3, [r4] 521 0030 DB06 lsls r3, r3, #27 522 0032 00D5 bpl .LCB522 523 0034 6FE0 b .L46 @long jump 524 .LCB522: 525 .LVL59: 526 .L38: ARM GAS /tmp/cc9alhJF.s page 33 414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 527 .loc 1 414 0 528 0036 454B ldr r3, .L50 529 0038 0022 movs r2, #0 530 003a 1A74 strb r2, [r3, #16] 531 .LVL60: 532 .L30: 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 533 .loc 1 417 0 534 @ sp needed 535 003c 70BD pop {r4, r5, r6, pc} 536 .LVL61: 537 .L42: 358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #else 538 .loc 1 358 0 539 003e 4268 ldr r2, [r0, #4] 540 0040 C168 ldr r1, [r0, #12] 541 0042 8068 ldr r0, [r0, #8] 542 .LVL62: 543 0044 FFF7FEFF bl FLASH_OB_ProtectedSectorsConfig 544 .LVL63: 362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 545 .loc 1 362 0 546 0048 0028 cmp r0, #0 547 004a E7D0 beq .L31 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 548 .loc 1 365 0 549 004c 3F4B ldr r3, .L50 550 004e 0022 movs r2, #0 551 0050 1A74 strb r2, [r3, #16] 366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 552 .loc 1 366 0 553 0052 F3E7 b .L30 554 .L43: 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 555 .loc 1 373 0 556 0054 237C ldrb r3, [r4, #16] 557 .LVL64: 558 .LBB30: 559 .LBB31: 838:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 560 .loc 1 838 0 561 0056 3E4A ldr r2, .L50+4 562 0058 1168 ldr r1, [r2] 563 .LVL65: 842:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 564 .loc 1 842 0 565 005a 1268 ldr r2, [r2] 566 005c 8021 movs r1, #128 567 005e 4900 lsls r1, r1, #1 568 0060 0A40 ands r2, r1 569 .LVL66: 846:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)(OB_RDP | tmp3))); 570 .loc 1 846 0 571 0062 1343 orrs r3, r2 572 .LVL67: 573 0064 DD43 mvns r5, r3 ARM GAS /tmp/cc9alhJF.s page 34 574 .LVL68: 847:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 575 .loc 1 847 0 576 0066 2D04 lsls r5, r5, #16 577 .LVL69: 578 0068 1D43 orrs r5, r3 579 .LVL70: 850:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 580 .loc 1 850 0 581 006a 3A48 ldr r0, .L50+8 582 .LVL71: 583 006c FFF7FEFF bl FLASH_WaitForLastOperation 584 .LVL72: 852:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 585 .loc 1 852 0 586 0070 0028 cmp r0, #0 587 0072 05D0 beq .L47 588 .LVL73: 589 .L33: 590 .LBE31: 591 .LBE30: 374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 592 .loc 1 374 0 593 0074 0028 cmp r0, #0 594 0076 D4D0 beq .L32 377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 595 .loc 1 377 0 596 0078 344B ldr r3, .L50 597 007a 0022 movs r2, #0 598 007c 1A74 strb r2, [r3, #16] 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 599 .loc 1 378 0 600 007e DDE7 b .L30 601 .LVL74: 602 .L47: 603 .LBB33: 604 .LBB32: 855:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 605 .loc 1 855 0 606 0080 324B ldr r3, .L50 607 0082 0022 movs r2, #0 608 0084 5A61 str r2, [r3, #20] 858:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 609 .loc 1 858 0 610 0086 324B ldr r3, .L50+4 611 0088 1D60 str r5, [r3] 861:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 612 .loc 1 861 0 613 008a 3248 ldr r0, .L50+8 614 .LVL75: 615 008c FFF7FEFF bl FLASH_WaitForLastOperation 616 .LVL76: 617 0090 F0E7 b .L33 618 .LVL77: 619 .L44: 620 .LBE32: 621 .LBE33: ARM GAS /tmp/cc9alhJF.s page 35 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->USERConfig & OB_STOP_NORST, 622 .loc 1 385 0 623 0092 A37C ldrb r3, [r4, #18] 624 0094 1021 movs r1, #16 625 0096 1940 ands r1, r3 626 0098 2020 movs r0, #32 627 .LVL78: 628 009a 1840 ands r0, r3 629 009c 4022 movs r2, #64 630 009e 1A40 ands r2, r3 631 .LVL79: 632 .LBB34: 633 .LBB35: 1147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 634 .loc 1 1147 0 635 00a0 2B4B ldr r3, .L50+4 636 00a2 5B68 ldr r3, [r3, #4] 637 00a4 2C4D ldr r5, .L50+12 638 00a6 2B40 ands r3, r5 639 .LVL80: 1150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= ((uint32_t)(OB_IWDG) | ((uint32_t)OB_STOP) | (uint32_t)(OB_STDBY) | tmp1); 640 .loc 1 1150 0 641 00a8 0143 orrs r1, r0 642 .LVL81: 643 00aa 0A43 orrs r2, r1 644 .LVL82: 645 00ac 1343 orrs r3, r2 646 .LVL83: 647 00ae DD43 mvns r5, r3 648 00b0 2D04 lsls r5, r5, #16 649 .LVL84: 1151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 650 .loc 1 1151 0 651 00b2 1D43 orrs r5, r3 652 .LVL85: 1154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 653 .loc 1 1154 0 654 00b4 2748 ldr r0, .L50+8 655 .LVL86: 656 00b6 FFF7FEFF bl FLASH_WaitForLastOperation 657 .LVL87: 1156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 658 .loc 1 1156 0 659 00ba 0028 cmp r0, #0 660 00bc 05D0 beq .L48 661 .LVL88: 662 .L35: 663 .LBE35: 664 .LBE34: 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 665 .loc 1 388 0 666 00be 0028 cmp r0, #0 667 00c0 B2D0 beq .L34 391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 668 .loc 1 391 0 669 00c2 224B ldr r3, .L50 670 00c4 0022 movs r2, #0 ARM GAS /tmp/cc9alhJF.s page 36 671 00c6 1A74 strb r2, [r3, #16] 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 672 .loc 1 392 0 673 00c8 B8E7 b .L30 674 .LVL89: 675 .L48: 676 .LBB37: 677 .LBB36: 1159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 678 .loc 1 1159 0 679 00ca 204B ldr r3, .L50 680 00cc 0022 movs r2, #0 681 00ce 5A61 str r2, [r3, #20] 1162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 682 .loc 1 1162 0 683 00d0 1F4B ldr r3, .L50+4 684 00d2 5D60 str r5, [r3, #4] 1165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 685 .loc 1 1165 0 686 00d4 1F48 ldr r0, .L50+8 687 .LVL90: 688 00d6 FFF7FEFF bl FLASH_WaitForLastOperation 689 .LVL91: 690 00da F0E7 b .L35 691 .LVL92: 692 .L45: 693 .LBE36: 694 .LBE37: 399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if (status != HAL_OK) 695 .loc 1 399 0 696 00dc 637C ldrb r3, [r4, #17] 697 .LVL93: 698 .LBB38: 699 .LBB39: 890:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 700 .loc 1 890 0 701 00de 1C4A ldr r2, .L50+4 702 00e0 5268 ldr r2, [r2, #4] 703 00e2 1E49 ldr r1, .L50+16 704 00e4 0A40 ands r2, r1 705 .LVL94: 893:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= (OB_BOR | tmp1); 706 .loc 1 893 0 707 00e6 1343 orrs r3, r2 708 .LVL95: 709 00e8 DD43 mvns r5, r3 710 00ea 2D04 lsls r5, r5, #16 711 .LVL96: 894:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 712 .loc 1 894 0 713 00ec 1D43 orrs r5, r3 714 .LVL97: 897:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 715 .loc 1 897 0 716 00ee 1948 ldr r0, .L50+8 717 .LVL98: 718 00f0 FFF7FEFF bl FLASH_WaitForLastOperation ARM GAS /tmp/cc9alhJF.s page 37 719 .LVL99: 899:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 720 .loc 1 899 0 721 00f4 0028 cmp r0, #0 722 00f6 05D0 beq .L49 723 .LVL100: 724 .L37: 725 .LBE39: 726 .LBE38: 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 727 .loc 1 400 0 728 00f8 0028 cmp r0, #0 729 00fa 98D0 beq .L36 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** return status; 730 .loc 1 403 0 731 00fc 134B ldr r3, .L50 732 00fe 0022 movs r2, #0 733 0100 1A74 strb r2, [r3, #16] 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 734 .loc 1 404 0 735 0102 9BE7 b .L30 736 .LVL101: 737 .L49: 738 .LBB41: 739 .LBB40: 902:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 740 .loc 1 902 0 741 0104 114B ldr r3, .L50 742 0106 0022 movs r2, #0 743 0108 5A61 str r2, [r3, #20] 905:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 744 .loc 1 905 0 745 010a 114B ldr r3, .L50+4 746 010c 5D60 str r5, [r3, #4] 908:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 747 .loc 1 908 0 748 010e 1148 ldr r0, .L50+8 749 .LVL102: 750 0110 FFF7FEFF bl FLASH_WaitForLastOperation 751 .LVL103: 752 0114 F0E7 b .L37 753 .LVL104: 754 .L46: 755 .LBE40: 756 .LBE41: 411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 757 .loc 1 411 0 758 0116 E37C ldrb r3, [r4, #19] 759 .LVL105: 760 .LBB42: 761 .LBB43: 926:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 762 .loc 1 926 0 763 0118 DB03 lsls r3, r3, #15 764 .LVL106: 932:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 765 .loc 1 932 0 ARM GAS /tmp/cc9alhJF.s page 38 766 011a 0D4A ldr r2, .L50+4 767 011c 5268 ldr r2, [r2, #4] 768 011e 5204 lsls r2, r2, #17 769 0120 520C lsrs r2, r2, #17 770 .LVL107: 935:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= OB_Bits | tmp1; 771 .loc 1 935 0 772 0122 1343 orrs r3, r2 773 .LVL108: 774 0124 DC43 mvns r4, r3 775 .LVL109: 776 0126 2404 lsls r4, r4, #16 777 .LVL110: 936:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 778 .loc 1 936 0 779 0128 1C43 orrs r4, r3 780 .LVL111: 939:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 781 .loc 1 939 0 782 012a 0A48 ldr r0, .L50+8 783 .LVL112: 784 012c FFF7FEFF bl FLASH_WaitForLastOperation 785 .LVL113: 941:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 786 .loc 1 941 0 787 0130 0028 cmp r0, #0 788 0132 00D0 beq .LCB858 789 0134 7FE7 b .L38 @long jump 790 .LCB858: 944:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Program OB */ 791 .loc 1 944 0 792 0136 054B ldr r3, .L50 793 0138 0022 movs r2, #0 794 013a 5A61 str r2, [r3, #20] 946:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 795 .loc 1 946 0 796 013c 044B ldr r3, .L50+4 797 013e 5C60 str r4, [r3, #4] 948:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 798 .loc 1 948 0 799 0140 0448 ldr r0, .L50+8 800 .LVL114: 801 0142 FFF7FEFF bl FLASH_WaitForLastOperation 802 .LVL115: 803 0146 76E7 b .L38 804 .LVL116: 805 .L40: 806 .LBE43: 807 .LBE42: 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 808 .loc 1 348 0 809 0148 0220 movs r0, #2 810 .LVL117: 811 014a 77E7 b .L30 812 .L51: 813 .align 2 814 .L50: ARM GAS /tmp/cc9alhJF.s page 39 815 014c 00000000 .word pFlash 816 0150 0000F81F .word 536346624 817 0154 50C30000 .word 50000 818 0158 8FFF0000 .word 65423 819 015c F0FF0000 .word 65520 820 .cfi_endproc 821 .LFE41: 823 .section .text.HAL_FLASHEx_OBGetConfig,"ax",%progbits 824 .align 1 825 .global HAL_FLASHEx_OBGetConfig 826 .syntax unified 827 .code 16 828 .thumb_func 829 .fpu softvfp 831 HAL_FLASHEx_OBGetConfig: 832 .LFB42: 427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER | OPTIONBYTE_BOR; 833 .loc 1 427 0 834 .cfi_startproc 835 @ args = 0, pretend = 0, frame = 0 836 @ frame_needed = 0, uses_anonymous_args = 0 837 @ link register save eliminated. 838 .LVL118: 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 839 .loc 1 428 0 840 0000 0F23 movs r3, #15 841 0002 0360 str r3, [r0] 842 .LBB44: 843 .LBB45: 1005:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 844 .loc 1 1005 0 845 0004 0A4B ldr r3, .L53 846 0006 1A6A ldr r2, [r3, #32] 847 .LBE45: 848 .LBE44: 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 849 .loc 1 431 0 850 0008 8260 str r2, [r0, #8] 851 .LBB46: 852 .LBB47: 1016:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 853 .loc 1 1016 0 854 000a 8022 movs r2, #128 855 000c 9A58 ldr r2, [r3, r2] 856 .LBE47: 857 .LBE46: 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 858 .loc 1 434 0 859 000e C260 str r2, [r0, #12] 860 .LBB48: 861 .LBB49: 974:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 862 .loc 1 974 0 863 0010 DA69 ldr r2, [r3, #28] 864 .LBE49: 865 .LBE48: 438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ARM GAS /tmp/cc9alhJF.s page 40 866 .loc 1 438 0 867 0012 0274 strb r2, [r0, #16] 868 .LBB50: 869 .LBB51: 961:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 870 .loc 1 961 0 871 0014 D969 ldr r1, [r3, #28] 872 0016 090C lsrs r1, r1, #16 873 0018 7022 movs r2, #112 874 001a 0A40 ands r2, r1 875 .LBE51: 876 .LBE50: 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 877 .loc 1 441 0 878 001c 8274 strb r2, [r0, #18] 879 .LBB52: 880 .LBB53: 984:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 881 .loc 1 984 0 882 001e D969 ldr r1, [r3, #28] 883 0020 090C lsrs r1, r1, #16 884 0022 0F22 movs r2, #15 885 0024 0A40 ands r2, r1 886 .LBE53: 887 .LBE52: 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 888 .loc 1 444 0 889 0026 4274 strb r2, [r0, #17] 890 .LBB54: 891 .LBB55: 994:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 892 .loc 1 994 0 893 0028 DB69 ldr r3, [r3, #28] 894 002a DB0F lsrs r3, r3, #31 895 .LBE55: 896 .LBE54: 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 897 .loc 1 447 0 898 002c C374 strb r3, [r0, #19] 448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 899 .loc 1 448 0 900 @ sp needed 901 002e 7047 bx lr 902 .L54: 903 .align 2 904 .L53: 905 0030 00200240 .word 1073881088 906 .cfi_endproc 907 .LFE42: 909 .section .text.HAL_FLASHEx_AdvOBProgram,"ax",%progbits 910 .align 1 911 .global HAL_FLASHEx_AdvOBProgram 912 .syntax unified 913 .code 16 914 .thumb_func 915 .fpu softvfp 917 HAL_FLASHEx_AdvOBProgram: ARM GAS /tmp/cc9alhJF.s page 41 918 .LFB43: 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 919 .loc 1 460 0 920 .cfi_startproc 921 @ args = 0, pretend = 0, frame = 0 922 @ frame_needed = 0, uses_anonymous_args = 0 923 .LVL119: 924 0000 10B5 push {r4, lr} 925 .LCFI5: 926 .cfi_def_cfa_offset 8 927 .cfi_offset 4, -8 928 .cfi_offset 14, -4 929 0002 0400 movs r4, r0 930 .LVL120: 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 931 .loc 1 469 0 932 0004 0368 ldr r3, [r0] 933 0006 DB07 lsls r3, r3, #31 934 0008 04D4 bmi .L60 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 935 .loc 1 461 0 936 000a 0120 movs r0, #1 937 .LVL121: 938 .L56: 485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 939 .loc 1 485 0 940 000c 2368 ldr r3, [r4] 941 000e 9B07 lsls r3, r3, #30 942 0010 06D4 bmi .L61 943 .LVL122: 944 .L57: 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 945 .loc 1 493 0 946 @ sp needed 947 0012 10BD pop {r4, pc} 948 .LVL123: 949 .L60: 474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #else 950 .loc 1 474 0 951 0014 4268 ldr r2, [r0, #4] 952 0016 C168 ldr r1, [r0, #12] 953 0018 8068 ldr r0, [r0, #8] 954 .LVL124: 955 001a FFF7FEFF bl FLASH_OB_ProtectedSectorsConfig 956 .LVL125: 957 001e F5E7 b .L56 958 .L61: 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 959 .loc 1 487 0 960 0020 237C ldrb r3, [r4, #16] 961 .LVL126: 962 .LBB58: 963 .LBB59: 1191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 964 .loc 1 1191 0 965 0022 0B4A ldr r2, .L62 966 0024 5268 ldr r2, [r2, #4] ARM GAS /tmp/cc9alhJF.s page 42 967 0026 0B49 ldr r1, .L62+4 968 0028 0A40 ands r2, r1 969 .LVL127: 1194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp |= (OB_BOOT | tmp1); 970 .loc 1 1194 0 971 002a 1343 orrs r3, r2 972 .LVL128: 973 002c DC43 mvns r4, r3 974 .LVL129: 975 002e 2404 lsls r4, r4, #16 976 .LVL130: 1195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 977 .loc 1 1195 0 978 0030 1C43 orrs r4, r3 979 .LVL131: 1198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 980 .loc 1 1198 0 981 0032 0948 ldr r0, .L62+8 982 .LVL132: 983 0034 FFF7FEFF bl FLASH_WaitForLastOperation 984 .LVL133: 1200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 985 .loc 1 1200 0 986 0038 0028 cmp r0, #0 987 003a EAD1 bne .L57 1203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 988 .loc 1 1203 0 989 003c 074B ldr r3, .L62+12 990 003e 0022 movs r2, #0 991 0040 5A61 str r2, [r3, #20] 1206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 992 .loc 1 1206 0 993 0042 034B ldr r3, .L62 994 0044 5C60 str r4, [r3, #4] 1209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 995 .loc 1 1209 0 996 0046 0448 ldr r0, .L62+8 997 .LVL134: 998 0048 FFF7FEFF bl FLASH_WaitForLastOperation 999 .LVL135: 1000 004c E1E7 b .L57 1001 .L63: 1002 004e C046 .align 2 1003 .L62: 1004 0050 0000F81F .word 536346624 1005 0054 7FFF0000 .word 65407 1006 0058 50C30000 .word 50000 1007 005c 00000000 .word pFlash 1008 .LBE59: 1009 .LBE58: 1010 .cfi_endproc 1011 .LFE43: 1013 .section .text.HAL_FLASHEx_AdvOBGetConfig,"ax",%progbits 1014 .align 1 1015 .global HAL_FLASHEx_AdvOBGetConfig 1016 .syntax unified 1017 .code 16 ARM GAS /tmp/cc9alhJF.s page 43 1018 .thumb_func 1019 .fpu softvfp 1021 HAL_FLASHEx_AdvOBGetConfig: 1022 .LFB44: 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** pAdvOBInit->OptionType = 0; 1023 .loc 1 503 0 1024 .cfi_startproc 1025 @ args = 0, pretend = 0, frame = 0 1026 @ frame_needed = 0, uses_anonymous_args = 0 1027 @ link register save eliminated. 1028 .LVL136: 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1029 .loc 1 508 0 1030 0000 0122 movs r2, #1 1031 0002 0260 str r2, [r0] 512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Get PCROP protected sector */ 1032 .loc 1 512 0 1033 0004 084B ldr r3, .L65 1034 0006 D969 ldr r1, [r3, #28] 1035 0008 090A lsrs r1, r1, #8 1036 000a 0A40 ands r2, r1 1037 000c 4260 str r2, [r0, #4] 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1038 .loc 1 514 0 1039 000e 1A6A ldr r2, [r3, #32] 1040 0010 8260 str r2, [r0, #8] 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** #endif 1041 .loc 1 518 0 1042 0012 8022 movs r2, #128 1043 0014 9A58 ldr r2, [r3, r2] 1044 0016 C260 str r2, [r0, #12] 524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1045 .loc 1 524 0 1046 0018 0322 movs r2, #3 1047 001a 0260 str r2, [r0] 527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1048 .loc 1 527 0 1049 001c DA69 ldr r2, [r3, #28] 1050 001e 120C lsrs r2, r2, #16 1051 0020 8023 movs r3, #128 1052 0022 1340 ands r3, r2 1053 0024 0382 strh r3, [r0, #16] 530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1054 .loc 1 530 0 1055 @ sp needed 1056 0026 7047 bx lr 1057 .L66: 1058 .align 2 1059 .L65: 1060 0028 00200240 .word 1073881088 1061 .cfi_endproc 1062 .LFE44: 1064 .section .text.HAL_FLASHEx_OB_SelectPCROP,"ax",%progbits 1065 .align 1 1066 .global HAL_FLASHEx_OB_SelectPCROP 1067 .syntax unified 1068 .code 16 ARM GAS /tmp/cc9alhJF.s page 44 1069 .thumb_func 1070 .fpu softvfp 1072 HAL_FLASHEx_OB_SelectPCROP: 1073 .LFB45: 543:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1074 .loc 1 543 0 1075 .cfi_startproc 1076 @ args = 0, pretend = 0, frame = 0 1077 @ frame_needed = 0, uses_anonymous_args = 0 1078 0000 10B5 push {r4, lr} 1079 .LCFI6: 1080 .cfi_def_cfa_offset 8 1081 .cfi_offset 4, -8 1082 .cfi_offset 14, -4 1083 .LVL137: 550:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1084 .loc 1 550 0 1085 0002 0B48 ldr r0, .L70 1086 0004 FFF7FEFF bl FLASH_WaitForLastOperation 1087 .LVL138: 553:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1088 .loc 1 553 0 1089 0008 0A4B ldr r3, .L70+4 1090 000a 1B78 ldrb r3, [r3] 1091 .LVL139: 556:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1092 .loc 1 556 0 1093 000c 8022 movs r2, #128 1094 000e 5200 lsls r2, r2, #1 1095 0010 1A43 orrs r2, r3 1096 .LVL140: 559:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)optiontmp2)); 1097 .loc 1 559 0 1098 0012 D343 mvns r3, r2 1099 .LVL141: 560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1100 .loc 1 560 0 1101 0014 1B04 lsls r3, r3, #16 1102 .LVL142: 1103 0016 1343 orrs r3, r2 1104 .LVL143: 562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1105 .loc 1 562 0 1106 0018 0028 cmp r0, #0 1107 001a 00D0 beq .L69 1108 .LVL144: 1109 .L68: 576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1110 .loc 1 576 0 1111 @ sp needed 1112 001c 10BD pop {r4, pc} 1113 .LVL145: 1114 .L69: 565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1115 .loc 1 565 0 1116 001e 064A ldr r2, .L70+8 1117 .LVL146: ARM GAS /tmp/cc9alhJF.s page 45 1118 0020 0021 movs r1, #0 1119 0022 5161 str r1, [r2, #20] 568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1120 .loc 1 568 0 1121 0024 034A ldr r2, .L70+4 1122 0026 1360 str r3, [r2] 571:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1123 .loc 1 571 0 1124 0028 0148 ldr r0, .L70 1125 .LVL147: 1126 002a FFF7FEFF bl FLASH_WaitForLastOperation 1127 .LVL148: 1128 002e F5E7 b .L68 1129 .L71: 1130 .align 2 1131 .L70: 1132 0030 50C30000 .word 50000 1133 0034 0000F81F .word 536346624 1134 0038 00000000 .word pFlash 1135 .cfi_endproc 1136 .LFE45: 1138 .section .text.HAL_FLASHEx_OB_DeSelectPCROP,"ax",%progbits 1139 .align 1 1140 .global HAL_FLASHEx_OB_DeSelectPCROP 1141 .syntax unified 1142 .code 16 1143 .thumb_func 1144 .fpu softvfp 1146 HAL_FLASHEx_OB_DeSelectPCROP: 1147 .LFB46: 585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1148 .loc 1 585 0 1149 .cfi_startproc 1150 @ args = 0, pretend = 0, frame = 0 1151 @ frame_needed = 0, uses_anonymous_args = 0 1152 0000 10B5 push {r4, lr} 1153 .LCFI7: 1154 .cfi_def_cfa_offset 8 1155 .cfi_offset 4, -8 1156 .cfi_offset 14, -4 1157 .LVL149: 592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1158 .loc 1 592 0 1159 0002 0A48 ldr r0, .L75 1160 0004 FFF7FEFF bl FLASH_WaitForLastOperation 1161 .LVL150: 595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1162 .loc 1 595 0 1163 0008 094B ldr r3, .L75+4 1164 000a 1A78 ldrb r2, [r3] 1165 000c D2B2 uxtb r2, r2 1166 .LVL151: 601:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** tmp2 = (uint32_t)(((uint32_t)((uint32_t)(tmp1) << 16U)) | ((uint32_t)optiontmp2)); 1167 .loc 1 601 0 1168 000e D343 mvns r3, r2 1169 .LVL152: 602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ARM GAS /tmp/cc9alhJF.s page 46 1170 .loc 1 602 0 1171 0010 1B04 lsls r3, r3, #16 1172 .LVL153: 1173 0012 1343 orrs r3, r2 1174 .LVL154: 604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1175 .loc 1 604 0 1176 0014 0028 cmp r0, #0 1177 0016 00D0 beq .L74 1178 .LVL155: 1179 .L73: 618:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1180 .loc 1 618 0 1181 @ sp needed 1182 0018 10BD pop {r4, pc} 1183 .LVL156: 1184 .L74: 607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1185 .loc 1 607 0 1186 001a 064A ldr r2, .L75+8 1187 .LVL157: 1188 001c 0021 movs r1, #0 1189 001e 5161 str r1, [r2, #20] 610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1190 .loc 1 610 0 1191 0020 034A ldr r2, .L75+4 1192 0022 1360 str r3, [r2] 613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1193 .loc 1 613 0 1194 0024 0148 ldr r0, .L75 1195 .LVL158: 1196 0026 FFF7FEFF bl FLASH_WaitForLastOperation 1197 .LVL159: 1198 002a F5E7 b .L73 1199 .L76: 1200 .align 2 1201 .L75: 1202 002c 50C30000 .word 50000 1203 0030 0000F81F .word 536346624 1204 0034 00000000 .word pFlash 1205 .cfi_endproc 1206 .LFE46: 1208 .section .text.HAL_FLASHEx_DATAEEPROM_Unlock,"ax",%progbits 1209 .align 1 1210 .global HAL_FLASHEx_DATAEEPROM_Unlock 1211 .syntax unified 1212 .code 16 1213 .thumb_func 1214 .fpu softvfp 1216 HAL_FLASHEx_DATAEEPROM_Unlock: 1217 .LFB47: 651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** if((FLASH->PECR & FLASH_PECR_PELOCK) != RESET) 1218 .loc 1 651 0 1219 .cfi_startproc 1220 @ args = 0, pretend = 0, frame = 0 1221 @ frame_needed = 0, uses_anonymous_args = 0 1222 @ link register save eliminated. ARM GAS /tmp/cc9alhJF.s page 47 652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1223 .loc 1 652 0 1224 0000 064B ldr r3, .L80 1225 0002 5B68 ldr r3, [r3, #4] 1226 0004 DB07 lsls r3, r3, #31 1227 0006 06D5 bpl .L79 655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** FLASH->PEKEYR = FLASH_PEKEY2; 1228 .loc 1 655 0 1229 0008 044B ldr r3, .L80 1230 000a 054A ldr r2, .L80+4 1231 000c DA60 str r2, [r3, #12] 656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1232 .loc 1 656 0 1233 000e 054A ldr r2, .L80+8 1234 0010 DA60 str r2, [r3, #12] 662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1235 .loc 1 662 0 1236 0012 0020 movs r0, #0 1237 .L78: 663:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1238 .loc 1 663 0 1239 @ sp needed 1240 0014 7047 bx lr 1241 .L79: 660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1242 .loc 1 660 0 1243 0016 0120 movs r0, #1 1244 0018 FCE7 b .L78 1245 .L81: 1246 001a C046 .align 2 1247 .L80: 1248 001c 00200240 .word 1073881088 1249 0020 EFCDAB89 .word -1985229329 1250 0024 05040302 .word 33752069 1251 .cfi_endproc 1252 .LFE47: 1254 .section .text.HAL_FLASHEx_DATAEEPROM_Lock,"ax",%progbits 1255 .align 1 1256 .global HAL_FLASHEx_DATAEEPROM_Lock 1257 .syntax unified 1258 .code 16 1259 .thumb_func 1260 .fpu softvfp 1262 HAL_FLASHEx_DATAEEPROM_Lock: 1263 .LFB48: 670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Set the PELOCK Bit to lock the data memory and FLASH_PECR register access */ 1264 .loc 1 670 0 1265 .cfi_startproc 1266 @ args = 0, pretend = 0, frame = 0 1267 @ frame_needed = 0, uses_anonymous_args = 0 1268 @ link register save eliminated. 672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1269 .loc 1 672 0 1270 0000 034A ldr r2, .L83 1271 0002 5368 ldr r3, [r2, #4] 1272 0004 0121 movs r1, #1 1273 0006 0B43 orrs r3, r1 ARM GAS /tmp/cc9alhJF.s page 48 1274 0008 5360 str r3, [r2, #4] 675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1275 .loc 1 675 0 1276 000a 0020 movs r0, #0 1277 @ sp needed 1278 000c 7047 bx lr 1279 .L84: 1280 000e C046 .align 2 1281 .L83: 1282 0010 00200240 .word 1073881088 1283 .cfi_endproc 1284 .LFE48: 1286 .section .text.HAL_FLASHEx_DATAEEPROM_Erase,"ax",%progbits 1287 .align 1 1288 .global HAL_FLASHEx_DATAEEPROM_Erase 1289 .syntax unified 1290 .code 16 1291 .thumb_func 1292 .fpu softvfp 1294 HAL_FLASHEx_DATAEEPROM_Erase: 1295 .LFB49: 688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1296 .loc 1 688 0 1297 .cfi_startproc 1298 @ args = 0, pretend = 0, frame = 0 1299 @ frame_needed = 0, uses_anonymous_args = 0 1300 .LVL160: 1301 0000 10B5 push {r4, lr} 1302 .LCFI8: 1303 .cfi_def_cfa_offset 8 1304 .cfi_offset 4, -8 1305 .cfi_offset 14, -4 1306 0002 0400 movs r4, r0 1307 .LVL161: 695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1308 .loc 1 695 0 1309 0004 0648 ldr r0, .L88 1310 .LVL162: 1311 0006 FFF7FEFF bl FLASH_WaitForLastOperation 1312 .LVL163: 697:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1313 .loc 1 697 0 1314 000a 0028 cmp r0, #0 1315 000c 00D0 beq .L87 1316 .LVL164: 1317 .L86: 710:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1318 .loc 1 710 0 1319 @ sp needed 1320 .LVL165: 1321 000e 10BD pop {r4, pc} 1322 .LVL166: 1323 .L87: 700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1324 .loc 1 700 0 1325 0010 0023 movs r3, #0 1326 0012 044A ldr r2, .L88+4 ARM GAS /tmp/cc9alhJF.s page 49 1327 0014 5361 str r3, [r2, #20] 703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1328 .loc 1 703 0 1329 0016 2360 str r3, [r4] 705:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1330 .loc 1 705 0 1331 0018 0148 ldr r0, .L88 1332 .LVL167: 1333 001a FFF7FEFF bl FLASH_WaitForLastOperation 1334 .LVL168: 1335 001e F6E7 b .L86 1336 .L89: 1337 .align 2 1338 .L88: 1339 0020 50C30000 .word 50000 1340 0024 00000000 .word pFlash 1341 .cfi_endproc 1342 .LFE49: 1344 .section .text.HAL_FLASHEx_DATAEEPROM_Program,"ax",%progbits 1345 .align 1 1346 .global HAL_FLASHEx_DATAEEPROM_Program 1347 .syntax unified 1348 .code 16 1349 .thumb_func 1350 .fpu softvfp 1352 HAL_FLASHEx_DATAEEPROM_Program: 1353 .LFB50: 730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 1354 .loc 1 730 0 1355 .cfi_startproc 1356 @ args = 0, pretend = 0, frame = 0 1357 @ frame_needed = 0, uses_anonymous_args = 0 1358 .LVL169: 1359 0000 70B5 push {r4, r5, r6, lr} 1360 .LCFI9: 1361 .cfi_def_cfa_offset 16 1362 .cfi_offset 4, -16 1363 .cfi_offset 5, -12 1364 .cfi_offset 6, -8 1365 .cfi_offset 14, -4 1366 0002 0400 movs r4, r0 1367 0004 0E00 movs r6, r1 1368 0006 1500 movs r5, r2 1369 .LVL170: 734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1370 .loc 1 734 0 1371 0008 124B ldr r3, .L100 1372 000a 1B7C ldrb r3, [r3, #16] 1373 000c 012B cmp r3, #1 1374 000e 1FD0 beq .L96 734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1375 .loc 1 734 0 is_stmt 0 discriminator 2 1376 0010 104B ldr r3, .L100 1377 0012 0122 movs r2, #1 1378 .LVL171: 1379 0014 1A74 strb r2, [r3, #16] 741:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** ARM GAS /tmp/cc9alhJF.s page 50 1380 .loc 1 741 0 is_stmt 1 discriminator 2 1381 0016 1048 ldr r0, .L100+4 1382 .LVL172: 1383 0018 FFF7FEFF bl FLASH_WaitForLastOperation 1384 .LVL173: 743:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1385 .loc 1 743 0 discriminator 2 1386 001c 0028 cmp r0, #0 1387 001e 0CD1 bne .L92 746:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1388 .loc 1 746 0 1389 0020 0C4B ldr r3, .L100 1390 0022 0022 movs r2, #0 1391 0024 5A61 str r2, [r3, #20] 748:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1392 .loc 1 748 0 1393 0026 022C cmp r4, #2 1394 0028 06D0 beq .L97 753:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1395 .loc 1 753 0 1396 002a 012C cmp r4, #1 1397 002c 09D0 beq .L98 758:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** { 1398 .loc 1 758 0 1399 002e 002C cmp r4, #0 1400 0030 0AD1 bne .L99 761:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1401 .loc 1 761 0 1402 0032 EDB2 uxtb r5, r5 1403 .LVL174: 1404 0034 3570 strb r5, [r6] 1405 0036 00E0 b .L92 1406 .LVL175: 1407 .L97: 751:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1408 .loc 1 751 0 1409 0038 3560 str r5, [r6] 1410 .LVL176: 1411 .L92: 776:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1412 .loc 1 776 0 1413 003a 064B ldr r3, .L100 1414 003c 0022 movs r2, #0 1415 003e 1A74 strb r2, [r3, #16] 1416 .LVL177: 1417 .L91: 779:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1418 .loc 1 779 0 1419 @ sp needed 1420 .LVL178: 1421 .LVL179: 1422 0040 70BD pop {r4, r5, r6, pc} 1423 .LVL180: 1424 .L98: 756:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1425 .loc 1 756 0 1426 0042 ADB2 uxth r5, r5 ARM GAS /tmp/cc9alhJF.s page 51 1427 .LVL181: 1428 0044 3580 strh r5, [r6] 1429 0046 F8E7 b .L92 1430 .LVL182: 1431 .L99: 771:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1432 .loc 1 771 0 1433 0048 0348 ldr r0, .L100+4 1434 004a FFF7FEFF bl FLASH_WaitForLastOperation 1435 .LVL183: 1436 004e F4E7 b .L92 1437 .LVL184: 1438 .L96: 734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1439 .loc 1 734 0 1440 0050 0220 movs r0, #2 1441 .LVL185: 1442 0052 F5E7 b .L91 1443 .L101: 1444 .align 2 1445 .L100: 1446 0054 00000000 .word pFlash 1447 0058 50C30000 .word 50000 1448 .cfi_endproc 1449 .LFE50: 1451 .section .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram,"ax",%progbits 1452 .align 1 1453 .global HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram 1454 .syntax unified 1455 .code 16 1456 .thumb_func 1457 .fpu softvfp 1459 HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram: 1460 .LFB51: 786:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** SET_BIT(FLASH->PECR, FLASH_PECR_FIX); 1461 .loc 1 786 0 1462 .cfi_startproc 1463 @ args = 0, pretend = 0, frame = 0 1464 @ frame_needed = 0, uses_anonymous_args = 0 1465 @ link register save eliminated. 787:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1466 .loc 1 787 0 1467 0000 034A ldr r2, .L103 1468 0002 5168 ldr r1, [r2, #4] 1469 0004 8023 movs r3, #128 1470 0006 5B00 lsls r3, r3, #1 1471 0008 0B43 orrs r3, r1 1472 000a 5360 str r3, [r2, #4] 788:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1473 .loc 1 788 0 1474 @ sp needed 1475 000c 7047 bx lr 1476 .L104: 1477 000e C046 .align 2 1478 .L103: 1479 0010 00200240 .word 1073881088 1480 .cfi_endproc ARM GAS /tmp/cc9alhJF.s page 52 1481 .LFE51: 1483 .section .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram,"ax",%progbits 1484 .align 1 1485 .global HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram 1486 .syntax unified 1487 .code 16 1488 .thumb_func 1489 .fpu softvfp 1491 HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram: 1492 .LFB52: 795:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_FIX); 1493 .loc 1 795 0 1494 .cfi_startproc 1495 @ args = 0, pretend = 0, frame = 0 1496 @ frame_needed = 0, uses_anonymous_args = 0 1497 @ link register save eliminated. 796:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1498 .loc 1 796 0 1499 0000 024A ldr r2, .L106 1500 0002 5368 ldr r3, [r2, #4] 1501 0004 0249 ldr r1, .L106+4 1502 0006 0B40 ands r3, r1 1503 0008 5360 str r3, [r2, #4] 797:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1504 .loc 1 797 0 1505 @ sp needed 1506 000a 7047 bx lr 1507 .L107: 1508 .align 2 1509 .L106: 1510 000c 00200240 .word 1073881088 1511 0010 FFFEFFFF .word -257 1512 .cfi_endproc 1513 .LFE52: 1515 .section .text.FLASH_PageErase,"ax",%progbits 1516 .align 1 1517 .global FLASH_PageErase 1518 .syntax unified 1519 .code 16 1520 .thumb_func 1521 .fpu softvfp 1523 FLASH_PageErase: 1524 .LFB65: 1243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** /* Clean the error context */ 1525 .loc 1 1243 0 1526 .cfi_startproc 1527 @ args = 0, pretend = 0, frame = 0 1528 @ frame_needed = 0, uses_anonymous_args = 0 1529 .LVL186: 1530 0000 10B5 push {r4, lr} 1531 .LCFI10: 1532 .cfi_def_cfa_offset 8 1533 .cfi_offset 4, -8 1534 .cfi_offset 14, -4 1245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1535 .loc 1 1245 0 1536 0002 0021 movs r1, #0 ARM GAS /tmp/cc9alhJF.s page 53 1537 0004 074B ldr r3, .L109 1538 0006 5961 str r1, [r3, #20] 1248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1539 .loc 1 1248 0 1540 0008 074B ldr r3, .L109+4 1541 000a 5C68 ldr r4, [r3, #4] 1542 000c 8022 movs r2, #128 1543 000e 9200 lsls r2, r2, #2 1544 0010 2243 orrs r2, r4 1545 0012 5A60 str r2, [r3, #4] 1251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** 1546 .loc 1 1251 0 1547 0014 5A68 ldr r2, [r3, #4] 1548 0016 0824 movs r4, #8 1549 0018 2243 orrs r2, r4 1550 001a 5A60 str r2, [r3, #4] 1551 .loc 1 1254 0 1552 001c 7F23 movs r3, #127 1553 001e 9843 bics r0, r3 1554 .LVL187: 1555 0020 0160 str r1, [r0] 1255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c **** } 1556 .loc 1 1255 0 1557 @ sp needed 1558 0022 10BD pop {r4, pc} 1559 .L110: 1560 .align 2 1561 .L109: 1562 0024 00000000 .word pFlash 1563 0028 00200240 .word 1073881088 1564 .cfi_endproc 1565 .LFE65: 1567 .text 1568 .Letext0: 1569 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h" 1570 .file 3 "/usr/arm-none-eabi/include/sys/_stdint.h" 1571 .file 4 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h" 1572 .file 5 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h" 1573 .file 6 "/usr/arm-none-eabi/include/sys/lock.h" 1574 .file 7 "/usr/arm-none-eabi/include/sys/_types.h" 1575 .file 8 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 1576 .file 9 "/usr/arm-none-eabi/include/sys/reent.h" 1577 .file 10 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h" 1578 .file 11 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h" 1579 .file 12 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h" 1580 .file 13 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h" ARM GAS /tmp/cc9alhJF.s page 54 DEFINED SYMBOLS *ABS*:0000000000000000 stm32l0xx_hal_flash_ex.c /tmp/cc9alhJF.s:16 .text.FLASH_OB_ProtectedSectorsConfig:0000000000000000 $t /tmp/cc9alhJF.s:22 .text.FLASH_OB_ProtectedSectorsConfig:0000000000000000 FLASH_OB_ProtectedSectorsConfig /tmp/cc9alhJF.s:182 .text.FLASH_OB_ProtectedSectorsConfig:00000000000000b0 $d /tmp/cc9alhJF.s:189 .text.HAL_FLASHEx_Erase:0000000000000000 $t /tmp/cc9alhJF.s:196 .text.HAL_FLASHEx_Erase:0000000000000000 HAL_FLASHEx_Erase /tmp/cc9alhJF.s:330 .text.HAL_FLASHEx_Erase:000000000000008c $d /tmp/cc9alhJF.s:338 .text.HAL_FLASHEx_Erase_IT:0000000000000000 $t /tmp/cc9alhJF.s:345 .text.HAL_FLASHEx_Erase_IT:0000000000000000 HAL_FLASHEx_Erase_IT /tmp/cc9alhJF.s:452 .text.HAL_FLASHEx_Erase_IT:0000000000000070 $d /tmp/cc9alhJF.s:459 .text.HAL_FLASHEx_OBProgram:0000000000000000 $t /tmp/cc9alhJF.s:466 .text.HAL_FLASHEx_OBProgram:0000000000000000 HAL_FLASHEx_OBProgram /tmp/cc9alhJF.s:815 .text.HAL_FLASHEx_OBProgram:000000000000014c $d /tmp/cc9alhJF.s:824 .text.HAL_FLASHEx_OBGetConfig:0000000000000000 $t /tmp/cc9alhJF.s:831 .text.HAL_FLASHEx_OBGetConfig:0000000000000000 HAL_FLASHEx_OBGetConfig /tmp/cc9alhJF.s:905 .text.HAL_FLASHEx_OBGetConfig:0000000000000030 $d /tmp/cc9alhJF.s:910 .text.HAL_FLASHEx_AdvOBProgram:0000000000000000 $t /tmp/cc9alhJF.s:917 .text.HAL_FLASHEx_AdvOBProgram:0000000000000000 HAL_FLASHEx_AdvOBProgram /tmp/cc9alhJF.s:1004 .text.HAL_FLASHEx_AdvOBProgram:0000000000000050 $d /tmp/cc9alhJF.s:1014 .text.HAL_FLASHEx_AdvOBGetConfig:0000000000000000 $t /tmp/cc9alhJF.s:1021 .text.HAL_FLASHEx_AdvOBGetConfig:0000000000000000 HAL_FLASHEx_AdvOBGetConfig /tmp/cc9alhJF.s:1060 .text.HAL_FLASHEx_AdvOBGetConfig:0000000000000028 $d /tmp/cc9alhJF.s:1065 .text.HAL_FLASHEx_OB_SelectPCROP:0000000000000000 $t /tmp/cc9alhJF.s:1072 .text.HAL_FLASHEx_OB_SelectPCROP:0000000000000000 HAL_FLASHEx_OB_SelectPCROP /tmp/cc9alhJF.s:1132 .text.HAL_FLASHEx_OB_SelectPCROP:0000000000000030 $d /tmp/cc9alhJF.s:1139 .text.HAL_FLASHEx_OB_DeSelectPCROP:0000000000000000 $t /tmp/cc9alhJF.s:1146 .text.HAL_FLASHEx_OB_DeSelectPCROP:0000000000000000 HAL_FLASHEx_OB_DeSelectPCROP /tmp/cc9alhJF.s:1202 .text.HAL_FLASHEx_OB_DeSelectPCROP:000000000000002c $d /tmp/cc9alhJF.s:1209 .text.HAL_FLASHEx_DATAEEPROM_Unlock:0000000000000000 $t /tmp/cc9alhJF.s:1216 .text.HAL_FLASHEx_DATAEEPROM_Unlock:0000000000000000 HAL_FLASHEx_DATAEEPROM_Unlock /tmp/cc9alhJF.s:1248 .text.HAL_FLASHEx_DATAEEPROM_Unlock:000000000000001c $d /tmp/cc9alhJF.s:1255 .text.HAL_FLASHEx_DATAEEPROM_Lock:0000000000000000 $t /tmp/cc9alhJF.s:1262 .text.HAL_FLASHEx_DATAEEPROM_Lock:0000000000000000 HAL_FLASHEx_DATAEEPROM_Lock /tmp/cc9alhJF.s:1282 .text.HAL_FLASHEx_DATAEEPROM_Lock:0000000000000010 $d /tmp/cc9alhJF.s:1287 .text.HAL_FLASHEx_DATAEEPROM_Erase:0000000000000000 $t /tmp/cc9alhJF.s:1294 .text.HAL_FLASHEx_DATAEEPROM_Erase:0000000000000000 HAL_FLASHEx_DATAEEPROM_Erase /tmp/cc9alhJF.s:1339 .text.HAL_FLASHEx_DATAEEPROM_Erase:0000000000000020 $d /tmp/cc9alhJF.s:1345 .text.HAL_FLASHEx_DATAEEPROM_Program:0000000000000000 $t /tmp/cc9alhJF.s:1352 .text.HAL_FLASHEx_DATAEEPROM_Program:0000000000000000 HAL_FLASHEx_DATAEEPROM_Program /tmp/cc9alhJF.s:1446 .text.HAL_FLASHEx_DATAEEPROM_Program:0000000000000054 $d /tmp/cc9alhJF.s:1452 .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram:0000000000000000 $t /tmp/cc9alhJF.s:1459 .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram:0000000000000000 HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram /tmp/cc9alhJF.s:1479 .text.HAL_FLASHEx_DATAEEPROM_EnableFixedTimeProgram:0000000000000010 $d /tmp/cc9alhJF.s:1484 .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram:0000000000000000 $t /tmp/cc9alhJF.s:1491 .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram:0000000000000000 HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram /tmp/cc9alhJF.s:1510 .text.HAL_FLASHEx_DATAEEPROM_DisableFixedTimeProgram:000000000000000c $d /tmp/cc9alhJF.s:1516 .text.FLASH_PageErase:0000000000000000 $t /tmp/cc9alhJF.s:1523 .text.FLASH_PageErase:0000000000000000 FLASH_PageErase /tmp/cc9alhJF.s:1562 .text.FLASH_PageErase:0000000000000024 $d .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS FLASH_WaitForLastOperation pFlash