ARM GAS /tmp/ccqRvrNg.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.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .text.FLASH_SetErrorCode,"ax",%progbits 16 .align 1 17 .syntax unified 18 .code 16 19 .thumb_func 20 .fpu softvfp 22 FLASH_SetErrorCode: 23 .LFB51: 24 .file 1 "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c" 1:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 2:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ****************************************************************************** 3:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @file stm32l0xx_hal_flash.c 4:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @author MCD Application Team 5:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief FLASH HAL module driver. 6:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * This file provides firmware functions to manage the following 7:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * functionalities of the internal FLASH memory: 8:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * + Program operations functions 9:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * + Memory Control functions 10:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * + Peripheral State functions 11:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 12:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @verbatim 13:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ============================================================================== 14:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ##### FLASH peripheral features ##### 15:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ============================================================================== 16:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses 17:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations 18:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** and the read and write protection mechanisms. 19:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 20:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction 21:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** prefetch. 22:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 23:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] The FLASH main features are: 24:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Flash memory read operations 25:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Flash memory program/erase operations 26:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Read / write protections 27:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Prefetch on I-Code 28:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Option Bytes programming 29:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 30:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 31:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ##### How to use this driver ##### 32:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ============================================================================== 33:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] 34:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH ARM GAS /tmp/ccqRvrNg.s page 2 35:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** memory of all STM32L0xx devices. 36:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 37:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) FLASH Memory I/O Programming functions: this group includes all needed 38:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** functions to erase and program the main memory: 39:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface 40:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Erase function: Erase page 41:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Program functions: Fast Word and Half Page(should be 42:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** executed from internal SRAM). 43:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 44:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) DATA EEPROM Programming functions: this group includes all 45:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** needed functions to erase and program the DATA EEPROM memory: 46:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Lock and Unlock the DATA EEPROM interface. 47:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Erase function: Erase Byte, erase HalfWord, erase Word, erase 48:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** Double Word (should be executed from internal SRAM). 49:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Program functions: Fast Program Byte, Fast Program Half-Word, 50:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** FastProgramWord, Program Byte, Program Half-Word, 51:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** Program Word and Program Double-Word (should be executed 52:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** from internal SRAM). 53:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 54:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) FLASH Option Bytes Programming functions: this group includes all needed 55:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** functions to manage the Option Bytes: 56:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Lock and Unlock the Option Bytes 57:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Set/Reset the write protection 58:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Set the Read protection Level 59:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Program the user Option Bytes 60:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Launch the Option Bytes loader 61:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Set/Get the Read protection Level. 62:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Set/Get the BOR level. 63:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Get the Write protection. 64:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Get the user option bytes. 65:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 66:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Interrupts and flags management functions : this group 67:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** includes all needed functions to: 68:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Handle FLASH interrupts 69:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status 70:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Get error flag status 71:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 72:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) FLASH Interface configuration functions: this group includes 73:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** the management of following features: 74:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Enable/Disable the RUN PowerDown mode. 75:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Enable/Disable the SLEEP PowerDown mode. 76:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 77:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) FLASH Peripheral State methods: this group includes 78:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** the management of following features: 79:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Wait for the FLASH operation 80:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Get the specific FLASH error flag 81:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 82:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] In addition to these function, this driver includes a set of macros allowing 83:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** to handle the following operations: 84:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 85:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Set/Get the latency 86:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer 87:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Enable/Disable the preread buffer 88:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Enable/Disable the Flash power-down 89:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts 90:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) Monitor the FLASH flags status 91:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ARM GAS /tmp/ccqRvrNg.s page 3 92:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ##### Programming operation functions ##### 93:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** =============================================================================== 94:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] 95:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH 96:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** program operations. 97:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 98:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] The FLASH Memory Programming functions, includes the following functions: 99:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_Unlock(void); 100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_Lock(void); 101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data) 102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data) 103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] Any operation of erase or program should follow these steps: 105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Call the HAL_FLASH_Unlock() function to enable the flash control register and 106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** program memory access. 107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Call the desired function to erase page or program data. 108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Call the HAL_FLASH_Lock() to disable the flash program memory access 109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (recommended to protect the FLASH memory against possible unwanted operation). 110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ##### Option Bytes Programming functions ##### 112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ============================================================================== 113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] The FLASH_Option Bytes Programming_functions, includes the following functions: 115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_OB_Unlock(void); 116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_OB_Lock(void); 117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASH_OB_Launch(void); 118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); 119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (+) HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit); 120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] Any operation of erase or program should follow these steps: 122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Call the HAL_FLASH_OB_Unlock() function to enable the Flash option control 123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** register access. 124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Call the following functions to program the desired option bytes. 125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit); 126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Once all needed option bytes to be programmed are correctly written, call the 127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_FLASH_OB_Launch(void) function to launch the Option Bytes programming process. 128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) Call the HAL_FLASH_OB_Lock() to disable the Flash option control register access (recommen 129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** to protect the option Bytes against possible unwanted operations). 130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] Proprietary code Read Out Protection (PcROP): 132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) The PcROP sector is selected by using the same option bytes as the Write 133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** protection. As a result, these 2 options are exclusive each other. 134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (#) To activate PCROP mode for Flash sectors(s), you need to follow the sequence below: 135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** (++) Use this function HAL_FLASHEx_AdvOBProgram with PCROPState = OB_PCROP_STATE_ENABLE. 136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @endverbatim 138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ****************************************************************************** 139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @attention 140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** *

© COPYRIGHT(c) 2016 STMicroelectronics

142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * Redistribution and use in source and binary forms, with or without modification, 144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * are permitted provided that the following conditions are met: 145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 1. Redistributions of source code must retain the above copyright notice, 146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * this list of conditions and the following disclaimer. 147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, 148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * this list of conditions and the following disclaimer in the documentation ARM GAS /tmp/ccqRvrNg.s page 4 149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * and/or other materials provided with the distribution. 150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 3. Neither the name of STMicroelectronics nor the names of its contributors 151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * may be used to endorse or promote products derived from this software 152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * without specific prior written permission. 153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ****************************************************************************** 166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/ 169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** #include "stm32l0xx_hal.h" 170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @addtogroup STM32L0xx_HAL_Driver 172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED 176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH FLASH 178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief FLASH HAL module driver 179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ 183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ 184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Private_Constants FLASH Private Constants 185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Private macro ---------------------------- ---------------------------------*/ 192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Private_Macros FLASH Private Macros 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Private_Variables FLASH Private Variables 202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Variables used for Erase pages under interruption*/ 205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash; ARM GAS /tmp/ccqRvrNg.s page 5 206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/ 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Private_Functions FLASH Private Functions 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** static void FLASH_SetErrorCode(void); 215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** extern void FLASH_PageErase(uint32_t PageAddress); 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Exported functions ---------------------------------------------------------*/ 221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions 222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Programming operation functions 227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @verbatim 229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @endverbatim 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Program word at a specified address 235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @note To correctly run this function, the HAL_FLASH_Unlock() function 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * must be called before. 237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * Call the HAL_FLASH_Lock() to disable the flash memory access 238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * (recommended to protect the FLASH memory against possible unwanted operation). 239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param Address Specifie the address to be programmed. 243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param Data Specifie the data to be programmed 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint32_t Data) 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Process Locked */ 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_LOCK(&pFlash); 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Check the parameters */ 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); 257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Wait for last operation to be completed */ 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(status == HAL_OK) 262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { ARM GAS /tmp/ccqRvrNg.s page 6 263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Clean the error context */ 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** *(__IO uint32_t *)Address = Data; 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Wait for last operation to be completed */ 270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Process Unlocked */ 274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return status; 277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Program word at a specified address with interrupt enabled. 281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param Address Specifie the address to be programmed. 285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param Data Specifie the data to be programmed 286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint32_t Data) 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Process Locked */ 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_LOCK(&pFlash); 295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Check the parameters */ 297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); 299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Enable End of FLASH Operation and Error source interrupts */ 301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); 302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Address = Address; 304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; 305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Clean the error context */ 306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Program word (32-bit) at a specified address. */ 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** *(__IO uint32_t *)Address = Data; 312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return status; 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. 318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval None 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ ARM GAS /tmp/ccqRvrNg.s page 7 320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** uint32_t addresstmp = 0; 323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Check FLASH operation error flags */ 325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * as expected. If the user run an application using the first 329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * cut of the STM32L031xx device or the first cut of the STM32L041xx 330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * device, the check on the FLASH_FLAG_OPTVERR bit should be ignored. 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * Note :The revId of the device can be retrieved via the HAL_GetREVID() 333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * function. 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE) 346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Return the faulty sector */ 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** addresstmp = pFlash.Page; 349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Page = 0xFFFFFFFFU; 350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** else 352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Return the faulty address */ 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** addresstmp = pFlash.Address; 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Save the Error code */ 357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** FLASH_SetErrorCode(); 358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* FLASH error interrupt user callback */ 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(addresstmp); 361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Stop the procedure ongoing */ 363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) 368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Process can continue only if no error detected */ 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(pFlash.ProcedureOnGoing != FLASH_PROC_NONE) 374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE) 376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { ARM GAS /tmp/ccqRvrNg.s page 8 377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Nb of pages to erased can be decreased */ 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.NbPagesToErase--; 379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Check if there are still pages to erase */ 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(pFlash.NbPagesToErase != 0U) 382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** addresstmp = pFlash.Page; 384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /*Indicate user which sector has been erased */ 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /*Increment sector number*/ 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** addresstmp = pFlash.Page + FLASH_PAGE_SIZE; 389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Page = addresstmp; 390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* If the erase operation is completed, disable the ERASE Bit */ 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** FLASH_PageErase(addresstmp); 395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** else 397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* No more pages to Erase, user callback can be called. */ 399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Reset Sector and stop Erase pages procedure */ 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Page = addresstmp = 0xFFFFFFFFU; 401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** else 407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* If the program operation is completed, disable the PROG Bit */ 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Program ended. Return the selected address */ 412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); 414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Reset Address and stop Program procedure */ 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Address = 0xFFFFFFFFU; 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) 424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Operation is completed, disable the PROG and ERASE */ 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** CLEAR_BIT(FLASH->PECR, (FLASH_PECR_ERASE | FLASH_PECR_PROG)); 427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Disable End of FLASH Operation and Error source interrupts */ 429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); 430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Process Unlocked */ 432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } ARM GAS /tmp/ccqRvrNg.s page 9 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback 438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param ReturnValue: The value saved in this parameter depends on the ongoing procedure 439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * - Pages Erase: Address of the page which has been erased 440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * (if 0xFFFFFFFF, it means that all the selected pages have been erased) 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * - Program: Address which was selected for data program 442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval none 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) 445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** UNUSED(ReturnValue); 448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file 451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief FLASH operation error interrupt callback 456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param ReturnValue: The value saved in this parameter depends on the ongoing procedure 457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * - Pages Erase: Address of the page which returned an error 458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * - Program: Address which was selected for data program 459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval none 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) 462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** UNUSED(ReturnValue); 465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file 468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions 476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief management functions 477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @verbatim 479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** =============================================================================== 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ##### Peripheral Control functions ##### 481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** =============================================================================== 482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] 483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH 484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** memory operations. 485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @endverbatim 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** ARM GAS /tmp/ccqRvrNg.s page 10 491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Unlock the FLASH control register access 492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL Status 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) 495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) 497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Unlocking FLASH_PECR register access*/ 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) 500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1); 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Unlocking the program memory access */ 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY1); 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY2); 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** else 510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_ERROR; 512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_OK; 515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Locks the FLASH control register access 519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL Status 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) 522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 523:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Set the PRGLOCK Bit to lock the FLASH Registers access */ 524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PRGLOCK); 525:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 526:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_OK; 527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 528:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 529:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 530:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access. 531:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL Status 532:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 533:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) 534:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_OPTLOCK)) 536:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 537:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Unlocking FLASH_PECR register access*/ 538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PELOCK)) 539:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 540:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Unlocking FLASH_PECR register access*/ 541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY1); 542:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); 543:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 544:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 545:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Unlocking the option bytes block access */ 546:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1); 547:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); ARM GAS /tmp/ccqRvrNg.s page 11 548:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 549:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** else 550:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 551:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_ERROR; 552:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 553:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 554:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_OK; 555:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 556:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 557:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 558:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access. 559:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL Status 560:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 561:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) 562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 563:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the option bytes block access */ 564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** SET_BIT(FLASH->PECR, FLASH_PECR_OPTLOCK); 565:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 566:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_OK; 567:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 568:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 569:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 570:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Launch the option byte loading. 571:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @note This function will reset automatically the MCU. 572:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL Status 573:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 574:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) 575:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 576:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Set the OBL_Launch bit to launch the option byte loading */ 577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** SET_BIT(FLASH->PECR, FLASH_PECR_OBL_LAUNCH); 578:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 579:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Wait for last operation to be completed */ 580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return(FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE)); 581:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 582:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 583:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 584:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 585:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 586:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 587:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral errors functions 588:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Peripheral errors functions 589:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 590:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @verbatim 591:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** =============================================================================== 592:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ##### Peripheral Errors functions ##### 593:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** =============================================================================== 594:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** [..] 595:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** This subsection permit to get in run-time errors of the FLASH peripheral. 596:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 597:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** @endverbatim 598:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 599:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 600:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 601:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 602:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Get the specific FLASH error flag. 603:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval FLASH_ErrorCode The returned value can be: 604:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @ref FLASH_Error_Codes ARM GAS /tmp/ccqRvrNg.s page 12 605:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 606:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) 607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return pFlash.ErrorCode; 609:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 610:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 611:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 612:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 613:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 614:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 615:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 616:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @} 617:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 618:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 619:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions 620:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @{ 621:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 622:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 623:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 624:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. 625:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @param Timeout maximum flash operation timeout 626:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval HAL Status 627:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 628:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) 629:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 630:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 631:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 632:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flag will be set */ 633:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick(); 635:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) 637:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if (Timeout != HAL_MAX_DELAY) 639:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if((Timeout == 0U) || ((HAL_GetTick()-tickstart) > Timeout)) 641:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_TIMEOUT; 643:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 644:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 645:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 646:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 647:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) 649:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 650:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 652:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 653:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || 655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 661:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { ARM GAS /tmp/ccqRvrNg.s page 13 662:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /*Save the error code*/ 663:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 664:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, 665:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving 666:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * as expected. If the user run an application using the first 667:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * cut of the STM32L031xx device or the first cut of the STM32L041xx 668:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * device, this error should be ignored. The revId of the device 669:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * can be retrieved via the HAL_GetREVID() function. 670:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 671:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** FLASH_SetErrorCode(); 673:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_ERROR; 674:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 675:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 676:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* There is no error flag set */ 677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_OK; 678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 679:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 680:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 681:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /** 682:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @brief Set the specific FLASH error flag. 683:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * @retval None 684:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ 685:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** static void FLASH_SetErrorCode(void) 686:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 25 .loc 1 686 0 26 .cfi_startproc 27 @ args = 0, pretend = 0, frame = 0 28 @ frame_needed = 0, uses_anonymous_args = 0 29 @ link register save eliminated. 30 .LVL0: 687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** uint32_t flags = 0; 688:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 689:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)) 31 .loc 1 689 0 32 0000 2A4B ldr r3, .L10 33 0002 9B69 ldr r3, [r3, #24] 34 0004 DB05 lsls r3, r3, #23 35 0006 4FD5 bpl .L9 690:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 691:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 36 .loc 1 691 0 37 0008 294A ldr r2, .L10+4 38 000a 5369 ldr r3, [r2, #20] 39 000c 0221 movs r1, #2 40 000e 0B43 orrs r3, r1 41 0010 5361 str r3, [r2, #20] 42 .LVL1: 692:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= FLASH_FLAG_WRPERR; 43 .loc 1 692 0 44 0012 8023 movs r3, #128 45 0014 5B00 lsls r3, r3, #1 46 .LVL2: 47 .L2: 693:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 694:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) 48 .loc 1 694 0 ARM GAS /tmp/ccqRvrNg.s page 14 49 0016 254A ldr r2, .L10 50 0018 9269 ldr r2, [r2, #24] 51 001a 9205 lsls r2, r2, #22 52 001c 07D5 bpl .L3 695:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 696:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 53 .loc 1 696 0 54 001e 2449 ldr r1, .L10+4 55 0020 4A69 ldr r2, [r1, #20] 56 0022 0120 movs r0, #1 57 0024 0243 orrs r2, r0 58 0026 4A61 str r2, [r1, #20] 697:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= FLASH_FLAG_PGAERR; 59 .loc 1 697 0 60 0028 8022 movs r2, #128 61 002a 9200 lsls r2, r2, #2 62 002c 1343 orrs r3, r2 63 .LVL3: 64 .L3: 698:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 699:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR)) 65 .loc 1 699 0 66 002e 1F4A ldr r2, .L10 67 0030 9269 ldr r2, [r2, #24] 68 0032 5205 lsls r2, r2, #21 69 0034 07D5 bpl .L4 700:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 701:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE; 70 .loc 1 701 0 71 0036 1E49 ldr r1, .L10+4 72 0038 4A69 ldr r2, [r1, #20] 73 003a 0820 movs r0, #8 74 003c 0243 orrs r2, r0 75 003e 4A61 str r2, [r1, #20] 702:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= FLASH_FLAG_SIZERR; 76 .loc 1 702 0 77 0040 8022 movs r2, #128 78 0042 D200 lsls r2, r2, #3 79 0044 1343 orrs r3, r2 80 .LVL4: 81 .L4: 703:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 704:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) 82 .loc 1 704 0 83 0046 194A ldr r2, .L10 84 0048 9269 ldr r2, [r2, #24] 85 004a 1205 lsls r2, r2, #20 86 004c 07D5 bpl .L5 705:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 706:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, 707:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving 708:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * as expected. If the user run an application using the first 709:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * cut of the STM32L031xx device or the first cut of the STM32L041xx 710:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * device, this error should be ignored. The revId of the device 711:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * can be retrieved via the HAL_GetREVID() function. 712:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** * 713:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** */ ARM GAS /tmp/ccqRvrNg.s page 15 714:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; 87 .loc 1 714 0 88 004e 1849 ldr r1, .L10+4 89 0050 4A69 ldr r2, [r1, #20] 90 0052 0420 movs r0, #4 91 0054 0243 orrs r2, r0 92 0056 4A61 str r2, [r1, #20] 715:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= FLASH_FLAG_OPTVERR; 93 .loc 1 715 0 94 0058 8022 movs r2, #128 95 005a 1201 lsls r2, r2, #4 96 005c 1343 orrs r3, r2 97 .LVL5: 98 .L5: 716:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 717:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 718:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) 99 .loc 1 718 0 100 005e 134A ldr r2, .L10 101 0060 9269 ldr r2, [r2, #24] 102 0062 9204 lsls r2, r2, #18 103 0064 07D5 bpl .L6 719:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 720:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 104 .loc 1 720 0 105 0066 1249 ldr r1, .L10+4 106 0068 4A69 ldr r2, [r1, #20] 107 006a 1020 movs r0, #16 108 006c 0243 orrs r2, r0 109 006e 4A61 str r2, [r1, #20] 721:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= FLASH_FLAG_RDERR; 110 .loc 1 721 0 111 0070 8022 movs r2, #128 112 0072 9201 lsls r2, r2, #6 113 0074 1343 orrs r3, r2 114 .LVL6: 115 .L6: 722:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 723:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR)) 116 .loc 1 723 0 117 0076 0D4A ldr r2, .L10 118 0078 9269 ldr r2, [r2, #24] 119 007a 9203 lsls r2, r2, #14 120 007c 05D5 bpl .L7 724:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 725:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_FWWERR; 121 .loc 1 725 0 122 007e 0C48 ldr r0, .L10+4 123 0080 4269 ldr r2, [r0, #20] 124 0082 2021 movs r1, #32 125 0084 0A43 orrs r2, r1 126 0086 4261 str r2, [r0, #20] 726:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= HAL_FLASH_ERROR_FWWERR; 127 .loc 1 726 0 128 0088 0B43 orrs r3, r1 129 .LVL7: 130 .L7: ARM GAS /tmp/ccqRvrNg.s page 16 727:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 728:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR)) 131 .loc 1 728 0 132 008a 084A ldr r2, .L10 133 008c 9269 ldr r2, [r2, #24] 134 008e D203 lsls r2, r2, #15 135 0090 07D5 bpl .L8 729:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 730:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_NOTZERO; 136 .loc 1 730 0 137 0092 0749 ldr r1, .L10+4 138 0094 4A69 ldr r2, [r1, #20] 139 0096 4020 movs r0, #64 140 0098 0243 orrs r2, r0 141 009a 4A61 str r2, [r1, #20] 731:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** flags |= FLASH_FLAG_NOTZEROERR; 142 .loc 1 731 0 143 009c 8022 movs r2, #128 144 009e 5202 lsls r2, r2, #9 145 00a0 1343 orrs r3, r2 146 .LVL8: 147 .L8: 732:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 733:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 734:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Clear FLASH error pending bits */ 735:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(flags); 148 .loc 1 735 0 149 00a2 024A ldr r2, .L10 150 00a4 9361 str r3, [r2, #24] 736:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 151 .loc 1 736 0 152 @ sp needed 153 00a6 7047 bx lr 154 .LVL9: 155 .L9: 687:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 156 .loc 1 687 0 157 00a8 0023 movs r3, #0 158 00aa B4E7 b .L2 159 .L11: 160 .align 2 161 .L10: 162 00ac 00200240 .word 1073881088 163 00b0 00000000 .word .LANCHOR0 164 .cfi_endproc 165 .LFE51: 167 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 168 .align 1 169 .global HAL_FLASH_Program_IT 170 .syntax unified 171 .code 16 172 .thumb_func 173 .fpu softvfp 175 HAL_FLASH_Program_IT: 176 .LFB40: 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 177 .loc 1 290 0 ARM GAS /tmp/ccqRvrNg.s page 17 178 .cfi_startproc 179 @ args = 0, pretend = 0, frame = 0 180 @ frame_needed = 0, uses_anonymous_args = 0 181 .LVL10: 182 0000 70B5 push {r4, r5, r6, lr} 183 .LCFI0: 184 .cfi_def_cfa_offset 16 185 .cfi_offset 4, -16 186 .cfi_offset 5, -12 187 .cfi_offset 6, -8 188 .cfi_offset 14, -4 189 .LVL11: 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 190 .loc 1 294 0 191 0002 0D4B ldr r3, .L17 192 0004 1B7C ldrb r3, [r3, #16] 193 0006 012B cmp r3, #1 194 0008 14D0 beq .L14 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 195 .loc 1 294 0 is_stmt 0 discriminator 2 196 000a 0B4B ldr r3, .L17 197 000c 0124 movs r4, #1 198 000e 1C74 strb r4, [r3, #16] 301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 199 .loc 1 301 0 is_stmt 1 discriminator 2 200 0010 0A4D ldr r5, .L17+4 201 0012 6E68 ldr r6, [r5, #4] 202 0014 C024 movs r4, #192 203 0016 A402 lsls r4, r4, #10 204 0018 3443 orrs r4, r6 205 001a 6C60 str r4, [r5, #4] 303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; 206 .loc 1 303 0 discriminator 2 207 001c 9960 str r1, [r3, #8] 304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Clean the error context */ 208 .loc 1 304 0 discriminator 2 209 001e 0224 movs r4, #2 210 0020 1C70 strb r4, [r3] 306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 211 .loc 1 306 0 discriminator 2 212 0022 0024 movs r4, #0 213 0024 5C61 str r4, [r3, #20] 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 214 .loc 1 308 0 discriminator 2 215 0026 0228 cmp r0, #2 216 0028 01D0 beq .L16 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 217 .loc 1 313 0 218 002a 0020 movs r0, #0 219 .LVL12: 220 .L13: 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 221 .loc 1 314 0 222 @ sp needed 223 002c 70BD pop {r4, r5, r6, pc} 224 .LVL13: 225 .L16: ARM GAS /tmp/ccqRvrNg.s page 18 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 226 .loc 1 311 0 227 002e 0A60 str r2, [r1] 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 228 .loc 1 313 0 229 0030 0020 movs r0, #0 230 .LVL14: 231 0032 FBE7 b .L13 232 .LVL15: 233 .L14: 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 234 .loc 1 294 0 235 0034 0220 movs r0, #2 236 .LVL16: 237 0036 F9E7 b .L13 238 .L18: 239 .align 2 240 .L17: 241 0038 00000000 .word .LANCHOR0 242 003c 00200240 .word 1073881088 243 .cfi_endproc 244 .LFE40: 246 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 247 .align 1 248 .weak HAL_FLASH_EndOfOperationCallback 249 .syntax unified 250 .code 16 251 .thumb_func 252 .fpu softvfp 254 HAL_FLASH_EndOfOperationCallback: 255 .LFB42: 445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 256 .loc 1 445 0 257 .cfi_startproc 258 @ args = 0, pretend = 0, frame = 0 259 @ frame_needed = 0, uses_anonymous_args = 0 260 @ link register save eliminated. 261 .LVL17: 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 262 .loc 1 452 0 263 @ sp needed 264 0000 7047 bx lr 265 .cfi_endproc 266 .LFE42: 268 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 269 .align 1 270 .weak HAL_FLASH_OperationErrorCallback 271 .syntax unified 272 .code 16 273 .thumb_func 274 .fpu softvfp 276 HAL_FLASH_OperationErrorCallback: 277 .LFB43: 462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 278 .loc 1 462 0 279 .cfi_startproc 280 @ args = 0, pretend = 0, frame = 0 ARM GAS /tmp/ccqRvrNg.s page 19 281 @ frame_needed = 0, uses_anonymous_args = 0 282 @ link register save eliminated. 283 .LVL18: 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 284 .loc 1 469 0 285 @ sp needed 286 0000 7047 bx lr 287 .cfi_endproc 288 .LFE43: 290 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 291 .align 1 292 .global HAL_FLASH_IRQHandler 293 .syntax unified 294 .code 16 295 .thumb_func 296 .fpu softvfp 298 HAL_FLASH_IRQHandler: 299 .LFB41: 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** uint32_t addresstmp = 0; 300 .loc 1 321 0 301 .cfi_startproc 302 @ args = 0, pretend = 0, frame = 0 303 @ frame_needed = 0, uses_anonymous_args = 0 304 0000 10B5 push {r4, lr} 305 .LCFI1: 306 .cfi_def_cfa_offset 8 307 .cfi_offset 4, -8 308 .cfi_offset 14, -4 309 .LVL19: 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 310 .loc 1 337 0 311 0002 3E4B ldr r3, .L31 312 0004 9B69 ldr r3, [r3, #24] 313 0006 DB05 lsls r3, r3, #23 314 0008 17D4 bmi .L22 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 315 .loc 1 338 0 discriminator 1 316 000a 3C4B ldr r3, .L31 317 000c 9B69 ldr r3, [r3, #24] 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 318 .loc 1 337 0 discriminator 1 319 000e 9B05 lsls r3, r3, #22 320 0010 13D4 bmi .L22 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 321 .loc 1 339 0 322 0012 3A4B ldr r3, .L31 323 0014 9B69 ldr r3, [r3, #24] 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 324 .loc 1 338 0 325 0016 5B05 lsls r3, r3, #21 326 0018 0FD4 bmi .L22 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 327 .loc 1 340 0 328 001a 384B ldr r3, .L31 329 001c 9B69 ldr r3, [r3, #24] 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 330 .loc 1 339 0 ARM GAS /tmp/ccqRvrNg.s page 20 331 001e 1B05 lsls r3, r3, #20 332 0020 0BD4 bmi .L22 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 333 .loc 1 341 0 334 0022 364B ldr r3, .L31 335 0024 9B69 ldr r3, [r3, #24] 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 336 .loc 1 340 0 337 0026 9B04 lsls r3, r3, #18 338 0028 07D4 bmi .L22 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 339 .loc 1 342 0 340 002a 344B ldr r3, .L31 341 002c 9B69 ldr r3, [r3, #24] 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 342 .loc 1 341 0 343 002e 9B03 lsls r3, r3, #14 344 0030 03D4 bmi .L22 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 345 .loc 1 343 0 346 0032 324B ldr r3, .L31 347 0034 9B69 ldr r3, [r3, #24] 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 348 .loc 1 342 0 349 0036 DB03 lsls r3, r3, #15 350 0038 0DD5 bpl .L23 351 .L22: 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 352 .loc 1 345 0 353 003a 314B ldr r3, .L31+4 354 003c 1B78 ldrb r3, [r3] 355 003e 012B cmp r3, #1 356 0040 2ED0 beq .L30 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 357 .loc 1 354 0 358 0042 2F4B ldr r3, .L31+4 359 0044 9C68 ldr r4, [r3, #8] 360 .LVL20: 361 .L25: 357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 362 .loc 1 357 0 363 0046 FFF7FEFF bl FLASH_SetErrorCode 364 .LVL21: 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 365 .loc 1 360 0 366 004a 2000 movs r0, r4 367 004c FFF7FEFF bl HAL_FLASH_OperationErrorCallback 368 .LVL22: 363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 369 .loc 1 363 0 370 0050 2B4B ldr r3, .L31+4 371 0052 0022 movs r2, #0 372 0054 1A70 strb r2, [r3] 373 .LVL23: 374 .L23: 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 375 .loc 1 367 0 ARM GAS /tmp/ccqRvrNg.s page 21 376 0056 294B ldr r3, .L31 377 0058 9B69 ldr r3, [r3, #24] 378 005a 9B07 lsls r3, r3, #30 379 005c 3DD5 bpl .L26 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 380 .loc 1 370 0 381 005e 274B ldr r3, .L31 382 0060 0222 movs r2, #2 383 0062 9A61 str r2, [r3, #24] 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 384 .loc 1 373 0 385 0064 264B ldr r3, .L31+4 386 0066 1B78 ldrb r3, [r3] 387 0068 002B cmp r3, #0 388 006a 36D0 beq .L26 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 389 .loc 1 375 0 390 006c 244B ldr r3, .L31+4 391 006e 1B78 ldrb r3, [r3] 392 0070 012B cmp r3, #1 393 0072 24D1 bne .L27 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 394 .loc 1 378 0 395 0074 224B ldr r3, .L31+4 396 0076 5A68 ldr r2, [r3, #4] 397 0078 013A subs r2, r2, #1 398 007a 5A60 str r2, [r3, #4] 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 399 .loc 1 381 0 400 007c 5B68 ldr r3, [r3, #4] 401 007e 002B cmp r3, #0 402 0080 14D0 beq .L28 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /*Indicate user which sector has been erased */ 403 .loc 1 383 0 404 0082 1F4C ldr r4, .L31+4 405 0084 E068 ldr r0, [r4, #12] 406 .LVL24: 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 407 .loc 1 385 0 408 0086 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 409 .LVL25: 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Page = addresstmp; 410 .loc 1 388 0 411 008a E068 ldr r0, [r4, #12] 412 008c 8030 adds r0, r0, #128 413 .LVL26: 389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 414 .loc 1 389 0 415 008e E060 str r0, [r4, #12] 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 416 .loc 1 392 0 417 0090 1A4A ldr r2, .L31 418 0092 5368 ldr r3, [r2, #4] 419 0094 1B49 ldr r1, .L31+8 420 0096 0B40 ands r3, r1 421 0098 5360 str r3, [r2, #4] 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } ARM GAS /tmp/ccqRvrNg.s page 22 422 .loc 1 394 0 423 009a FFF7FEFF bl FLASH_PageErase 424 .LVL27: 425 009e 1CE0 b .L26 426 .LVL28: 427 .L30: 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.Page = 0xFFFFFFFFU; 428 .loc 1 348 0 429 00a0 174B ldr r3, .L31+4 430 00a2 DC68 ldr r4, [r3, #12] 431 .LVL29: 349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 432 .loc 1 349 0 433 00a4 0122 movs r2, #1 434 00a6 5242 rsbs r2, r2, #0 435 00a8 DA60 str r2, [r3, #12] 436 00aa CCE7 b .L25 437 .LVL30: 438 .L28: 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 439 .loc 1 400 0 440 00ac 144B ldr r3, .L31+4 441 00ae 0120 movs r0, #1 442 00b0 4042 rsbs r0, r0, #0 443 00b2 D860 str r0, [r3, #12] 401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 444 .loc 1 401 0 445 00b4 0022 movs r2, #0 446 00b6 1A70 strb r2, [r3] 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 447 .loc 1 403 0 448 00b8 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 449 .LVL31: 450 00bc 0DE0 b .L26 451 .LVL32: 452 .L27: 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 453 .loc 1 409 0 454 00be 0F4A ldr r2, .L31 455 00c0 5368 ldr r3, [r2, #4] 456 00c2 0821 movs r1, #8 457 00c4 8B43 bics r3, r1 458 00c6 5360 str r3, [r2, #4] 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 459 .loc 1 413 0 460 00c8 0D4C ldr r4, .L31+4 461 00ca A068 ldr r0, [r4, #8] 462 00cc FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 463 .LVL33: 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 464 .loc 1 416 0 465 00d0 0123 movs r3, #1 466 00d2 5B42 rsbs r3, r3, #0 467 00d4 A360 str r3, [r4, #8] 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 468 .loc 1 417 0 469 00d6 0023 movs r3, #0 ARM GAS /tmp/ccqRvrNg.s page 23 470 00d8 2370 strb r3, [r4] 471 .L26: 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 472 .loc 1 423 0 473 00da 094B ldr r3, .L31+4 474 00dc 1B78 ldrb r3, [r3] 475 00de 002B cmp r3, #0 476 00e0 0BD1 bne .L21 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 477 .loc 1 426 0 478 00e2 064B ldr r3, .L31 479 00e4 5A68 ldr r2, [r3, #4] 480 00e6 0849 ldr r1, .L31+12 481 00e8 0A40 ands r2, r1 482 00ea 5A60 str r2, [r3, #4] 429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 483 .loc 1 429 0 484 00ec 5A68 ldr r2, [r3, #4] 485 00ee 0749 ldr r1, .L31+16 486 00f0 0A40 ands r2, r1 487 00f2 5A60 str r2, [r3, #4] 432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 488 .loc 1 432 0 489 00f4 024B ldr r3, .L31+4 490 00f6 0022 movs r2, #0 491 00f8 1A74 strb r2, [r3, #16] 492 .L21: 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 493 .loc 1 434 0 494 @ sp needed 495 00fa 10BD pop {r4, pc} 496 .L32: 497 .align 2 498 .L31: 499 00fc 00200240 .word 1073881088 500 0100 00000000 .word .LANCHOR0 501 0104 FFFDFFFF .word -513 502 0108 F7FDFFFF .word -521 503 010c FFFFFCFF .word -196609 504 .cfi_endproc 505 .LFE41: 507 .section .text.HAL_FLASH_Unlock,"ax",%progbits 508 .align 1 509 .global HAL_FLASH_Unlock 510 .syntax unified 511 .code 16 512 .thumb_func 513 .fpu softvfp 515 HAL_FLASH_Unlock: 516 .LFB44: 495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if (HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_PRGLOCK)) 517 .loc 1 495 0 518 .cfi_startproc 519 @ args = 0, pretend = 0, frame = 0 520 @ frame_needed = 0, uses_anonymous_args = 0 521 @ link register save eliminated. 496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { ARM GAS /tmp/ccqRvrNg.s page 24 522 .loc 1 496 0 523 0000 0A4B ldr r3, .L37 524 0002 5B68 ldr r3, [r3, #4] 525 0004 9B07 lsls r3, r3, #30 526 0006 0FD5 bpl .L36 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 527 .loc 1 499 0 528 0008 084B ldr r3, .L37 529 000a 5B68 ldr r3, [r3, #4] 530 000c DB07 lsls r3, r3, #31 531 000e 04D5 bpl .L35 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); 532 .loc 1 501 0 533 0010 064B ldr r3, .L37 534 0012 074A ldr r2, .L37+4 535 0014 DA60 str r2, [r3, #12] 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 536 .loc 1 502 0 537 0016 074A ldr r2, .L37+8 538 0018 DA60 str r2, [r3, #12] 539 .L35: 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PRGKEYR, FLASH_PRGKEY2); 540 .loc 1 506 0 541 001a 044B ldr r3, .L37 542 001c 064A ldr r2, .L37+12 543 001e 1A61 str r2, [r3, #16] 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 544 .loc 1 507 0 545 0020 064A ldr r2, .L37+16 546 0022 1A61 str r2, [r3, #16] 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 547 .loc 1 514 0 548 0024 0020 movs r0, #0 549 .L34: 515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 550 .loc 1 515 0 551 @ sp needed 552 0026 7047 bx lr 553 .L36: 511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 554 .loc 1 511 0 555 0028 0120 movs r0, #1 556 002a FCE7 b .L34 557 .L38: 558 .align 2 559 .L37: 560 002c 00200240 .word 1073881088 561 0030 EFCDAB89 .word -1985229329 562 0034 05040302 .word 33752069 563 0038 BFAE9D8C .word -1935823169 564 003c 16151413 .word 320083222 565 .cfi_endproc 566 .LFE44: 568 .section .text.HAL_FLASH_Lock,"ax",%progbits 569 .align 1 570 .global HAL_FLASH_Lock 571 .syntax unified ARM GAS /tmp/ccqRvrNg.s page 25 572 .code 16 573 .thumb_func 574 .fpu softvfp 576 HAL_FLASH_Lock: 577 .LFB45: 522:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Set the PRGLOCK Bit to lock the FLASH Registers access */ 578 .loc 1 522 0 579 .cfi_startproc 580 @ args = 0, pretend = 0, frame = 0 581 @ frame_needed = 0, uses_anonymous_args = 0 582 @ link register save eliminated. 524:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 583 .loc 1 524 0 584 0000 034A ldr r2, .L40 585 0002 5368 ldr r3, [r2, #4] 586 0004 0221 movs r1, #2 587 0006 0B43 orrs r3, r1 588 0008 5360 str r3, [r2, #4] 527:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 589 .loc 1 527 0 590 000a 0020 movs r0, #0 591 @ sp needed 592 000c 7047 bx lr 593 .L41: 594 000e C046 .align 2 595 .L40: 596 0010 00200240 .word 1073881088 597 .cfi_endproc 598 .LFE45: 600 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 601 .align 1 602 .global HAL_FLASH_OB_Unlock 603 .syntax unified 604 .code 16 605 .thumb_func 606 .fpu softvfp 608 HAL_FLASH_OB_Unlock: 609 .LFB46: 534:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** if(HAL_IS_BIT_SET(FLASH->PECR, FLASH_PECR_OPTLOCK)) 610 .loc 1 534 0 611 .cfi_startproc 612 @ args = 0, pretend = 0, frame = 0 613 @ frame_needed = 0, uses_anonymous_args = 0 614 @ link register save eliminated. 535:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 615 .loc 1 535 0 616 0000 0A4B ldr r3, .L46 617 0002 5B68 ldr r3, [r3, #4] 618 0004 5B07 lsls r3, r3, #29 619 0006 0FD5 bpl .L45 538:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 620 .loc 1 538 0 621 0008 084B ldr r3, .L46 622 000a 5B68 ldr r3, [r3, #4] 623 000c DB07 lsls r3, r3, #31 624 000e 04D5 bpl .L44 541:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->PEKEYR, FLASH_PEKEY2); ARM GAS /tmp/ccqRvrNg.s page 26 625 .loc 1 541 0 626 0010 064B ldr r3, .L46 627 0012 074A ldr r2, .L46+4 628 0014 DA60 str r2, [r3, #12] 542:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 629 .loc 1 542 0 630 0016 074A ldr r2, .L46+8 631 0018 DA60 str r2, [r3, #12] 632 .L44: 546:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); 633 .loc 1 546 0 634 001a 044B ldr r3, .L46 635 001c 064A ldr r2, .L46+12 636 001e 5A61 str r2, [r3, #20] 547:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 637 .loc 1 547 0 638 0020 064A ldr r2, .L46+16 639 0022 5A61 str r2, [r3, #20] 554:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 640 .loc 1 554 0 641 0024 0020 movs r0, #0 642 .L43: 555:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 643 .loc 1 555 0 644 @ sp needed 645 0026 7047 bx lr 646 .L45: 551:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 647 .loc 1 551 0 648 0028 0120 movs r0, #1 649 002a FCE7 b .L43 650 .L47: 651 .align 2 652 .L46: 653 002c 00200240 .word 1073881088 654 0030 EFCDAB89 .word -1985229329 655 0034 05040302 .word 33752069 656 0038 C8D9EAFB .word -68494904 657 003c 27262524 .word 606414375 658 .cfi_endproc 659 .LFE46: 661 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 662 .align 1 663 .global HAL_FLASH_OB_Lock 664 .syntax unified 665 .code 16 666 .thumb_func 667 .fpu softvfp 669 HAL_FLASH_OB_Lock: 670 .LFB47: 562:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the option bytes block access */ 671 .loc 1 562 0 672 .cfi_startproc 673 @ args = 0, pretend = 0, frame = 0 674 @ frame_needed = 0, uses_anonymous_args = 0 675 @ link register save eliminated. 564:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** ARM GAS /tmp/ccqRvrNg.s page 27 676 .loc 1 564 0 677 0000 034A ldr r2, .L49 678 0002 5368 ldr r3, [r2, #4] 679 0004 0421 movs r1, #4 680 0006 0B43 orrs r3, r1 681 0008 5360 str r3, [r2, #4] 567:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 682 .loc 1 567 0 683 000a 0020 movs r0, #0 684 @ sp needed 685 000c 7047 bx lr 686 .L50: 687 000e C046 .align 2 688 .L49: 689 0010 00200240 .word 1073881088 690 .cfi_endproc 691 .LFE47: 693 .section .text.HAL_FLASH_GetError,"ax",%progbits 694 .align 1 695 .global HAL_FLASH_GetError 696 .syntax unified 697 .code 16 698 .thumb_func 699 .fpu softvfp 701 HAL_FLASH_GetError: 702 .LFB49: 607:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return pFlash.ErrorCode; 703 .loc 1 607 0 704 .cfi_startproc 705 @ args = 0, pretend = 0, frame = 0 706 @ frame_needed = 0, uses_anonymous_args = 0 707 @ link register save eliminated. 608:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 708 .loc 1 608 0 709 0000 014B ldr r3, .L52 710 0002 5869 ldr r0, [r3, #20] 609:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 711 .loc 1 609 0 712 @ sp needed 713 0004 7047 bx lr 714 .L53: 715 0006 C046 .align 2 716 .L52: 717 0008 00000000 .word .LANCHOR0 718 .cfi_endproc 719 .LFE49: 721 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 722 .align 1 723 .global FLASH_WaitForLastOperation 724 .syntax unified 725 .code 16 726 .thumb_func 727 .fpu softvfp 729 FLASH_WaitForLastOperation: 730 .LFB50: 629:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 731 .loc 1 629 0 ARM GAS /tmp/ccqRvrNg.s page 28 732 .cfi_startproc 733 @ args = 0, pretend = 0, frame = 0 734 @ frame_needed = 0, uses_anonymous_args = 0 735 .LVL34: 736 0000 70B5 push {r4, r5, r6, lr} 737 .LCFI2: 738 .cfi_def_cfa_offset 16 739 .cfi_offset 4, -16 740 .cfi_offset 5, -12 741 .cfi_offset 6, -8 742 .cfi_offset 14, -4 743 0002 0400 movs r4, r0 634:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 744 .loc 1 634 0 745 0004 FFF7FEFF bl HAL_GetTick 746 .LVL35: 747 0008 0500 movs r5, r0 748 .LVL36: 749 .L56: 636:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 750 .loc 1 636 0 751 000a 1D4B ldr r3, .L65 752 000c 9B69 ldr r3, [r3, #24] 753 000e DB07 lsls r3, r3, #31 754 0010 0AD5 bpl .L64 638:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 755 .loc 1 638 0 756 0012 631C adds r3, r4, #1 757 0014 F9D0 beq .L56 640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 758 .loc 1 640 0 759 0016 002C cmp r4, #0 760 0018 2DD0 beq .L61 640:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 761 .loc 1 640 0 is_stmt 0 discriminator 1 762 001a FFF7FEFF bl HAL_GetTick 763 .LVL37: 764 001e 401B subs r0, r0, r5 765 0020 A042 cmp r0, r4 766 0022 F2D9 bls .L56 642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 767 .loc 1 642 0 is_stmt 1 768 0024 0320 movs r0, #3 769 0026 25E0 b .L57 770 .L64: 648:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 771 .loc 1 648 0 772 0028 154B ldr r3, .L65 773 002a 9B69 ldr r3, [r3, #24] 774 002c 9B07 lsls r3, r3, #30 775 002e 02D5 bpl .L59 651:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 776 .loc 1 651 0 777 0030 134B ldr r3, .L65 778 0032 0222 movs r2, #2 779 0034 9A61 str r2, [r3, #24] 780 .L59: ARM GAS /tmp/ccqRvrNg.s page 29 654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 781 .loc 1 654 0 782 0036 124B ldr r3, .L65 783 0038 9B69 ldr r3, [r3, #24] 784 003a DB05 lsls r3, r3, #23 785 003c 17D4 bmi .L60 655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 786 .loc 1 655 0 discriminator 1 787 003e 104B ldr r3, .L65 788 0040 9B69 ldr r3, [r3, #24] 654:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 789 .loc 1 654 0 discriminator 1 790 0042 9B05 lsls r3, r3, #22 791 0044 13D4 bmi .L60 656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 792 .loc 1 656 0 793 0046 0E4B ldr r3, .L65 794 0048 9B69 ldr r3, [r3, #24] 655:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 795 .loc 1 655 0 796 004a 5B05 lsls r3, r3, #21 797 004c 0FD4 bmi .L60 657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 798 .loc 1 657 0 799 004e 0C4B ldr r3, .L65 800 0050 9B69 ldr r3, [r3, #24] 656:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 801 .loc 1 656 0 802 0052 1B05 lsls r3, r3, #20 803 0054 0BD4 bmi .L60 658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 804 .loc 1 658 0 805 0056 0A4B ldr r3, .L65 806 0058 9B69 ldr r3, [r3, #24] 657:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 807 .loc 1 657 0 808 005a 9B04 lsls r3, r3, #18 809 005c 07D4 bmi .L60 659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 810 .loc 1 659 0 811 005e 084B ldr r3, .L65 812 0060 9B69 ldr r3, [r3, #24] 658:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 813 .loc 1 658 0 814 0062 9B03 lsls r3, r3, #14 815 0064 03D4 bmi .L60 660:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 816 .loc 1 660 0 817 0066 064B ldr r3, .L65 818 0068 9B69 ldr r3, [r3, #24] 659:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 819 .loc 1 659 0 820 006a DB03 lsls r3, r3, #15 821 006c 05D5 bpl .L63 822 .L60: 672:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** return HAL_ERROR; 823 .loc 1 672 0 ARM GAS /tmp/ccqRvrNg.s page 30 824 006e FFF7FEFF bl FLASH_SetErrorCode 825 .LVL38: 673:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 826 .loc 1 673 0 827 0072 0120 movs r0, #1 828 .L57: 678:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 829 .loc 1 678 0 830 @ sp needed 831 .LVL39: 832 .LVL40: 833 0074 70BD pop {r4, r5, r6, pc} 834 .LVL41: 835 .L61: 642:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 836 .loc 1 642 0 837 0076 0320 movs r0, #3 838 0078 FCE7 b .L57 839 .L63: 677:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 840 .loc 1 677 0 841 007a 0020 movs r0, #0 842 007c FAE7 b .L57 843 .L66: 844 007e C046 .align 2 845 .L65: 846 0080 00200240 .word 1073881088 847 .cfi_endproc 848 .LFE50: 850 .section .text.HAL_FLASH_Program,"ax",%progbits 851 .align 1 852 .global HAL_FLASH_Program 853 .syntax unified 854 .code 16 855 .thumb_func 856 .fpu softvfp 858 HAL_FLASH_Program: 859 .LFB39: 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 860 .loc 1 248 0 861 .cfi_startproc 862 @ args = 0, pretend = 0, frame = 0 863 @ frame_needed = 0, uses_anonymous_args = 0 864 .LVL42: 865 0000 70B5 push {r4, r5, r6, lr} 866 .LCFI3: 867 .cfi_def_cfa_offset 16 868 .cfi_offset 4, -16 869 .cfi_offset 5, -12 870 .cfi_offset 6, -8 871 .cfi_offset 14, -4 872 0002 0C00 movs r4, r1 873 0004 1500 movs r5, r2 874 .LVL43: 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 875 .loc 1 252 0 876 0006 0D4B ldr r3, .L72 ARM GAS /tmp/ccqRvrNg.s page 31 877 0008 1B7C ldrb r3, [r3, #16] 878 000a 012B cmp r3, #1 879 000c 13D0 beq .L70 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 880 .loc 1 252 0 is_stmt 0 discriminator 2 881 000e 0B4B ldr r3, .L72 882 0010 0122 movs r2, #1 883 .LVL44: 884 0012 1A74 strb r2, [r3, #16] 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 885 .loc 1 259 0 is_stmt 1 discriminator 2 886 0014 0A48 ldr r0, .L72+4 887 .LVL45: 888 0016 FFF7FEFF bl FLASH_WaitForLastOperation 889 .LVL46: 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** { 890 .loc 1 261 0 discriminator 2 891 001a 0028 cmp r0, #0 892 001c 03D0 beq .L71 893 .LVL47: 894 .L69: 274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 895 .loc 1 274 0 896 001e 074B ldr r3, .L72 897 0020 0022 movs r2, #0 898 0022 1A74 strb r2, [r3, #16] 899 .LVL48: 900 .L68: 277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 901 .loc 1 277 0 902 @ sp needed 903 .LVL49: 904 .LVL50: 905 0024 70BD pop {r4, r5, r6, pc} 906 .LVL51: 907 .L71: 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 908 .loc 1 264 0 909 0026 054B ldr r3, .L72 910 0028 0022 movs r2, #0 911 002a 5A61 str r2, [r3, #20] 267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 912 .loc 1 267 0 913 002c 2560 str r5, [r4] 270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 914 .loc 1 270 0 915 002e 0448 ldr r0, .L72+4 916 .LVL52: 917 0030 FFF7FEFF bl FLASH_WaitForLastOperation 918 .LVL53: 919 0034 F3E7 b .L69 920 .LVL54: 921 .L70: 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 922 .loc 1 252 0 923 0036 0220 movs r0, #2 924 .LVL55: ARM GAS /tmp/ccqRvrNg.s page 32 925 0038 F4E7 b .L68 926 .L73: 927 003a C046 .align 2 928 .L72: 929 003c 00000000 .word .LANCHOR0 930 0040 50C30000 .word 50000 931 .cfi_endproc 932 .LFE39: 934 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 935 .align 1 936 .global HAL_FLASH_OB_Launch 937 .syntax unified 938 .code 16 939 .thumb_func 940 .fpu softvfp 942 HAL_FLASH_OB_Launch: 943 .LFB48: 575:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** /* Set the OBL_Launch bit to launch the option byte loading */ 944 .loc 1 575 0 945 .cfi_startproc 946 @ args = 0, pretend = 0, frame = 0 947 @ frame_needed = 0, uses_anonymous_args = 0 948 0000 10B5 push {r4, lr} 949 .LCFI4: 950 .cfi_def_cfa_offset 8 951 .cfi_offset 4, -8 952 .cfi_offset 14, -4 577:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 953 .loc 1 577 0 954 0002 054A ldr r2, .L75 955 0004 5168 ldr r1, [r2, #4] 956 0006 8023 movs r3, #128 957 0008 DB02 lsls r3, r3, #11 958 000a 0B43 orrs r3, r1 959 000c 5360 str r3, [r2, #4] 580:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** } 960 .loc 1 580 0 961 000e 0348 ldr r0, .L75+4 962 0010 FFF7FEFF bl FLASH_WaitForLastOperation 963 .LVL56: 581:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c **** 964 .loc 1 581 0 965 @ sp needed 966 0014 10BD pop {r4, pc} 967 .L76: 968 0016 C046 .align 2 969 .L75: 970 0018 00200240 .word 1073881088 971 001c 50C30000 .word 50000 972 .cfi_endproc 973 .LFE48: 975 .global pFlash 976 .section .bss.pFlash,"aw",%nobits 977 .align 2 978 .set .LANCHOR0,. + 0 981 pFlash: 982 0000 00000000 .space 24 ARM GAS /tmp/ccqRvrNg.s page 33 982 00000000 982 00000000 982 00000000 982 00000000 983 .text 984 .Letext0: 985 .file 2 "/usr/arm-none-eabi/include/machine/_default_types.h" 986 .file 3 "/usr/arm-none-eabi/include/sys/_stdint.h" 987 .file 4 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h" 988 .file 5 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h" 989 .file 6 "/usr/arm-none-eabi/include/sys/lock.h" 990 .file 7 "/usr/arm-none-eabi/include/sys/_types.h" 991 .file 8 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 992 .file 9 "/usr/arm-none-eabi/include/sys/reent.h" 993 .file 10 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h" 994 .file 11 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h" 995 .file 12 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h" 996 .file 13 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h" ARM GAS /tmp/ccqRvrNg.s page 34 DEFINED SYMBOLS *ABS*:0000000000000000 stm32l0xx_hal_flash.c /tmp/ccqRvrNg.s:16 .text.FLASH_SetErrorCode:0000000000000000 $t /tmp/ccqRvrNg.s:22 .text.FLASH_SetErrorCode:0000000000000000 FLASH_SetErrorCode /tmp/ccqRvrNg.s:162 .text.FLASH_SetErrorCode:00000000000000ac $d /tmp/ccqRvrNg.s:168 .text.HAL_FLASH_Program_IT:0000000000000000 $t /tmp/ccqRvrNg.s:175 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT /tmp/ccqRvrNg.s:241 .text.HAL_FLASH_Program_IT:0000000000000038 $d /tmp/ccqRvrNg.s:247 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t /tmp/ccqRvrNg.s:254 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback /tmp/ccqRvrNg.s:269 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t /tmp/ccqRvrNg.s:276 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback /tmp/ccqRvrNg.s:291 .text.HAL_FLASH_IRQHandler:0000000000000000 $t /tmp/ccqRvrNg.s:298 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler /tmp/ccqRvrNg.s:499 .text.HAL_FLASH_IRQHandler:00000000000000fc $d /tmp/ccqRvrNg.s:508 .text.HAL_FLASH_Unlock:0000000000000000 $t /tmp/ccqRvrNg.s:515 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock /tmp/ccqRvrNg.s:560 .text.HAL_FLASH_Unlock:000000000000002c $d /tmp/ccqRvrNg.s:569 .text.HAL_FLASH_Lock:0000000000000000 $t /tmp/ccqRvrNg.s:576 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock /tmp/ccqRvrNg.s:596 .text.HAL_FLASH_Lock:0000000000000010 $d /tmp/ccqRvrNg.s:601 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t /tmp/ccqRvrNg.s:608 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock /tmp/ccqRvrNg.s:653 .text.HAL_FLASH_OB_Unlock:000000000000002c $d /tmp/ccqRvrNg.s:662 .text.HAL_FLASH_OB_Lock:0000000000000000 $t /tmp/ccqRvrNg.s:669 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock /tmp/ccqRvrNg.s:689 .text.HAL_FLASH_OB_Lock:0000000000000010 $d /tmp/ccqRvrNg.s:694 .text.HAL_FLASH_GetError:0000000000000000 $t /tmp/ccqRvrNg.s:701 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError /tmp/ccqRvrNg.s:717 .text.HAL_FLASH_GetError:0000000000000008 $d /tmp/ccqRvrNg.s:722 .text.FLASH_WaitForLastOperation:0000000000000000 $t /tmp/ccqRvrNg.s:729 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation /tmp/ccqRvrNg.s:846 .text.FLASH_WaitForLastOperation:0000000000000080 $d /tmp/ccqRvrNg.s:851 .text.HAL_FLASH_Program:0000000000000000 $t /tmp/ccqRvrNg.s:858 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program /tmp/ccqRvrNg.s:929 .text.HAL_FLASH_Program:000000000000003c $d /tmp/ccqRvrNg.s:935 .text.HAL_FLASH_OB_Launch:0000000000000000 $t /tmp/ccqRvrNg.s:942 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch /tmp/ccqRvrNg.s:970 .text.HAL_FLASH_OB_Launch:0000000000000018 $d /tmp/ccqRvrNg.s:981 .bss.pFlash:0000000000000000 pFlash /tmp/ccqRvrNg.s:977 .bss.pFlash:0000000000000000 $d .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS FLASH_PageErase HAL_GetTick