ARM GAS /tmp/ccviJFHV.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_ramfunc.c" 12 .text 13 .Ltext0: 14 .cfi_sections .debug_frame 15 .section .RamFunc,"ax",%progbits 16 .align 1 17 .syntax unified 18 .code 16 19 .thumb_func 20 .fpu softvfp 22 FLASHRAM_WaitForLastOperation: 23 .LFB46: 24 .file 1 "./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c" 1:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 2:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ****************************************************************************** 3:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @file stm32l0xx_hal_flash_ramfunc.c 4:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @author MCD Application Team 5:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief FLASH RAMFUNC driver. 6:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * This file provides a Flash firmware functions which should be 7:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * executed from internal SRAM 8:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 9:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @verbatim 10:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 11:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *** ARM Compiler *** 12:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** -------------------- 13:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** [..] RAM functions are defined using the toolchain options. 14:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** Functions that are be executed in RAM should reside in a separate 15:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** source module. Using the 'Options for File' dialog you can simply change 16:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** the 'Code / Const' area of a module to a memory space in physical RAM. 17:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** Available memory areas are declared in the 'Target' tab of the 18:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** Options for Target' dialog. 19:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 20:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *** ICCARM Compiler *** 21:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ----------------------- 22:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** [..] RAM functions are defined using a specific toolchain keyword "__ramfunc". 23:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 24:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *** GNU Compiler *** 25:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** -------------------- 26:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** [..] RAM functions are defined using a specific toolchain attribute 27:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** "__attribute__((section(".RamFunc")))". 28:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 29:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @endverbatim 30:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ****************************************************************************** 31:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @attention 32:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 33:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *

© COPYRIGHT(c) 2016 STMicroelectronics

34:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * ARM GAS /tmp/ccviJFHV.s page 2 35:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * Redistribution and use in source and binary forms, with or without modification, 36:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * are permitted provided that the following conditions are met: 37:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 1. Redistributions of source code must retain the above copyright notice, 38:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * this list of conditions and the following disclaimer. 39:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, 40:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * this list of conditions and the following disclaimer in the documentation 41:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * and/or other materials provided with the distribution. 42:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 3. Neither the name of STMicroelectronics nor the names of its contributors 43:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * may be used to endorse or promote products derived from this software 44:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * without specific prior written permission. 45:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 46:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 47:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 48:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 49:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 50:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 51:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 52:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 53:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 54:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 55:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 56:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 57:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ****************************************************************************** 58:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 59:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 60:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Includes ------------------------------------------------------------------*/ 61:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** #include "stm32l0xx_hal.h" 62:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 63:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @addtogroup STM32L0xx_HAL_Driver 64:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 65:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 66:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 67:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** #ifdef HAL_FLASH_MODULE_ENABLED 68:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 69:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @addtogroup FLASH 70:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 71:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 72:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @addtogroup FLASH_Private_Variables 73:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 74:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 75:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** extern FLASH_ProcessTypeDef pFlash; 76:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 77:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 78:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 79:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 80:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 81:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 82:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 83:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 84:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @defgroup FLASH_RAMFUNC FLASH_RAMFUNC 85:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief FLASH functions executed from RAM 86:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 87:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 88:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 89:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 90:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Private typedef -----------------------------------------------------------*/ 91:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Private define ------------------------------------------------------------*/ ARM GAS /tmp/ccviJFHV.s page 3 92:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Private macro -------------------------------------------------------------*/ 93:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Private variables ---------------------------------------------------------*/ 94:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Private function prototypes -----------------------------------------------*/ 95:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @defgroup FLASH_RAMFUNC_Private_Functions FLASH RAM Private Functions 96:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 97:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 98:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 99:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** static __RAM_FUNC FLASHRAM_WaitForLastOperation(uint32_t Timeout); 100:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** static __RAM_FUNC FLASHRAM_SetErrorCode(void); 101:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 102:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 103:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 104:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 105:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 106:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Private functions ---------------------------------------------------------*/ 107:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 108:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @defgroup FLASH_RAMFUNC_Exported_Functions FLASH RAM Exported Functions 109:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 110:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @verbatim 111:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** =============================================================================== 112:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ##### ramfunc functions ##### 113:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** =============================================================================== 114:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** [..] 115:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** This subsection provides a set of functions that should be executed from RAM 116:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** transfers. 117:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 118:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @endverbatim 119:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 120:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 121:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 122:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @defgroup FLASH_RAMFUNC_Exported_Functions_Group1 Peripheral features functions 123:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 124:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 125:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 126:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 127:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Enable the power down mode during RUN mode. 128:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note This function can be used only when the user code is running from Internal SRAM. 129:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL status 130:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 131:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __RAM_FUNC HAL_FLASHEx_EnableRunPowerDown(void) 132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 133:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Enable the Power Down in Run mode*/ 134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_POWER_DOWN_ENABLE(); 135:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 136:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_OK; 137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 138:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 139:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 140:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Disable the power down mode during RUN mode. 141:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note This function can be used only when the user code is running from Internal SRAM. 142:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL status 143:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 144:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __RAM_FUNC HAL_FLASHEx_DisableRunPowerDown(void) 145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 146:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Disable the Power Down in Run mode*/ 147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_POWER_DOWN_DISABLE(); 148:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ARM GAS /tmp/ccviJFHV.s page 4 149:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_OK; 150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 151:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 152:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 153:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 154:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 155:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 156:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @defgroup FLASH_RAMFUNC_Exported_Functions_Group2 Programming and erasing operation functions 157:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 158:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @verbatim 159:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @endverbatim 160:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 161:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 162:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 163:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** #if defined(FLASH_PECR_PARALLBANK) 164:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 165:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Erases a specified 2 pages in program memory in parallel. 166:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note This function can be used only for STM32L07xxx/STM32L08xxx devices. 167:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * To correctly run this function, the @ref HAL_FLASH_Unlock() function 168:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * must be called before. 169:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 170:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (recommended to protect the FLASH memory against possible unwanted operation). 171:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Page_Address1: The page address in program memory to be erased in 172:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * the first Bank (BANK1). This parameter should be between FLASH_BASE 173:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * and FLASH_BANK1_END. 174:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Page_Address2: The page address in program memory to be erased in 175:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * the second Bank (BANK2). This parameter should be between FLASH_BANK2_BASE 176:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * and FLASH_BANK2_END. 177:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note A Page is erased in the Program memory only if the address to load 178:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * is the start address of a page (multiple of @ref FLASH_PAGE_SIZE bytes). 179:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL status 180:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 181:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __RAM_FUNC HAL_FLASHEx_EraseParallelPage(uint32_t Page_Address1, uint32_t Page_Address2) 182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 183:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** HAL_StatusTypeDef status = HAL_OK; 184:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 185:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 187:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(status == HAL_OK) 189:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 190:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Proceed to erase the page */ 191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); 192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 194:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 195:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Write 00000000h to the first word of the first program page to erase */ 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *(__IO uint32_t *)Page_Address1 = 0x00000000U; 197:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Write 00000000h to the first word of the second program page to erase */ 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *(__IO uint32_t *)Page_Address2 = 0x00000000U; 199:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 200:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 202:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 203:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* If the erase operation is completed, disable the ERASE, PROG and PARALLBANK bits */ 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); ARM GAS /tmp/ccviJFHV.s page 5 206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); 207:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 208:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Return the Erase Status */ 209:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return status; 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 211:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 212:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 213:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Program 2 half pages in program memory in parallel (half page size is 16 Words). 214:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note This function can be used only for STM32L07xxx/STM32L08xxx devices. 215:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Address1: specifies the first address to be written in the first bank 216:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (BANK1). This parameter should be between FLASH_BASE and (FLASH_BANK1_END - FLASH_PAGE_S 217:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param pBuffer1: pointer to the buffer containing the data to be written 218:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * to the first half page in the first bank. 219:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Address2: specifies the second address to be written in the second bank 220:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (BANK2). This parameter should be between FLASH_BANK2_BASE and (FLASH_BANK2_END - FLASH_ 221:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param pBuffer2: pointer to the buffer containing the data to be written 222:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * to the second half page in the second bank. 223:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function 224:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * must be called before. 225:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 226:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (recommended to protect the FLASH memory against possible unwanted operation). 227:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note Half page write is possible only from SRAM. 228:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note A half page is written to the program memory only if the first 229:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * address to load is the start address of a half page (multiple of 64 230:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * bytes) and the 15 remaining words to load are in the same half page. 231:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note During the Program memory half page write all read operations are 232:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * forbidden (this includes DMA read operations and debugger read 233:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * operations such as breakpoints, periodic updates, etc.). 234:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note If a PGAERR is set during a Program memory half page write, the 235:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * complete write operation is aborted. Software should then reset the 236:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * FPRG and PROG/DATA bits and restart the write operation from the 237:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * beginning. 238:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL status 239:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 240:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __RAM_FUNC HAL_FLASHEx_ProgramParallelHalfPage(uint32_t Address1, uint32_t* pBuffer1, uint32_t Addr 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** uint32_t count = 0U; 243:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** HAL_StatusTypeDef status = HAL_OK; 244:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 245:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 247:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(status == HAL_OK) 249:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 250:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Proceed to program the new half page */ 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 254:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 255:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(status == HAL_OK) 258:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 259:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Disable all IRQs */ 260:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __disable_irq(); 261:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 262:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Write the first half page directly with 16 different words */ ARM GAS /tmp/ccviJFHV.s page 6 263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** while(count < 16U) 264:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 265:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Address1 doesn't need to be increased */ 266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *(__IO uint32_t*) Address1 = *pBuffer1; 267:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pBuffer1++; 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** count ++; 269:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 270:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 271:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Write the second half page directly with 16 different words */ 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** count = 0U; 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** while(count < 16U) 274:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 275:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Address2 doesn't need to be increased */ 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *(__IO uint32_t*) Address2 = *pBuffer2; 277:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pBuffer2++; 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** count ++; 279:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 280:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 281:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Enable IRQs */ 282:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __enable_irq(); 283:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 284:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 286:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 287:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 288:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* if the write operation is completed, disable the PROG, FPRG and PARALLBANK bits */ 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); 292:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 293:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 294:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Return the Write Status */ 295:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return status; 296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 297:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** #endif /* FLASH_PECR_PARALLBANK */ 298:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 299:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 300:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Program a half page in program memory. 301:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Address: specifies the address to be written. 302:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param pBuffer: pointer to the buffer containing the data to be written to 303:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * the half page. 304:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function 305:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * must be called before. 306:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 307:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (recommended to protect the FLASH memory against possible unwanted operation) 308:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note Half page write is possible only from SRAM. 309:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note A half page is written to the program memory only if the first 310:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * address to load is the start address of a half page (multiple of 64 311:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * bytes) and the 15 remaining words to load are in the same half page. 312:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note During the Program memory half page write all read operations are 313:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * forbidden (this includes DMA read operations and debugger read 314:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * operations such as breakpoints, periodic updates, etc.). 315:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @note If a PGAERR is set during a Program memory half page write, the 316:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * complete write operation is aborted. Software should then reset the 317:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * FPRG and PROG/DATA bits and restart the write operation from the 318:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * beginning. 319:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL status ARM GAS /tmp/ccviJFHV.s page 7 320:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 321:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __RAM_FUNC HAL_FLASHEx_HalfPageProgram(uint32_t Address, uint32_t* pBuffer) 322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** uint32_t count = 0U; 324:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** HAL_StatusTypeDef status = HAL_OK; 325:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 326:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 328:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(status == HAL_OK) 330:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 331:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Proceed to program the new half page */ 332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); 333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 334:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 335:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Disable all IRQs */ 336:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __disable_irq(); 337:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 338:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Write one half page directly with 16 different words */ 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** while(count < 16U) 340:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 341:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Address doesn't need to be increased */ 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *(__IO uint32_t*) Address = *pBuffer; 343:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pBuffer++; 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** count ++; 345:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 346:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 347:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Enable IRQs */ 348:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __enable_irq(); 349:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 350:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for last operation to be completed */ 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** status = FLASHRAM_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 352:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 353:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* If the write operation is completed, disable the PROG and FPRG bits */ 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PROG); 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); 356:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 357:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 358:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Return the Write Status */ 359:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return status; 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 361:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 362:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 363:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 364:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 365:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 366:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @defgroup FLASH_RAMFUNC_Exported_Functions_Group3 Peripheral errors functions 367:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Peripheral errors functions 368:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 369:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @verbatim 370:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** =============================================================================== 371:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** ##### Peripheral errors functions ##### 372:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** =============================================================================== 373:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** [..] 374:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** This subsection permit to get in run-time errors of the FLASH peripheral. 375:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 376:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** @endverbatim ARM GAS /tmp/ccviJFHV.s page 8 377:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 378:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 379:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 380:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 381:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Get the specific FLASH errors flag. 382:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Error pointer is the error value. It can be a mixed of: 383:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_RD FLASH Read Protection error flag (PCROP) 384:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_SIZE FLASH Programming Parallelism error flag 385:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_PGA FLASH Programming Alignment error flag 386:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_WRP FLASH Write protected error flag 387:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_OPTV FLASH Option valid error flag 388:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_FWWERR FLASH Write or Erase operation aborted 389:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @arg @ref HAL_FLASH_ERROR_NOTZERO FLASH Write operation is done in a not-erased regi 390:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL Status 391:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 392:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __RAM_FUNC HAL_FLASHEx_GetError(uint32_t * Error) 393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *Error = pFlash.ErrorCode; 395:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_OK; 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 397:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 398:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 399:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 400:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 401:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 402:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 403:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @} 404:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 405:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 406:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** @addtogroup FLASH_RAMFUNC_Private_Functions 407:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @{ 408:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 409:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 410:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 411:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Set the specific FLASH error flag. 412:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL Status 413:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 414:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** static __RAM_FUNC FLASHRAM_SetErrorCode(void) 415:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** uint32_t flags = 0; 417:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)) 419:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_WRPERR; 422:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR)) 424:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_PGAERR; 427:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR)) 429:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_SIZE; 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_SIZERR; 432:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR)) ARM GAS /tmp/ccviJFHV.s page 9 434:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 435:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, 436:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving 437:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * as expected. If the user run an application using the first 438:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * cut of the STM32L031xx device or the first cut of the STM32L041xx 439:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * device, this error should be ignored. The revId of the device 440:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * can be retrieved via the HAL_GetREVID() function. 441:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 442:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPTV; 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_OPTVERR; 445:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 446:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR)) 448:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_RDERR; 451:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR)) 453:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_FWWERR; 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= HAL_FLASH_ERROR_FWWERR; 456:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR)) 458:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_NOTZERO; 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_NOTZEROERR; 461:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 462:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 463:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Clear FLASH error pending bits */ 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_CLEAR_FLAG(flags); 465:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 466:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_OK; 467:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 468:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 469:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /** 470:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @brief Wait for a FLASH operation to complete. 471:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @param Timeout: maximum flash operationtimeout 472:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * @retval HAL status 473:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 474:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** static __RAM_FUNC FLASHRAM_WaitForLastOperation(uint32_t Timeout) 475:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 25 .loc 1 475 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: 476:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 477:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 478:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flag will be set */ 479:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) && (Timeout != 0x00U)) 31 .loc 1 480 0 32 0000 00E0 b .L2 33 .L4: 481:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { ARM GAS /tmp/ccviJFHV.s page 10 482:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** Timeout--; 34 .loc 1 482 0 35 0002 0138 subs r0, r0, #1 36 .LVL1: 37 .L2: 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 38 .loc 1 480 0 39 0004 434B ldr r3, .L18 40 0006 9B69 ldr r3, [r3, #24] 41 0008 DB07 lsls r3, r3, #31 42 000a 01D5 bpl .L3 480:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 43 .loc 1 480 0 is_stmt 0 discriminator 1 44 000c 0028 cmp r0, #0 45 000e F8D1 bne .L4 46 .L3: 483:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 484:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 485:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(Timeout == 0x00U) 47 .loc 1 485 0 is_stmt 1 48 0010 0028 cmp r0, #0 49 0012 00D1 bne .LCB28 50 0014 79E0 b .L15 @long jump 51 .LCB28: 486:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_TIMEOUT; 488:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 489:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 490:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Check FLASH End of Operation flag */ 491:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) 52 .loc 1 491 0 53 0016 3F4B ldr r3, .L18 54 0018 9B69 ldr r3, [r3, #24] 55 001a 9B07 lsls r3, r3, #30 56 001c 02D5 bpl .L6 492:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 493:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Clear FLASH End of Operation pending bit */ 494:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 57 .loc 1 494 0 58 001e 3D4B ldr r3, .L18 59 0020 0222 movs r2, #2 60 0022 9A61 str r2, [r3, #24] 61 .L6: 495:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 496:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if( __HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || 62 .loc 1 497 0 63 0024 3B4B ldr r3, .L18 64 0026 9B69 ldr r3, [r3, #24] 65 0028 DB05 lsls r3, r3, #23 66 002a 17D4 bmi .L7 498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 67 .loc 1 498 0 discriminator 1 68 002c 394B ldr r3, .L18 69 002e 9B69 ldr r3, [r3, #24] 497:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 70 .loc 1 497 0 discriminator 1 ARM GAS /tmp/ccviJFHV.s page 11 71 0030 9B05 lsls r3, r3, #22 72 0032 13D4 bmi .L7 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 73 .loc 1 499 0 74 0034 374B ldr r3, .L18 75 0036 9B69 ldr r3, [r3, #24] 498:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) || 76 .loc 1 498 0 77 0038 5B05 lsls r3, r3, #21 78 003a 0FD4 bmi .L7 500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 79 .loc 1 500 0 80 003c 354B ldr r3, .L18 81 003e 9B69 ldr r3, [r3, #24] 499:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_SIZERR) || 82 .loc 1 499 0 83 0040 1B05 lsls r3, r3, #20 84 0042 0BD4 bmi .L7 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 85 .loc 1 501 0 86 0044 334B ldr r3, .L18 87 0046 9B69 ldr r3, [r3, #24] 500:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_OPTVERR) || 88 .loc 1 500 0 89 0048 9B04 lsls r3, r3, #18 90 004a 07D4 bmi .L7 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 91 .loc 1 502 0 92 004c 314B ldr r3, .L18 93 004e 9B69 ldr r3, [r3, #24] 501:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) || 94 .loc 1 501 0 95 0050 9B03 lsls r3, r3, #14 96 0052 03D4 bmi .L7 503:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_NOTZEROERR) ) 97 .loc 1 503 0 98 0054 2F4B ldr r3, .L18 99 0056 9B69 ldr r3, [r3, #24] 502:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_FWWERR) || 100 .loc 1 502 0 101 0058 DB03 lsls r3, r3, #15 102 005a 58D5 bpl .L16 103 .L7: 104 .LVL2: 105 .LBB12: 106 .LBB13: 418:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 107 .loc 1 418 0 108 005c 2D4B ldr r3, .L18 109 005e 9B69 ldr r3, [r3, #24] 110 0060 DB05 lsls r3, r3, #23 111 0062 07D5 bpl .L17 420:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_WRPERR; 112 .loc 1 420 0 113 0064 2C4A ldr r2, .L18+4 114 0066 5369 ldr r3, [r2, #20] 115 0068 0221 movs r1, #2 ARM GAS /tmp/ccviJFHV.s page 12 116 006a 0B43 orrs r3, r1 117 006c 5361 str r3, [r2, #20] 118 .LVL3: 421:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 119 .loc 1 421 0 120 006e 8023 movs r3, #128 121 0070 5B00 lsls r3, r3, #1 122 0072 00E0 b .L8 123 .LVL4: 124 .L17: 416:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 125 .loc 1 416 0 126 0074 0023 movs r3, #0 127 .LVL5: 128 .L8: 423:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 129 .loc 1 423 0 130 0076 274A ldr r2, .L18 131 0078 9269 ldr r2, [r2, #24] 132 007a 9205 lsls r2, r2, #22 133 007c 07D5 bpl .L9 425:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_PGAERR; 134 .loc 1 425 0 135 007e 2649 ldr r1, .L18+4 136 0080 4A69 ldr r2, [r1, #20] 137 0082 0120 movs r0, #1 138 .LVL6: 139 0084 0243 orrs r2, r0 140 0086 4A61 str r2, [r1, #20] 426:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 141 .loc 1 426 0 142 0088 8022 movs r2, #128 143 008a 9200 lsls r2, r2, #2 144 008c 1343 orrs r3, r2 145 .LVL7: 146 .L9: 428:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 147 .loc 1 428 0 148 008e 214A ldr r2, .L18 149 0090 9269 ldr r2, [r2, #24] 150 0092 5205 lsls r2, r2, #21 151 0094 07D5 bpl .L10 430:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_SIZERR; 152 .loc 1 430 0 153 0096 2049 ldr r1, .L18+4 154 0098 4A69 ldr r2, [r1, #20] 155 009a 0820 movs r0, #8 156 009c 0243 orrs r2, r0 157 009e 4A61 str r2, [r1, #20] 431:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 158 .loc 1 431 0 159 00a0 8022 movs r2, #128 160 00a2 D200 lsls r2, r2, #3 161 00a4 1343 orrs r3, r2 162 .LVL8: 163 .L10: 433:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { ARM GAS /tmp/ccviJFHV.s page 13 164 .loc 1 433 0 165 00a6 1B4A ldr r2, .L18 166 00a8 9269 ldr r2, [r2, #24] 167 00aa 1205 lsls r2, r2, #20 168 00ac 07D5 bpl .L11 443:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_OPTVERR; 169 .loc 1 443 0 170 00ae 1A49 ldr r1, .L18+4 171 00b0 4A69 ldr r2, [r1, #20] 172 00b2 0420 movs r0, #4 173 00b4 0243 orrs r2, r0 174 00b6 4A61 str r2, [r1, #20] 444:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 175 .loc 1 444 0 176 00b8 8022 movs r2, #128 177 00ba 1201 lsls r2, r2, #4 178 00bc 1343 orrs r3, r2 179 .LVL9: 180 .L11: 447:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 181 .loc 1 447 0 182 00be 154A ldr r2, .L18 183 00c0 9269 ldr r2, [r2, #24] 184 00c2 9204 lsls r2, r2, #18 185 00c4 07D5 bpl .L12 449:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_RDERR; 186 .loc 1 449 0 187 00c6 1449 ldr r1, .L18+4 188 00c8 4A69 ldr r2, [r1, #20] 189 00ca 1020 movs r0, #16 190 00cc 0243 orrs r2, r0 191 00ce 4A61 str r2, [r1, #20] 450:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 192 .loc 1 450 0 193 00d0 8022 movs r2, #128 194 00d2 9201 lsls r2, r2, #6 195 00d4 1343 orrs r3, r2 196 .LVL10: 197 .L12: 452:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 198 .loc 1 452 0 199 00d6 0F4A ldr r2, .L18 200 00d8 9269 ldr r2, [r2, #24] 201 00da 9203 lsls r2, r2, #14 202 00dc 05D5 bpl .L13 454:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= HAL_FLASH_ERROR_FWWERR; 203 .loc 1 454 0 204 00de 0E48 ldr r0, .L18+4 205 00e0 4269 ldr r2, [r0, #20] 206 00e2 2021 movs r1, #32 207 00e4 0A43 orrs r2, r1 208 00e6 4261 str r2, [r0, #20] 455:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 209 .loc 1 455 0 210 00e8 0B43 orrs r3, r1 211 .LVL11: 212 .L13: ARM GAS /tmp/ccviJFHV.s page 14 457:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 213 .loc 1 457 0 214 00ea 0A4A ldr r2, .L18 215 00ec 9269 ldr r2, [r2, #24] 216 00ee D203 lsls r2, r2, #15 217 00f0 07D5 bpl .L14 459:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** flags |= FLASH_FLAG_NOTZEROERR; 218 .loc 1 459 0 219 00f2 0949 ldr r1, .L18+4 220 00f4 4A69 ldr r2, [r1, #20] 221 00f6 4020 movs r0, #64 222 00f8 0243 orrs r2, r0 223 00fa 4A61 str r2, [r1, #20] 460:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 224 .loc 1 460 0 225 00fc 8022 movs r2, #128 226 00fe 5202 lsls r2, r2, #9 227 0100 1343 orrs r3, r2 228 .LVL12: 229 .L14: 464:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 230 .loc 1 464 0 231 0102 044A ldr r2, .L18 232 0104 9361 str r3, [r2, #24] 233 .LBE13: 234 .LBE12: 504:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 505:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /*Save the error code*/ 506:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 507:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* WARNING : On the first cut of STM32L031xx and STM32L041xx devices, 508:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * (RefID = 0x1000) the FLASH_FLAG_OPTVERR bit was not behaving 509:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * as expected. If the user run an application using the first 510:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * cut of the STM32L031xx device or the first cut of the STM32L041xx 511:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * device, this error should be ignored. The revId of the device 512:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * can be retrieved via the HAL_GetREVID() function. 513:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** * 514:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** */ 515:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** FLASHRAM_SetErrorCode(); 516:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_ERROR; 235 .loc 1 516 0 236 0106 0120 movs r0, #1 237 .LVL13: 238 .L5: 517:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 518:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 519:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* There is no error flag set */ 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_OK; 521:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 239 .loc 1 521 0 240 @ sp needed 241 0108 7047 bx lr 242 .LVL14: 243 .L15: 487:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 244 .loc 1 487 0 245 010a 0320 movs r0, #3 246 .LVL15: ARM GAS /tmp/ccviJFHV.s page 15 247 010c FCE7 b .L5 248 .LVL16: 249 .L16: 520:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 250 .loc 1 520 0 251 010e 0020 movs r0, #0 252 .LVL17: 253 0110 FAE7 b .L5 254 .L19: 255 0112 C046 .align 2 256 .L18: 257 0114 00200240 .word 1073881088 258 0118 00000000 .word pFlash 259 .cfi_endproc 260 .LFE46: 262 .align 1 263 .global HAL_FLASHEx_EnableRunPowerDown 264 .syntax unified 265 .code 16 266 .thumb_func 267 .fpu softvfp 269 HAL_FLASHEx_EnableRunPowerDown: 270 .LFB39: 132:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Enable the Power Down in Run mode*/ 271 .loc 1 132 0 272 .cfi_startproc 273 @ args = 0, pretend = 0, frame = 0 274 @ frame_needed = 0, uses_anonymous_args = 0 275 @ link register save eliminated. 134:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 276 .loc 1 134 0 277 011c 054B ldr r3, .L21 278 011e 064A ldr r2, .L21+4 279 0120 9A60 str r2, [r3, #8] 280 0122 064A ldr r2, .L21+8 281 0124 9A60 str r2, [r3, #8] 282 0126 1A68 ldr r2, [r3] 283 0128 1021 movs r1, #16 284 012a 0A43 orrs r2, r1 285 012c 1A60 str r2, [r3] 137:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 286 .loc 1 137 0 287 012e 0020 movs r0, #0 288 @ sp needed 289 0130 7047 bx lr 290 .L22: 291 0132 C046 .align 2 292 .L21: 293 0134 00200240 .word 1073881088 294 0138 37261504 .word 68494903 295 013c FDFCFBFA .word -84148995 296 .cfi_endproc 297 .LFE39: 299 .align 1 300 .global HAL_FLASHEx_DisableRunPowerDown 301 .syntax unified 302 .code 16 ARM GAS /tmp/ccviJFHV.s page 16 303 .thumb_func 304 .fpu softvfp 306 HAL_FLASHEx_DisableRunPowerDown: 307 .LFB40: 145:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Disable the Power Down in Run mode*/ 308 .loc 1 145 0 309 .cfi_startproc 310 @ args = 0, pretend = 0, frame = 0 311 @ frame_needed = 0, uses_anonymous_args = 0 312 @ link register save eliminated. 147:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 313 .loc 1 147 0 314 0140 054B ldr r3, .L24 315 0142 064A ldr r2, .L24+4 316 0144 9A60 str r2, [r3, #8] 317 0146 064A ldr r2, .L24+8 318 0148 9A60 str r2, [r3, #8] 319 014a 1A68 ldr r2, [r3] 320 014c 1021 movs r1, #16 321 014e 8A43 bics r2, r1 322 0150 1A60 str r2, [r3] 150:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 323 .loc 1 150 0 324 0152 0020 movs r0, #0 325 @ sp needed 326 0154 7047 bx lr 327 .L25: 328 0156 C046 .align 2 329 .L24: 330 0158 00200240 .word 1073881088 331 015c 37261504 .word 68494903 332 0160 FDFCFBFA .word -84148995 333 .cfi_endproc 334 .LFE40: 336 .align 1 337 .global HAL_FLASHEx_EraseParallelPage 338 .syntax unified 339 .code 16 340 .thumb_func 341 .fpu softvfp 343 HAL_FLASHEx_EraseParallelPage: 344 .LFB41: 182:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** HAL_StatusTypeDef status = HAL_OK; 345 .loc 1 182 0 346 .cfi_startproc 347 @ args = 0, pretend = 0, frame = 0 348 @ frame_needed = 0, uses_anonymous_args = 0 349 .LVL18: 350 0164 F8B5 push {r3, r4, r5, r6, r7, lr} 351 .LCFI0: 352 .cfi_def_cfa_offset 24 353 .cfi_offset 3, -24 354 .cfi_offset 4, -20 355 .cfi_offset 5, -16 356 .cfi_offset 6, -12 357 .cfi_offset 7, -8 358 .cfi_offset 14, -4 ARM GAS /tmp/ccviJFHV.s page 17 359 0166 0600 movs r6, r0 360 0168 0D00 movs r5, r1 361 .LVL19: 186:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 362 .loc 1 186 0 363 016a 1348 ldr r0, .L29 364 .LVL20: 365 016c FFF748FF bl FLASHRAM_WaitForLastOperation 366 .LVL21: 188:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 367 .loc 1 188 0 368 0170 0028 cmp r0, #0 369 0172 00D0 beq .L28 370 .LVL22: 371 .L27: 210:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 372 .loc 1 210 0 373 @ sp needed 374 .LVL23: 375 .LVL24: 376 0174 F8BD pop {r3, r4, r5, r6, r7, pc} 377 .LVL25: 378 .L28: 191:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_ERASE); 379 .loc 1 191 0 380 0176 114C ldr r4, .L29+4 381 0178 6268 ldr r2, [r4, #4] 382 017a 8023 movs r3, #128 383 017c 1B02 lsls r3, r3, #8 384 017e 1343 orrs r3, r2 385 0180 6360 str r3, [r4, #4] 192:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 386 .loc 1 192 0 387 0182 6268 ldr r2, [r4, #4] 388 0184 8023 movs r3, #128 389 0186 9B00 lsls r3, r3, #2 390 0188 1343 orrs r3, r2 391 018a 6360 str r3, [r4, #4] 193:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 392 .loc 1 193 0 393 018c 6368 ldr r3, [r4, #4] 394 018e 0827 movs r7, #8 395 0190 3B43 orrs r3, r7 396 0192 6360 str r3, [r4, #4] 196:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** /* Write 00000000h to the first word of the second program page to erase */ 397 .loc 1 196 0 398 0194 0023 movs r3, #0 399 0196 3360 str r3, [r6] 198:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 400 .loc 1 198 0 401 0198 2B60 str r3, [r5] 201:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 402 .loc 1 201 0 403 019a 0748 ldr r0, .L29 404 .LVL26: 405 019c FFF730FF bl FLASHRAM_WaitForLastOperation 406 .LVL27: ARM GAS /tmp/ccviJFHV.s page 18 204:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_ERASE); 407 .loc 1 204 0 408 01a0 6368 ldr r3, [r4, #4] 409 01a2 BB43 bics r3, r7 410 01a4 6360 str r3, [r4, #4] 205:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); 411 .loc 1 205 0 412 01a6 6368 ldr r3, [r4, #4] 413 01a8 054A ldr r2, .L29+8 414 01aa 1340 ands r3, r2 415 01ac 6360 str r3, [r4, #4] 206:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 416 .loc 1 206 0 417 01ae 6368 ldr r3, [r4, #4] 418 01b0 044A ldr r2, .L29+12 419 01b2 1340 ands r3, r2 420 01b4 6360 str r3, [r4, #4] 421 01b6 DDE7 b .L27 422 .L30: 423 .align 2 424 .L29: 425 01b8 50C30000 .word 50000 426 01bc 00200240 .word 1073881088 427 01c0 FFFDFFFF .word -513 428 01c4 FF7FFFFF .word -32769 429 .cfi_endproc 430 .LFE41: 432 .align 1 433 .global HAL_FLASHEx_ProgramParallelHalfPage 434 .syntax unified 435 .code 16 436 .thumb_func 437 .fpu softvfp 439 HAL_FLASHEx_ProgramParallelHalfPage: 440 .LFB42: 241:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** uint32_t count = 0U; 441 .loc 1 241 0 442 .cfi_startproc 443 @ args = 0, pretend = 0, frame = 0 444 @ frame_needed = 0, uses_anonymous_args = 0 445 .LVL28: 446 01c8 F8B5 push {r3, r4, r5, r6, r7, lr} 447 .LCFI1: 448 .cfi_def_cfa_offset 24 449 .cfi_offset 3, -24 450 .cfi_offset 4, -20 451 .cfi_offset 5, -16 452 .cfi_offset 6, -12 453 .cfi_offset 7, -8 454 .cfi_offset 14, -4 455 01ca 0700 movs r7, r0 456 01cc 0D00 movs r5, r1 457 01ce 1600 movs r6, r2 458 01d0 1C00 movs r4, r3 459 .LVL29: 246:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 460 .loc 1 246 0 ARM GAS /tmp/ccviJFHV.s page 19 461 01d2 1D48 ldr r0, .L39 462 .LVL30: 463 01d4 FFF714FF bl FLASHRAM_WaitForLastOperation 464 .LVL31: 248:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 465 .loc 1 248 0 466 01d8 0028 cmp r0, #0 467 01da 00D0 beq .L38 468 .LVL32: 469 .L32: 296:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** #endif /* FLASH_PECR_PARALLBANK */ 470 .loc 1 296 0 471 @ sp needed 472 .LVL33: 473 .LVL34: 474 .LVL35: 475 .LVL36: 476 01dc F8BD pop {r3, r4, r5, r6, r7, pc} 477 .LVL37: 478 .L38: 251:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_FPRG); 479 .loc 1 251 0 480 01de 1B4B ldr r3, .L39+4 481 01e0 5968 ldr r1, [r3, #4] 482 01e2 8022 movs r2, #128 483 01e4 1202 lsls r2, r2, #8 484 01e6 0A43 orrs r2, r1 485 01e8 5A60 str r2, [r3, #4] 252:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 486 .loc 1 252 0 487 01ea 5968 ldr r1, [r3, #4] 488 01ec 8022 movs r2, #128 489 01ee D200 lsls r2, r2, #3 490 01f0 0A43 orrs r2, r1 491 01f2 5A60 str r2, [r3, #4] 253:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 492 .loc 1 253 0 493 01f4 5A68 ldr r2, [r3, #4] 494 01f6 0821 movs r1, #8 495 01f8 0A43 orrs r2, r1 496 01fa 5A60 str r2, [r3, #4] 256:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** if(status == HAL_OK) 497 .loc 1 256 0 498 01fc 1248 ldr r0, .L39 499 .LVL38: 500 01fe FFF7FFFE bl FLASHRAM_WaitForLastOperation 501 .LVL39: 257:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 502 .loc 1 257 0 503 0202 0028 cmp r0, #0 504 0204 12D1 bne .L33 505 .LBB14: 506 .LBB15: 507 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS Cortex-M Core Function/Instruction Header File ARM GAS /tmp/ccviJFHV.s page 20 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V4.30 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 20. October 2015 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Copyright (c) 2009 - 2015 ARM LIMITED 8:Drivers/CMSIS/Include/cmsis_gcc.h **** 9:Drivers/CMSIS/Include/cmsis_gcc.h **** All rights reserved. 10:Drivers/CMSIS/Include/cmsis_gcc.h **** Redistribution and use in source and binary forms, with or without 11:Drivers/CMSIS/Include/cmsis_gcc.h **** modification, are permitted provided that the following conditions are met: 12:Drivers/CMSIS/Include/cmsis_gcc.h **** - Redistributions of source code must retain the above copyright 13:Drivers/CMSIS/Include/cmsis_gcc.h **** notice, this list of conditions and the following disclaimer. 14:Drivers/CMSIS/Include/cmsis_gcc.h **** - Redistributions in binary form must reproduce the above copyright 15:Drivers/CMSIS/Include/cmsis_gcc.h **** notice, this list of conditions and the following disclaimer in the 16:Drivers/CMSIS/Include/cmsis_gcc.h **** documentation and/or other materials provided with the distribution. 17:Drivers/CMSIS/Include/cmsis_gcc.h **** - Neither the name of ARM nor the names of its contributors may be used 18:Drivers/CMSIS/Include/cmsis_gcc.h **** to endorse or promote products derived from this software without 19:Drivers/CMSIS/Include/cmsis_gcc.h **** specific prior written permission. 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * 21:Drivers/CMSIS/Include/cmsis_gcc.h **** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22:Drivers/CMSIS/Include/cmsis_gcc.h **** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23:Drivers/CMSIS/Include/cmsis_gcc.h **** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24:Drivers/CMSIS/Include/cmsis_gcc.h **** ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE 25:Drivers/CMSIS/Include/cmsis_gcc.h **** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26:Drivers/CMSIS/Include/cmsis_gcc.h **** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27:Drivers/CMSIS/Include/cmsis_gcc.h **** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28:Drivers/CMSIS/Include/cmsis_gcc.h **** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29:Drivers/CMSIS/Include/cmsis_gcc.h **** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30:Drivers/CMSIS/Include/cmsis_gcc.h **** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31:Drivers/CMSIS/Include/cmsis_gcc.h **** POSSIBILITY OF SUCH DAMAGE. 32:Drivers/CMSIS/Include/cmsis_gcc.h **** ---------------------------------------------------------------------------*/ 33:Drivers/CMSIS/Include/cmsis_gcc.h **** 34:Drivers/CMSIS/Include/cmsis_gcc.h **** 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H 37:Drivers/CMSIS/Include/cmsis_gcc.h **** 38:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ 39:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined ( __GNUC__ ) 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 45:Drivers/CMSIS/Include/cmsis_gcc.h **** 46:Drivers/CMSIS/Include/cmsis_gcc.h **** 47:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ 48:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface 49:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions 50:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ 51:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 52:Drivers/CMSIS/Include/cmsis_gcc.h **** 53:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 54:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts 55:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. 56:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 57:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 58:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void) 59:Drivers/CMSIS/Include/cmsis_gcc.h **** { 60:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); ARM GAS /tmp/ccviJFHV.s page 21 61:Drivers/CMSIS/Include/cmsis_gcc.h **** } 62:Drivers/CMSIS/Include/cmsis_gcc.h **** 63:Drivers/CMSIS/Include/cmsis_gcc.h **** 64:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 65:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts 66:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. 67:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 68:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 69:Drivers/CMSIS/Include/cmsis_gcc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void) 70:Drivers/CMSIS/Include/cmsis_gcc.h **** { 71:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); 508 .loc 2 71 0 509 .syntax divided 510 @ 71 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 511 0206 72B6 cpsid i 512 @ 0 "" 2 513 .thumb 514 .syntax unified 515 .LBE15: 516 .LBE14: 242:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** HAL_StatusTypeDef status = HAL_OK; 517 .loc 1 242 0 518 0208 0023 movs r3, #0 519 020a 02E0 b .L34 520 .LVL40: 521 .L35: 266:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pBuffer1++; 522 .loc 1 266 0 523 020c 04CD ldmia r5!, {r2} 524 .LVL41: 525 020e 3A60 str r2, [r7] 526 .LVL42: 268:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 527 .loc 1 268 0 528 0210 0133 adds r3, r3, #1 529 .LVL43: 530 .L34: 263:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 531 .loc 1 263 0 532 0212 0F2B cmp r3, #15 533 0214 FAD9 bls .L35 272:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** while(count < 16U) 534 .loc 1 272 0 535 0216 0023 movs r3, #0 536 .LVL44: 537 0218 02E0 b .L36 538 .LVL45: 539 .L37: 276:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pBuffer2++; 540 .loc 1 276 0 541 021a 04CC ldmia r4!, {r2} 542 .LVL46: 543 021c 3260 str r2, [r6] 544 .LVL47: 278:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 545 .loc 1 278 0 546 021e 0133 adds r3, r3, #1 ARM GAS /tmp/ccviJFHV.s page 22 547 .LVL48: 548 .L36: 273:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 549 .loc 1 273 0 550 0220 0F2B cmp r3, #15 551 0222 FAD9 bls .L37 552 .LBB16: 553 .LBB17: 60:Drivers/CMSIS/Include/cmsis_gcc.h **** } 554 .loc 2 60 0 555 .syntax divided 556 @ 60 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 557 0224 62B6 cpsie i 558 @ 0 "" 2 559 .thumb 560 .syntax unified 561 .LBE17: 562 .LBE16: 285:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 563 .loc 1 285 0 564 0226 0848 ldr r0, .L39 565 .LVL49: 566 0228 FFF7EAFE bl FLASHRAM_WaitForLastOperation 567 .LVL50: 568 .L33: 289:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); 569 .loc 1 289 0 570 022c 074B ldr r3, .L39+4 571 022e 5A68 ldr r2, [r3, #4] 572 0230 0821 movs r1, #8 573 0232 8A43 bics r2, r1 574 0234 5A60 str r2, [r3, #4] 290:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_PARALLBANK); 575 .loc 1 290 0 576 0236 5A68 ldr r2, [r3, #4] 577 0238 0549 ldr r1, .L39+8 578 023a 0A40 ands r2, r1 579 023c 5A60 str r2, [r3, #4] 291:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 580 .loc 1 291 0 581 023e 5A68 ldr r2, [r3, #4] 582 0240 0449 ldr r1, .L39+12 583 0242 0A40 ands r2, r1 584 0244 5A60 str r2, [r3, #4] 585 0246 C9E7 b .L32 586 .L40: 587 .align 2 588 .L39: 589 0248 50C30000 .word 50000 590 024c 00200240 .word 1073881088 591 0250 FFFBFFFF .word -1025 592 0254 FF7FFFFF .word -32769 593 .cfi_endproc 594 .LFE42: 596 .align 1 597 .global HAL_FLASHEx_HalfPageProgram 598 .syntax unified ARM GAS /tmp/ccviJFHV.s page 23 599 .code 16 600 .thumb_func 601 .fpu softvfp 603 HAL_FLASHEx_HalfPageProgram: 604 .LFB43: 322:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** uint32_t count = 0U; 605 .loc 1 322 0 606 .cfi_startproc 607 @ args = 0, pretend = 0, frame = 0 608 @ frame_needed = 0, uses_anonymous_args = 0 609 .LVL51: 610 0258 70B5 push {r4, r5, r6, lr} 611 .LCFI2: 612 .cfi_def_cfa_offset 16 613 .cfi_offset 4, -16 614 .cfi_offset 5, -12 615 .cfi_offset 6, -8 616 .cfi_offset 14, -4 617 025a 0500 movs r5, r0 618 025c 0C00 movs r4, r1 619 .LVL52: 327:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 620 .loc 1 327 0 621 025e 1248 ldr r0, .L45 622 .LVL53: 623 0260 FFF7CEFE bl FLASHRAM_WaitForLastOperation 624 .LVL54: 329:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 625 .loc 1 329 0 626 0264 0028 cmp r0, #0 627 0266 1ED1 bne .L42 332:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** SET_BIT(FLASH->PECR, FLASH_PECR_PROG); 628 .loc 1 332 0 629 0268 104B ldr r3, .L45+4 630 026a 5968 ldr r1, [r3, #4] 631 026c 8022 movs r2, #128 632 026e D200 lsls r2, r2, #3 633 0270 0A43 orrs r2, r1 634 0272 5A60 str r2, [r3, #4] 333:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 635 .loc 1 333 0 636 0274 5A68 ldr r2, [r3, #4] 637 0276 0821 movs r1, #8 638 0278 0A43 orrs r2, r1 639 027a 5A60 str r2, [r3, #4] 640 .LBB18: 641 .LBB19: 642 .loc 2 71 0 643 .syntax divided 644 @ 71 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 645 027c 72B6 cpsid i 646 @ 0 "" 2 647 .thumb 648 .syntax unified 649 .LBE19: 650 .LBE18: 323:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** HAL_StatusTypeDef status = HAL_OK; ARM GAS /tmp/ccviJFHV.s page 24 651 .loc 1 323 0 652 027e 0023 movs r3, #0 653 0280 02E0 b .L43 654 .LVL55: 655 .L44: 342:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** pBuffer++; 656 .loc 1 342 0 657 0282 04CC ldmia r4!, {r2} 658 .LVL56: 659 0284 2A60 str r2, [r5] 660 .LVL57: 344:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 661 .loc 1 344 0 662 0286 0133 adds r3, r3, #1 663 .LVL58: 664 .L43: 339:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** { 665 .loc 1 339 0 666 0288 0F2B cmp r3, #15 667 028a FAD9 bls .L44 668 .LBB20: 669 .LBB21: 60:Drivers/CMSIS/Include/cmsis_gcc.h **** } 670 .loc 2 60 0 671 .syntax divided 672 @ 60 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 673 028c 62B6 cpsie i 674 @ 0 "" 2 675 .thumb 676 .syntax unified 677 .LBE21: 678 .LBE20: 351:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 679 .loc 1 351 0 680 028e 0648 ldr r0, .L45 681 .LVL59: 682 0290 FFF7B6FE bl FLASHRAM_WaitForLastOperation 683 .LVL60: 354:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** CLEAR_BIT(FLASH->PECR, FLASH_PECR_FPRG); 684 .loc 1 354 0 685 0294 054B ldr r3, .L45+4 686 0296 5A68 ldr r2, [r3, #4] 687 0298 0821 movs r1, #8 688 029a 8A43 bics r2, r1 689 029c 5A60 str r2, [r3, #4] 355:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** } 690 .loc 1 355 0 691 029e 5A68 ldr r2, [r3, #4] 692 02a0 0349 ldr r1, .L45+8 693 02a2 0A40 ands r2, r1 694 02a4 5A60 str r2, [r3, #4] 695 .LVL61: 696 .L42: 360:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 697 .loc 1 360 0 698 @ sp needed 699 .LVL62: ARM GAS /tmp/ccviJFHV.s page 25 700 .LVL63: 701 02a6 70BD pop {r4, r5, r6, pc} 702 .L46: 703 .align 2 704 .L45: 705 02a8 50C30000 .word 50000 706 02ac 00200240 .word 1073881088 707 02b0 FFFBFFFF .word -1025 708 .cfi_endproc 709 .LFE43: 711 .align 1 712 .global HAL_FLASHEx_GetError 713 .syntax unified 714 .code 16 715 .thumb_func 716 .fpu softvfp 718 HAL_FLASHEx_GetError: 719 .LFB44: 393:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** *Error = pFlash.ErrorCode; 720 .loc 1 393 0 721 .cfi_startproc 722 @ args = 0, pretend = 0, frame = 0 723 @ frame_needed = 0, uses_anonymous_args = 0 724 @ link register save eliminated. 725 .LVL64: 394:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** return HAL_OK; 726 .loc 1 394 0 727 02b4 024B ldr r3, .L48 728 02b6 5B69 ldr r3, [r3, #20] 729 02b8 0360 str r3, [r0] 396:./Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c **** 730 .loc 1 396 0 731 02ba 0020 movs r0, #0 732 .LVL65: 733 @ sp needed 734 02bc 7047 bx lr 735 .L49: 736 02be C046 .align 2 737 .L48: 738 02c0 00000000 .word pFlash 739 .cfi_endproc 740 .LFE44: 742 .text 743 .Letext0: 744 .file 3 "/usr/arm-none-eabi/include/machine/_default_types.h" 745 .file 4 "/usr/arm-none-eabi/include/sys/_stdint.h" 746 .file 5 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h" 747 .file 6 "Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h" 748 .file 7 "/usr/arm-none-eabi/include/sys/lock.h" 749 .file 8 "/usr/arm-none-eabi/include/sys/_types.h" 750 .file 9 "/usr/lib/gcc/arm-none-eabi/7.2.0/include/stddef.h" 751 .file 10 "/usr/arm-none-eabi/include/sys/reent.h" 752 .file 11 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h" 753 .file 12 "Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h" ARM GAS /tmp/ccviJFHV.s page 26 DEFINED SYMBOLS *ABS*:0000000000000000 stm32l0xx_hal_flash_ramfunc.c /tmp/ccviJFHV.s:16 .RamFunc:0000000000000000 $t /tmp/ccviJFHV.s:22 .RamFunc:0000000000000000 FLASHRAM_WaitForLastOperation /tmp/ccviJFHV.s:257 .RamFunc:0000000000000114 $d /tmp/ccviJFHV.s:262 .RamFunc:000000000000011c $t /tmp/ccviJFHV.s:269 .RamFunc:000000000000011c HAL_FLASHEx_EnableRunPowerDown /tmp/ccviJFHV.s:293 .RamFunc:0000000000000134 $d /tmp/ccviJFHV.s:299 .RamFunc:0000000000000140 $t /tmp/ccviJFHV.s:306 .RamFunc:0000000000000140 HAL_FLASHEx_DisableRunPowerDown /tmp/ccviJFHV.s:330 .RamFunc:0000000000000158 $d /tmp/ccviJFHV.s:336 .RamFunc:0000000000000164 $t /tmp/ccviJFHV.s:343 .RamFunc:0000000000000164 HAL_FLASHEx_EraseParallelPage /tmp/ccviJFHV.s:425 .RamFunc:00000000000001b8 $d /tmp/ccviJFHV.s:432 .RamFunc:00000000000001c8 $t /tmp/ccviJFHV.s:439 .RamFunc:00000000000001c8 HAL_FLASHEx_ProgramParallelHalfPage /tmp/ccviJFHV.s:589 .RamFunc:0000000000000248 $d /tmp/ccviJFHV.s:596 .RamFunc:0000000000000258 $t /tmp/ccviJFHV.s:603 .RamFunc:0000000000000258 HAL_FLASHEx_HalfPageProgram /tmp/ccviJFHV.s:705 .RamFunc:00000000000002a8 $d /tmp/ccviJFHV.s:711 .RamFunc:00000000000002b4 $t /tmp/ccviJFHV.s:718 .RamFunc:00000000000002b4 HAL_FLASHEx_GetError /tmp/ccviJFHV.s:738 .RamFunc:00000000000002c0 $d .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS pFlash