ARM GAS /tmp/ccv5crZT.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 6 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "stm32f3xx_hal_flash.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c" 20 .global pFlash 21 .section .bss.pFlash,"aw",%nobits 22 .align 3 25 pFlash: 26 0000 00000000 .space 32 26 00000000 26 00000000 26 00000000 26 00000000 27 .section .text.HAL_FLASH_Program,"ax",%progbits 28 .align 1 29 .global HAL_FLASH_Program 30 .syntax unified 31 .thumb 32 .thumb_func 34 HAL_FLASH_Program: 35 .LFB130: 1:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 2:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ****************************************************************************** 3:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @file stm32f3xx_hal_flash.c 4:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @author MCD Application Team 5:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief FLASH HAL module driver. 6:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * functionalities of the internal FLASH memory: 8:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * + Program operations functions 9:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * + Memory Control functions 10:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * + Peripheral State functions 11:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 12:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @verbatim 13:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ============================================================================== 14:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ##### FLASH peripheral features ##### 15:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ============================================================================== 16:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses 17:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations 18:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** and the read and write protection mechanisms. 19:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 20:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction 21:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** prefetch. ARM GAS /tmp/ccv5crZT.s page 2 22:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 23:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] The FLASH main features are: 24:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Flash memory read operations 25:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Flash memory program/erase operations 26:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Read / write protections 27:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Prefetch on I-Code 28:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Option Bytes programming 29:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 30:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 31:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ##### How to use this driver ##### 32:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ============================================================================== 33:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] 34:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH 35:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** memory of all STM32F3xx devices. 36:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 37:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (#) FLASH Memory I/O Programming functions: this group includes all needed 38:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** functions to erase and program the main memory: 39:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface 40:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Erase function: Erase page, erase all pages 41:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Program functions: half word, word and doubleword 42:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (#) FLASH Option Bytes Programming functions: this group includes all needed 43:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** functions to manage the Option Bytes: 44:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Lock and Unlock the Option Bytes 45:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Set/Reset the write protection 46:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Set the Read protection Level 47:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Program the user Option Bytes 48:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Launch the Option Bytes loader 49:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Erase Option Bytes 50:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Program the data Option Bytes 51:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Get the Write protection. 52:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Get the user option bytes. 53:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 54:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (#) Interrupts and flags management functions : this group 55:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** includes all needed functions to: 56:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Handle FLASH interrupts 57:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status 58:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (++) Get error flag status 59:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 60:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] In addition to these function, this driver includes a set of macros allowing 61:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** to handle the following operations: 62:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 63:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Set/Get the latency 64:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer 65:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Enable/Disable the half cycle access 66:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts 67:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** (+) Monitor the FLASH flags status 68:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 69:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @endverbatim 70:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ****************************************************************************** 71:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @attention 72:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 73:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * Copyright (c) 2016 STMicroelectronics. 74:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * All rights reserved. 75:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 76:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in 77:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * the root directory of this software component. 78:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS. ARM GAS /tmp/ccv5crZT.s page 3 79:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ****************************************************************************** 80:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 81:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 82:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/ 83:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** #include "stm32f3xx_hal.h" 84:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 85:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @addtogroup STM32F3xx_HAL_Driver 86:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 87:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 88:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 89:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED 90:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 91:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH FLASH 92:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief FLASH HAL module driver 93:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 94:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 95:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 96:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ 97:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ 98:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Private_Constants FLASH Private Constants 99:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Private macro ---------------------------- ---------------------------------*/ 106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Private_Macros FLASH Private Macros 107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ 115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Private_Variables FLASH Private Variables 116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Variables used for Erase pages under interruption*/ 119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash; 120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/ 125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Private_Functions FLASH Private Functions 126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); 129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** static void FLASH_SetErrorCode(void); 130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** extern void FLASH_PageErase(uint32_t PageAddress); 131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Exported functions ---------------------------------------------------------*/ ARM GAS /tmp/ccv5crZT.s page 4 136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions 137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Programming operation functions 142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @verbatim 144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @endverbatim 145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Program halfword, word or double word at a specified address 150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @note The function HAL_FLASH_Unlock() should be called before to unlock the FLASH interface 151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * The function HAL_FLASH_Lock() should be called after to lock the FLASH interface 152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * the erase operation is performed before the program one. 155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @note FLASH should be previously erased before new programming (only exception to this 157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * is when 0x0000 is programmed) 158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Address Specifie the address to be programmed. 162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Data Specifie the data to be programmed 163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 36 .loc 1 167 1 37 .cfi_startproc 38 @ args = 0, pretend = 0, frame = 24 39 @ frame_needed = 1, uses_anonymous_args = 0 40 0000 F0B5 push {r4, r5, r6, r7, lr} 41 .cfi_def_cfa_offset 20 42 .cfi_offset 4, -20 43 .cfi_offset 5, -16 44 .cfi_offset 6, -12 45 .cfi_offset 7, -8 46 .cfi_offset 14, -4 47 0002 87B0 sub sp, sp, #28 48 .cfi_def_cfa_offset 48 49 0004 00AF add r7, sp, #0 50 .cfi_def_cfa_register 7 51 0006 F860 str r0, [r7, #12] 52 0008 B960 str r1, [r7, #8] 53 000a C7E90023 strd r2, [r7] 168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 54 .loc 1 168 21 55 000e 0123 movs r3, #1 56 0010 FB75 strb r3, [r7, #23] 169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint8_t index = 0U; 57 .loc 1 169 11 58 0012 0023 movs r3, #0 ARM GAS /tmp/ccv5crZT.s page 5 59 0014 BB75 strb r3, [r7, #22] 170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint8_t nbiterations = 0U; 60 .loc 1 170 11 61 0016 0023 movs r3, #0 62 0018 7B75 strb r3, [r7, #21] 171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Process Locked */ 173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_LOCK(&pFlash); 63 .loc 1 173 3 64 001a 2F4B ldr r3, .L12 65 001c 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 66 001e 012B cmp r3, #1 67 0020 01D1 bne .L2 68 .loc 1 173 3 is_stmt 0 discriminator 1 69 0022 0223 movs r3, #2 70 .loc 1 173 3 71 0024 54E0 b .L3 72 .L2: 73 .loc 1 173 3 discriminator 2 74 0026 2C4B ldr r3, .L12 75 0028 0122 movs r2, #1 76 002a 1A76 strb r2, [r3, #24] 174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check the parameters */ 176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); 178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Wait for last operation to be completed */ 180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 77 .loc 1 180 14 is_stmt 1 78 002c 4CF25030 movw r0, #50000 79 0030 FFF7FEFF bl FLASH_WaitForLastOperation 80 0034 0346 mov r3, r0 81 0036 FB75 strb r3, [r7, #23] 181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(status == HAL_OK) 82 .loc 1 182 5 83 0038 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 84 003a 002B cmp r3, #0 85 003c 44D1 bne .L4 183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 86 .loc 1 184 7 87 003e FB68 ldr r3, [r7, #12] 88 0040 012B cmp r3, #1 89 0042 02D1 bne .L5 185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program halfword (16-bit) at a specified address. */ 187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** nbiterations = 1U; 90 .loc 1 187 20 91 0044 0123 movs r3, #1 92 0046 7B75 strb r3, [r7, #21] 93 0048 07E0 b .L6 94 .L5: 188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 95 .loc 1 189 12 ARM GAS /tmp/ccv5crZT.s page 6 96 004a FB68 ldr r3, [r7, #12] 97 004c 022B cmp r3, #2 98 004e 02D1 bne .L7 190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program word (32-bit = 2*16-bit) at a specified address. */ 192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** nbiterations = 2U; 99 .loc 1 192 20 100 0050 0223 movs r3, #2 101 0052 7B75 strb r3, [r7, #21] 102 0054 01E0 b .L6 103 .L7: 193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program double word (64-bit = 4*16-bit) at a specified address. */ 197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** nbiterations = 4U; 104 .loc 1 197 20 105 0056 0423 movs r3, #4 106 0058 7B75 strb r3, [r7, #21] 107 .L6: 198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** for (index = 0U; index < nbiterations; index++) 108 .loc 1 200 16 109 005a 0023 movs r3, #0 110 005c BB75 strb r3, [r7, #22] 111 .loc 1 200 5 112 005e 2DE0 b .L8 113 .L10: 201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_Program_HalfWord((Address + (2U*index)), (uint16_t)(Data >> (16U*index))); 114 .loc 1 202 44 115 0060 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 116 0062 5A00 lsls r2, r3, #1 117 .loc 1 202 7 118 0064 BB68 ldr r3, [r7, #8] 119 0066 02EB030C add ip, r2, r3 120 .loc 1 202 77 121 006a BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 122 006c 1901 lsls r1, r3, #4 123 .loc 1 202 70 124 006e D7E90023 ldrd r2, [r7] 125 0072 C1F12006 rsb r6, r1, #32 126 0076 A1F12000 sub r0, r1, #32 127 007a 22FA01F4 lsr r4, r2, r1 128 007e 03FA06F6 lsl r6, r3, r6 129 0082 3443 orrs r4, r4, r6 130 0084 23FA00F0 lsr r0, r3, r0 131 0088 0443 orrs r4, r4, r0 132 008a 23FA01F5 lsr r5, r3, r1 133 .loc 1 202 7 134 008e A3B2 uxth r3, r4 135 0090 1946 mov r1, r3 136 0092 6046 mov r0, ip 137 0094 FFF7FEFF bl FLASH_Program_HalfWord 203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Wait for last operation to be completed */ ARM GAS /tmp/ccv5crZT.s page 7 205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 138 .loc 1 205 18 139 0098 4CF25030 movw r0, #50000 140 009c FFF7FEFF bl FLASH_WaitForLastOperation 141 00a0 0346 mov r3, r0 142 00a2 FB75 strb r3, [r7, #23] 206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ 208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PG); 143 .loc 1 208 9 144 00a4 0D4B ldr r3, .L12+4 145 00a6 1B69 ldr r3, [r3, #16] 146 00a8 0C4A ldr r2, .L12+4 147 00aa 23F00103 bic r3, r3, #1 148 00ae 1361 str r3, [r2, #16] 209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* In case of error, stop programming procedure */ 210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if (status != HAL_OK) 149 .loc 1 210 10 150 00b0 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 151 00b2 002B cmp r3, #0 152 00b4 07D1 bne .L11 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 153 .loc 1 200 49 discriminator 2 154 00b6 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 155 00b8 0133 adds r3, r3, #1 156 00ba BB75 strb r3, [r7, #22] 157 .L8: 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 158 .loc 1 200 28 discriminator 1 159 00bc BA7D ldrb r2, [r7, #22] @ zero_extendqisi2 160 00be 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2 161 00c0 9A42 cmp r2, r3 162 00c2 CDD3 bcc .L10 163 00c4 00E0 b .L4 164 .L11: 211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** break; 165 .loc 1 212 9 166 00c6 00BF nop 167 .L4: 213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Process Unlocked */ 218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 168 .loc 1 218 3 169 00c8 034B ldr r3, .L12 170 00ca 0022 movs r2, #0 171 00cc 1A76 strb r2, [r3, #24] 219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return status; 172 .loc 1 220 10 173 00ce FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 174 .L3: 221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 175 .loc 1 221 1 ARM GAS /tmp/ccv5crZT.s page 8 176 00d0 1846 mov r0, r3 177 00d2 1C37 adds r7, r7, #28 178 .cfi_def_cfa_offset 20 179 00d4 BD46 mov sp, r7 180 .cfi_def_cfa_register 13 181 @ sp needed 182 00d6 F0BD pop {r4, r5, r6, r7, pc} 183 .L13: 184 .align 2 185 .L12: 186 00d8 00000000 .word pFlash 187 00dc 00200240 .word 1073881088 188 .cfi_endproc 189 .LFE130: 191 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 192 .align 1 193 .global HAL_FLASH_Program_IT 194 .syntax unified 195 .thumb 196 .thumb_func 198 HAL_FLASH_Program_IT: 199 .LFB131: 222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Program halfword, word or double word at a specified address with interrupt enabled. 225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @note The function HAL_FLASH_Unlock() should be called before to unlock the FLASH interface 226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * The function HAL_FLASH_Lock() should be called after to lock the FLASH interface 227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * the erase operation is performed before the program one. 230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Address Specifie the address to be programmed. 234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Data Specifie the data to be programmed 235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 200 .loc 1 239 1 201 .cfi_startproc 202 @ args = 0, pretend = 0, frame = 24 203 @ frame_needed = 1, uses_anonymous_args = 0 204 0000 80B5 push {r7, lr} 205 .cfi_def_cfa_offset 8 206 .cfi_offset 7, -8 207 .cfi_offset 14, -4 208 0002 86B0 sub sp, sp, #24 209 .cfi_def_cfa_offset 32 210 0004 00AF add r7, sp, #0 211 .cfi_def_cfa_register 7 212 0006 F860 str r0, [r7, #12] 213 0008 B960 str r1, [r7, #8] 214 000a C7E90023 strd r2, [r7] 240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 215 .loc 1 240 21 ARM GAS /tmp/ccv5crZT.s page 9 216 000e 0023 movs r3, #0 217 0010 FB75 strb r3, [r7, #23] 241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Process Locked */ 243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_LOCK(&pFlash); 218 .loc 1 243 3 219 0012 1D4B ldr r3, .L20 220 0014 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 221 0016 012B cmp r3, #1 222 0018 01D1 bne .L15 223 .loc 1 243 3 is_stmt 0 discriminator 1 224 001a 0223 movs r3, #2 225 .loc 1 243 3 226 001c 30E0 b .L16 227 .L15: 228 .loc 1 243 3 discriminator 2 229 001e 1A4B ldr r3, .L20 230 0020 0122 movs r2, #1 231 0022 1A76 strb r2, [r3, #24] 244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check the parameters */ 246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); 248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Enable End of FLASH Operation and Error source interrupts */ 250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); 232 .loc 1 250 3 is_stmt 1 233 0024 194B ldr r3, .L20+4 234 0026 1B69 ldr r3, [r3, #16] 235 0028 184A ldr r2, .L20+4 236 002a 43F4A053 orr r3, r3, #5120 237 002e 1361 str r3, [r2, #16] 251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address = Address; 238 .loc 1 252 18 239 0030 154A ldr r2, .L20 240 0032 BB68 ldr r3, [r7, #8] 241 0034 9360 str r3, [r2, #8] 253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Data = Data; 242 .loc 1 253 15 243 0036 1449 ldr r1, .L20 244 0038 D7E90023 ldrd r2, [r7] 245 003c C1E90423 strd r2, [r1, #16] 254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 246 .loc 1 255 5 247 0040 FB68 ldr r3, [r7, #12] 248 0042 012B cmp r3, #1 249 0044 06D1 bne .L17 256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAMHALFWORD; 250 .loc 1 257 29 251 0046 104B ldr r3, .L20 252 0048 0322 movs r2, #3 253 004a 1A70 strb r2, [r3] 258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program halfword (16-bit) at a specified address. */ 259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.DataRemaining = 1U; ARM GAS /tmp/ccv5crZT.s page 10 254 .loc 1 259 26 255 004c 0E4B ldr r3, .L20 256 004e 0122 movs r2, #1 257 0050 5A60 str r2, [r3, #4] 258 0052 0FE0 b .L18 259 .L17: 260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 260 .loc 1 261 10 261 0054 FB68 ldr r3, [r7, #12] 262 0056 022B cmp r3, #2 263 0058 06D1 bne .L19 262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAMWORD; 264 .loc 1 263 29 265 005a 0B4B ldr r3, .L20 266 005c 0422 movs r2, #4 267 005e 1A70 strb r2, [r3] 264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program word (32-bit : 2*16-bit) at a specified address. */ 265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.DataRemaining = 2U; 268 .loc 1 265 26 269 0060 094B ldr r3, .L20 270 0062 0222 movs r2, #2 271 0064 5A60 str r2, [r3, #4] 272 0066 05E0 b .L18 273 .L19: 266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAMDOUBLEWORD; 274 .loc 1 269 29 275 0068 074B ldr r3, .L20 276 006a 0522 movs r2, #5 277 006c 1A70 strb r2, [r3] 270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program double word (64-bit : 4*16-bit) at a specified address. */ 271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.DataRemaining = 4U; 278 .loc 1 271 26 279 006e 064B ldr r3, .L20 280 0070 0422 movs r2, #4 281 0072 5A60 str r2, [r3, #4] 282 .L18: 272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program halfword (16-bit) at a specified address. */ 275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t)Data); 283 .loc 1 275 3 284 0074 3B88 ldrh r3, [r7] 285 0076 1946 mov r1, r3 286 0078 B868 ldr r0, [r7, #8] 287 007a FFF7FEFF bl FLASH_Program_HalfWord 276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return status; 288 .loc 1 277 10 289 007e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 290 .L16: 278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 291 .loc 1 278 1 ARM GAS /tmp/ccv5crZT.s page 11 292 0080 1846 mov r0, r3 293 0082 1837 adds r7, r7, #24 294 .cfi_def_cfa_offset 8 295 0084 BD46 mov sp, r7 296 .cfi_def_cfa_register 13 297 @ sp needed 298 0086 80BD pop {r7, pc} 299 .L21: 300 .align 2 301 .L20: 302 0088 00000000 .word pFlash 303 008c 00200240 .word 1073881088 304 .cfi_endproc 305 .LFE131: 307 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 308 .align 1 309 .global HAL_FLASH_IRQHandler 310 .syntax unified 311 .thumb 312 .thumb_func 314 HAL_FLASH_IRQHandler: 315 .LFB132: 279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. 282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval None 283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) 285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 316 .loc 1 285 1 317 .cfi_startproc 318 @ args = 0, pretend = 0, frame = 8 319 @ frame_needed = 1, uses_anonymous_args = 0 320 0000 80B5 push {r7, lr} 321 .cfi_def_cfa_offset 8 322 .cfi_offset 7, -8 323 .cfi_offset 14, -4 324 0002 82B0 sub sp, sp, #8 325 .cfi_def_cfa_offset 16 326 0004 00AF add r7, sp, #0 327 .cfi_def_cfa_register 7 286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint32_t addresstmp = 0U; 328 .loc 1 286 12 329 0006 0023 movs r3, #0 330 0008 7B60 str r3, [r7, #4] 287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check FLASH operation error flags */ 289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) ||__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR)) 331 .loc 1 289 6 332 000a 6D4B ldr r3, .L35 333 000c DB68 ldr r3, [r3, #12] 334 000e 03F01003 and r3, r3, #16 335 .loc 1 289 5 336 0012 102B cmp r3, #16 337 0014 05D0 beq .L23 338 .loc 1 289 48 discriminator 1 339 0016 6A4B ldr r3, .L35 ARM GAS /tmp/ccv5crZT.s page 12 340 0018 DB68 ldr r3, [r3, #12] 341 001a 03F00403 and r3, r3, #4 342 .loc 1 289 46 discriminator 1 343 001e 042B cmp r3, #4 344 0020 0ED1 bne .L24 345 .L23: 290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Return the faulty address */ 292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** addresstmp = pFlash.Address; 346 .loc 1 292 16 347 0022 684B ldr r3, .L35+4 348 0024 9B68 ldr r3, [r3, #8] 349 0026 7B60 str r3, [r7, #4] 293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Reset address */ 294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address = 0xFFFFFFFFU; 350 .loc 1 294 20 351 0028 664B ldr r3, .L35+4 352 002a 4FF0FF32 mov r2, #-1 353 002e 9A60 str r2, [r3, #8] 295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Save the Error code */ 297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_SetErrorCode(); 354 .loc 1 297 5 355 0030 FFF7FEFF bl FLASH_SetErrorCode 298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* FLASH error interrupt user callback */ 300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(addresstmp); 356 .loc 1 300 5 357 0034 7868 ldr r0, [r7, #4] 358 0036 FFF7FEFF bl HAL_FLASH_OperationErrorCallback 301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Stop the procedure ongoing */ 303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 359 .loc 1 303 29 360 003a 624B ldr r3, .L35+4 361 003c 0022 movs r2, #0 362 003e 1A70 strb r2, [r3] 363 .L24: 304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) 364 .loc 1 307 6 365 0040 5F4B ldr r3, .L35 366 0042 DB68 ldr r3, [r3, #12] 367 0044 03F02003 and r3, r3, #32 368 .loc 1 307 5 369 0048 202B cmp r3, #32 370 004a 40F0A080 bne .L25 308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 371 .loc 1 310 5 372 004e 5C4B ldr r3, .L35 373 0050 2022 movs r2, #32 374 0052 DA60 str r2, [r3, #12] 311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ARM GAS /tmp/ccv5crZT.s page 13 312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Process can continue only if no error detected */ 313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(pFlash.ProcedureOnGoing != FLASH_PROC_NONE) 375 .loc 1 313 14 376 0054 5B4B ldr r3, .L35+4 377 0056 1B78 ldrb r3, [r3] 378 0058 DBB2 uxtb r3, r3 379 .loc 1 313 7 380 005a 002B cmp r3, #0 381 005c 00F09780 beq .L25 314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_PAGEERASE) 382 .loc 1 315 16 383 0060 584B ldr r3, .L35+4 384 0062 1B78 ldrb r3, [r3] 385 0064 DBB2 uxtb r3, r3 386 .loc 1 315 9 387 0066 012B cmp r3, #1 388 0068 2DD1 bne .L26 316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Nb of pages to erased can be decreased */ 318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.DataRemaining--; 389 .loc 1 318 15 390 006a 564B ldr r3, .L35+4 391 006c 5B68 ldr r3, [r3, #4] 392 .loc 1 318 29 393 006e 013B subs r3, r3, #1 394 0070 544A ldr r2, .L35+4 395 0072 5360 str r3, [r2, #4] 319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check if there are still pages to erase */ 321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(pFlash.DataRemaining != 0U) 396 .loc 1 321 18 397 0074 534B ldr r3, .L35+4 398 0076 5B68 ldr r3, [r3, #4] 399 .loc 1 321 11 400 0078 002B cmp r3, #0 401 007a 17D0 beq .L27 322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** addresstmp = pFlash.Address; 402 .loc 1 323 22 403 007c 514B ldr r3, .L35+4 404 007e 9B68 ldr r3, [r3, #8] 405 0080 7B60 str r3, [r7, #4] 324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /*Indicate user which sector has been erased */ 325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 406 .loc 1 325 11 407 0082 7868 ldr r0, [r7, #4] 408 0084 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /*Increment sector number*/ 328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** addresstmp = pFlash.Address + FLASH_PAGE_SIZE; 409 .loc 1 328 30 410 0088 4E4B ldr r3, .L35+4 411 008a 9B68 ldr r3, [r3, #8] 412 .loc 1 328 22 413 008c 03F50063 add r3, r3, #2048 414 0090 7B60 str r3, [r7, #4] ARM GAS /tmp/ccv5crZT.s page 14 329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address = addresstmp; 415 .loc 1 329 26 416 0092 4C4A ldr r2, .L35+4 417 0094 7B68 ldr r3, [r7, #4] 418 0096 9360 str r3, [r2, #8] 330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* If the erase operation is completed, disable the PER Bit */ 332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PER); 419 .loc 1 332 11 420 0098 494B ldr r3, .L35 421 009a 1B69 ldr r3, [r3, #16] 422 009c 484A ldr r2, .L35 423 009e 23F00203 bic r3, r3, #2 424 00a2 1361 str r3, [r2, #16] 333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_PageErase(addresstmp); 425 .loc 1 334 11 426 00a4 7868 ldr r0, [r7, #4] 427 00a6 FFF7FEFF bl FLASH_PageErase 428 00aa 70E0 b .L25 429 .L27: 335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* No more pages to Erase, user callback can be called. */ 339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Reset Sector and stop Erase pages procedure */ 340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address = addresstmp = 0xFFFFFFFFU; 430 .loc 1 340 39 431 00ac 4FF0FF33 mov r3, #-1 432 00b0 7B60 str r3, [r7, #4] 433 .loc 1 340 26 434 00b2 444A ldr r2, .L35+4 435 00b4 7B68 ldr r3, [r7, #4] 436 00b6 9360 str r3, [r2, #8] 341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 437 .loc 1 341 35 438 00b8 424B ldr r3, .L35+4 439 00ba 0022 movs r2, #0 440 00bc 1A70 strb r2, [r3] 342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 441 .loc 1 343 11 442 00be 7868 ldr r0, [r7, #4] 443 00c0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 444 00c4 63E0 b .L25 445 .L26: 344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 446 .loc 1 346 21 447 00c6 3F4B ldr r3, .L35+4 448 00c8 1B78 ldrb r3, [r3] 449 00ca DBB2 uxtb r3, r3 450 .loc 1 346 14 451 00cc 022B cmp r3, #2 452 00ce 0CD1 bne .L28 347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { ARM GAS /tmp/ccv5crZT.s page 15 348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Operation is completed, disable the MER Bit */ 349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_MER); 453 .loc 1 349 9 454 00d0 3B4B ldr r3, .L35 455 00d2 1B69 ldr r3, [r3, #16] 456 00d4 3A4A ldr r2, .L35 457 00d6 23F00403 bic r3, r3, #4 458 00da 1361 str r3, [r2, #16] 350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* MassErase ended. Return the selected bank */ 352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(0U); 459 .loc 1 353 11 460 00dc 0020 movs r0, #0 461 00de FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Stop Mass Erase procedure*/ 356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 462 .loc 1 356 35 463 00e2 384B ldr r3, .L35+4 464 00e4 0022 movs r2, #0 465 00e6 1A70 strb r2, [r3] 466 00e8 51E0 b .L25 467 .L28: 357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Nb of 16-bit data to program can be decreased */ 361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.DataRemaining--; 468 .loc 1 361 15 469 00ea 364B ldr r3, .L35+4 470 00ec 5B68 ldr r3, [r3, #4] 471 .loc 1 361 29 472 00ee 013B subs r3, r3, #1 473 00f0 344A ldr r2, .L35+4 474 00f2 5360 str r3, [r2, #4] 362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check if there are still 16-bit data to program */ 364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(pFlash.DataRemaining != 0U) 475 .loc 1 364 18 476 00f4 334B ldr r3, .L35+4 477 00f6 5B68 ldr r3, [r3, #4] 478 .loc 1 364 11 479 00f8 002B cmp r3, #0 480 00fa 24D0 beq .L29 365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Increment address to 16-bit */ 367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address += 2U; 481 .loc 1 367 17 482 00fc 314B ldr r3, .L35+4 483 00fe 9B68 ldr r3, [r3, #8] 484 .loc 1 367 26 485 0100 0233 adds r3, r3, #2 486 0102 304A ldr r2, .L35+4 487 0104 9360 str r3, [r2, #8] 368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** addresstmp = pFlash.Address; 488 .loc 1 368 22 ARM GAS /tmp/ccv5crZT.s page 16 489 0106 2F4B ldr r3, .L35+4 490 0108 9B68 ldr r3, [r3, #8] 491 010a 7B60 str r3, [r7, #4] 369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Shift to have next 16-bit data */ 371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Data = (pFlash.Data >> 16U); 492 .loc 1 371 32 493 010c 2D4B ldr r3, .L35+4 494 010e D3E90401 ldrd r0, [r3, #16] 495 .loc 1 371 38 496 0112 4FF00002 mov r2, #0 497 0116 4FF00003 mov r3, #0 498 011a 020C lsrs r2, r0, #16 499 011c 42EA0142 orr r2, r2, r1, lsl #16 500 0120 0B0C lsrs r3, r1, #16 501 .loc 1 371 23 502 0122 2849 ldr r1, .L35+4 503 0124 C1E90423 strd r2, [r1, #16] 372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Operation is completed, disable the PG Bit */ 374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PG); 504 .loc 1 374 11 505 0128 254B ldr r3, .L35 506 012a 1B69 ldr r3, [r3, #16] 507 012c 244A ldr r2, .L35 508 012e 23F00103 bic r3, r3, #1 509 0132 1361 str r3, [r2, #16] 375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_Program_HalfWord(addresstmp, (uint16_t)pFlash.Data); 510 .loc 1 377 62 511 0134 234B ldr r3, .L35+4 512 0136 D3E90423 ldrd r2, [r3, #16] 513 .loc 1 377 11 514 013a 93B2 uxth r3, r2 515 013c 1946 mov r1, r3 516 013e 7868 ldr r0, [r7, #4] 517 0140 FFF7FEFF bl FLASH_Program_HalfWord 518 0144 23E0 b .L25 519 .L29: 378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Program ended. Return the selected address */ 382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAMHALFWORD) 520 .loc 1 383 21 521 0146 1F4B ldr r3, .L35+4 522 0148 1B78 ldrb r3, [r3] 523 014a DBB2 uxtb r3, r3 524 .loc 1 383 14 525 014c 032B cmp r3, #3 526 014e 05D1 bne .L30 384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); 527 .loc 1 385 52 528 0150 1C4B ldr r3, .L35+4 ARM GAS /tmp/ccv5crZT.s page 17 529 0152 9B68 ldr r3, [r3, #8] 530 .loc 1 385 13 531 0154 1846 mov r0, r3 532 0156 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 533 015a 11E0 b .L31 534 .L30: 386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else if (pFlash.ProcedureOnGoing == FLASH_PROC_PROGRAMWORD) 535 .loc 1 387 26 536 015c 194B ldr r3, .L35+4 537 015e 1B78 ldrb r3, [r3] 538 0160 DBB2 uxtb r3, r3 539 .loc 1 387 19 540 0162 042B cmp r3, #4 541 0164 06D1 bne .L32 388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address - 2U); 542 .loc 1 389 52 543 0166 174B ldr r3, .L35+4 544 0168 9B68 ldr r3, [r3, #8] 545 .loc 1 389 13 546 016a 023B subs r3, r3, #2 547 016c 1846 mov r0, r3 548 016e FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 549 0172 05E0 b .L31 550 .L32: 390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address - 6U); 551 .loc 1 393 52 552 0174 134B ldr r3, .L35+4 553 0176 9B68 ldr r3, [r3, #8] 554 .loc 1 393 13 555 0178 063B subs r3, r3, #6 556 017a 1846 mov r0, r3 557 017c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 558 .L31: 394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Reset Address and stop Program procedure */ 397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address = 0xFFFFFFFFU; 559 .loc 1 397 26 560 0180 104B ldr r3, .L35+4 561 0182 4FF0FF32 mov r2, #-1 562 0186 9A60 str r2, [r3, #8] 398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 563 .loc 1 398 35 564 0188 0E4B ldr r3, .L35+4 565 018a 0022 movs r2, #0 566 018c 1A70 strb r2, [r3] 567 .L25: 399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ARM GAS /tmp/ccv5crZT.s page 18 404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) 568 .loc 1 405 12 569 018e 0D4B ldr r3, .L35+4 570 0190 1B78 ldrb r3, [r3] 571 0192 DBB2 uxtb r3, r3 572 .loc 1 405 5 573 0194 002B cmp r3, #0 574 0196 0ED1 bne .L34 406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Operation is completed, disable the PG, PER and MER Bits */ 408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_PER | FLASH_CR_MER)); 575 .loc 1 408 5 576 0198 094B ldr r3, .L35 577 019a 1B69 ldr r3, [r3, #16] 578 019c 084A ldr r2, .L35 579 019e 23F00703 bic r3, r3, #7 580 01a2 1361 str r3, [r2, #16] 409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Disable End of FLASH Operation and Error source interrupts */ 411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); 581 .loc 1 411 5 582 01a4 064B ldr r3, .L35 583 01a6 1B69 ldr r3, [r3, #16] 584 01a8 054A ldr r2, .L35 585 01aa 23F4A053 bic r3, r3, #5120 586 01ae 1361 str r3, [r2, #16] 412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Process Unlocked */ 414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 587 .loc 1 414 5 588 01b0 044B ldr r3, .L35+4 589 01b2 0022 movs r2, #0 590 01b4 1A76 strb r2, [r3, #24] 591 .L34: 415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 592 .loc 1 416 1 593 01b6 00BF nop 594 01b8 0837 adds r7, r7, #8 595 .cfi_def_cfa_offset 8 596 01ba BD46 mov sp, r7 597 .cfi_def_cfa_register 13 598 @ sp needed 599 01bc 80BD pop {r7, pc} 600 .L36: 601 01be 00BF .align 2 602 .L35: 603 01c0 00200240 .word 1073881088 604 01c4 00000000 .word pFlash 605 .cfi_endproc 606 .LFE132: 608 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 609 .align 1 610 .weak HAL_FLASH_EndOfOperationCallback 611 .syntax unified 612 .thumb ARM GAS /tmp/ccv5crZT.s page 19 613 .thumb_func 615 HAL_FLASH_EndOfOperationCallback: 616 .LFB133: 417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback 420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * - Mass Erase: No return value expected 422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * - Pages Erase: Address of the page which has been erased 423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * (if 0xFFFFFFFF, it means that all the selected pages have been erased) 424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * - Program: Address which was selected for data program 425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval none 426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) 428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 617 .loc 1 428 1 618 .cfi_startproc 619 @ args = 0, pretend = 0, frame = 8 620 @ frame_needed = 1, uses_anonymous_args = 0 621 @ link register save eliminated. 622 0000 80B4 push {r7} 623 .cfi_def_cfa_offset 4 624 .cfi_offset 7, -4 625 0002 83B0 sub sp, sp, #12 626 .cfi_def_cfa_offset 16 627 0004 00AF add r7, sp, #0 628 .cfi_def_cfa_register 7 629 0006 7860 str r0, [r7, #4] 429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** UNUSED(ReturnValue); 431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file 434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 630 .loc 1 435 1 631 0008 00BF nop 632 000a 0C37 adds r7, r7, #12 633 .cfi_def_cfa_offset 4 634 000c BD46 mov sp, r7 635 .cfi_def_cfa_register 13 636 @ sp needed 637 000e 5DF8047B ldr r7, [sp], #4 638 .cfi_restore 7 639 .cfi_def_cfa_offset 0 640 0012 7047 bx lr 641 .cfi_endproc 642 .LFE133: 644 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 645 .align 1 646 .weak HAL_FLASH_OperationErrorCallback 647 .syntax unified 648 .thumb 649 .thumb_func 651 HAL_FLASH_OperationErrorCallback: 652 .LFB134: 436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ARM GAS /tmp/ccv5crZT.s page 20 437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief FLASH operation error interrupt callback 439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * - Mass Erase: No return value expected 441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * - Pages Erase: Address of the page which returned an error 442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * - Program: Address which was selected for data program 443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval none 444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) 446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 653 .loc 1 446 1 654 .cfi_startproc 655 @ args = 0, pretend = 0, frame = 8 656 @ frame_needed = 1, uses_anonymous_args = 0 657 @ link register save eliminated. 658 0000 80B4 push {r7} 659 .cfi_def_cfa_offset 4 660 .cfi_offset 7, -4 661 0002 83B0 sub sp, sp, #12 662 .cfi_def_cfa_offset 16 663 0004 00AF add r7, sp, #0 664 .cfi_def_cfa_register 7 665 0006 7860 str r0, [r7, #4] 447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** UNUSED(ReturnValue); 449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file 452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 666 .loc 1 453 1 667 0008 00BF nop 668 000a 0C37 adds r7, r7, #12 669 .cfi_def_cfa_offset 4 670 000c BD46 mov sp, r7 671 .cfi_def_cfa_register 13 672 @ sp needed 673 000e 5DF8047B ldr r7, [sp], #4 674 .cfi_restore 7 675 .cfi_def_cfa_offset 0 676 0012 7047 bx lr 677 .cfi_endproc 678 .LFE134: 680 .section .text.HAL_FLASH_Unlock,"ax",%progbits 681 .align 1 682 .global HAL_FLASH_Unlock 683 .syntax unified 684 .thumb 685 .thumb_func 687 HAL_FLASH_Unlock: 688 .LFB135: 454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions ARM GAS /tmp/ccv5crZT.s page 21 460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief management functions 461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @verbatim 463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** =============================================================================== 464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ##### Peripheral Control functions ##### 465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** =============================================================================== 466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] 467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH 468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** memory operations. 469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @endverbatim 471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Unlock the FLASH control register access 476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL Status 477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) 479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 689 .loc 1 479 1 690 .cfi_startproc 691 @ args = 0, pretend = 0, frame = 8 692 @ frame_needed = 1, uses_anonymous_args = 0 693 @ link register save eliminated. 694 0000 80B4 push {r7} 695 .cfi_def_cfa_offset 4 696 .cfi_offset 7, -4 697 0002 83B0 sub sp, sp, #12 698 .cfi_def_cfa_offset 16 699 0004 00AF add r7, sp, #0 700 .cfi_def_cfa_register 7 480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 701 .loc 1 480 21 702 0006 0023 movs r3, #0 703 0008 FB71 strb r3, [r7, #7] 481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 704 .loc 1 482 6 705 000a 0D4B ldr r3, .L42 706 000c 1B69 ldr r3, [r3, #16] 707 000e 03F08003 and r3, r3, #128 708 .loc 1 482 5 709 0012 002B cmp r3, #0 710 0014 0DD0 beq .L40 483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Authorize the FLASH Registers access */ 485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1); 711 .loc 1 485 5 712 0016 0A4B ldr r3, .L42 713 0018 0A4A ldr r2, .L42+4 714 001a 5A60 str r2, [r3, #4] 486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 715 .loc 1 486 5 716 001c 084B ldr r3, .L42 717 001e 0A4A ldr r2, .L42+8 718 0020 5A60 str r2, [r3, #4] ARM GAS /tmp/ccv5crZT.s page 22 487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Verify Flash is unlocked */ 489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 719 .loc 1 489 8 720 0022 074B ldr r3, .L42 721 0024 1B69 ldr r3, [r3, #16] 722 0026 03F08003 and r3, r3, #128 723 .loc 1 489 7 724 002a 002B cmp r3, #0 725 002c 01D0 beq .L40 490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** status = HAL_ERROR; 726 .loc 1 491 14 727 002e 0123 movs r3, #1 728 0030 FB71 strb r3, [r7, #7] 729 .L40: 492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return status; 730 .loc 1 495 10 731 0032 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 732 .loc 1 496 1 733 0034 1846 mov r0, r3 734 0036 0C37 adds r7, r7, #12 735 .cfi_def_cfa_offset 4 736 0038 BD46 mov sp, r7 737 .cfi_def_cfa_register 13 738 @ sp needed 739 003a 5DF8047B ldr r7, [sp], #4 740 .cfi_restore 7 741 .cfi_def_cfa_offset 0 742 003e 7047 bx lr 743 .L43: 744 .align 2 745 .L42: 746 0040 00200240 .word 1073881088 747 0044 23016745 .word 1164378403 748 0048 AB89EFCD .word -839939669 749 .cfi_endproc 750 .LFE135: 752 .section .text.HAL_FLASH_Lock,"ax",%progbits 753 .align 1 754 .global HAL_FLASH_Lock 755 .syntax unified 756 .thumb 757 .thumb_func 759 HAL_FLASH_Lock: 760 .LFB136: 497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Locks the FLASH control register access 500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL Status 501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) 503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { ARM GAS /tmp/ccv5crZT.s page 23 761 .loc 1 503 1 762 .cfi_startproc 763 @ args = 0, pretend = 0, frame = 0 764 @ frame_needed = 1, uses_anonymous_args = 0 765 @ link register save eliminated. 766 0000 80B4 push {r7} 767 .cfi_def_cfa_offset 4 768 .cfi_offset 7, -4 769 0002 00AF add r7, sp, #0 770 .cfi_def_cfa_register 7 504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_LOCK); 771 .loc 1 505 3 772 0004 054B ldr r3, .L46 773 0006 1B69 ldr r3, [r3, #16] 774 0008 044A ldr r2, .L46 775 000a 43F08003 orr r3, r3, #128 776 000e 1361 str r3, [r2, #16] 506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_OK; 777 .loc 1 507 10 778 0010 0023 movs r3, #0 508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 779 .loc 1 508 1 780 0012 1846 mov r0, r3 781 0014 BD46 mov sp, r7 782 .cfi_def_cfa_register 13 783 @ sp needed 784 0016 5DF8047B ldr r7, [sp], #4 785 .cfi_restore 7 786 .cfi_def_cfa_offset 0 787 001a 7047 bx lr 788 .L47: 789 .align 2 790 .L46: 791 001c 00200240 .word 1073881088 792 .cfi_endproc 793 .LFE136: 795 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 796 .align 1 797 .global HAL_FLASH_OB_Unlock 798 .syntax unified 799 .thumb 800 .thumb_func 802 HAL_FLASH_OB_Unlock: 803 .LFB137: 509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access. 512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL Status 513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) 515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 804 .loc 1 515 1 805 .cfi_startproc 806 @ args = 0, pretend = 0, frame = 0 807 @ frame_needed = 1, uses_anonymous_args = 0 ARM GAS /tmp/ccv5crZT.s page 24 808 @ link register save eliminated. 809 0000 80B4 push {r7} 810 .cfi_def_cfa_offset 4 811 .cfi_offset 7, -4 812 0002 00AF add r7, sp, #0 813 .cfi_def_cfa_register 7 516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if (HAL_IS_BIT_CLR(FLASH->CR, FLASH_CR_OPTWRE)) 814 .loc 1 516 7 815 0004 094B ldr r3, .L52 816 0006 1B69 ldr r3, [r3, #16] 817 0008 03F40073 and r3, r3, #512 818 .loc 1 516 6 819 000c 002B cmp r3, #0 820 000e 07D1 bne .L49 517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Authorizes the Option Byte register programming */ 519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY1); 821 .loc 1 519 5 822 0010 064B ldr r3, .L52 823 0012 074A ldr r2, .L52+4 824 0014 9A60 str r2, [r3, #8] 520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); 825 .loc 1 520 5 826 0016 054B ldr r3, .L52 827 0018 064A ldr r2, .L52+8 828 001a 9A60 str r2, [r3, #8] 521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** else 523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_ERROR; 525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_OK; 829 .loc 1 527 10 830 001c 0023 movs r3, #0 831 001e 00E0 b .L51 832 .L49: 524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 833 .loc 1 524 12 834 0020 0123 movs r3, #1 835 .L51: 528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 836 .loc 1 528 1 837 0022 1846 mov r0, r3 838 0024 BD46 mov sp, r7 839 .cfi_def_cfa_register 13 840 @ sp needed 841 0026 5DF8047B ldr r7, [sp], #4 842 .cfi_restore 7 843 .cfi_def_cfa_offset 0 844 002a 7047 bx lr 845 .L53: 846 .align 2 847 .L52: 848 002c 00200240 .word 1073881088 849 0030 23016745 .word 1164378403 850 0034 AB89EFCD .word -839939669 ARM GAS /tmp/ccv5crZT.s page 25 851 .cfi_endproc 852 .LFE137: 854 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 855 .align 1 856 .global HAL_FLASH_OB_Lock 857 .syntax unified 858 .thumb 859 .thumb_func 861 HAL_FLASH_OB_Lock: 862 .LFB138: 529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access. 532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL Status 533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) 535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 863 .loc 1 535 1 864 .cfi_startproc 865 @ args = 0, pretend = 0, frame = 0 866 @ frame_needed = 1, uses_anonymous_args = 0 867 @ link register save eliminated. 868 0000 80B4 push {r7} 869 .cfi_def_cfa_offset 4 870 .cfi_offset 7, -4 871 0002 00AF add r7, sp, #0 872 .cfi_def_cfa_register 7 536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Clear the OPTWRE Bit to lock the FLASH Option Byte Registers access */ 537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTWRE); 873 .loc 1 537 3 874 0004 054B ldr r3, .L56 875 0006 1B69 ldr r3, [r3, #16] 876 0008 044A ldr r2, .L56 877 000a 23F40073 bic r3, r3, #512 878 000e 1361 str r3, [r2, #16] 538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_OK; 879 .loc 1 539 10 880 0010 0023 movs r3, #0 540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 881 .loc 1 540 1 882 0012 1846 mov r0, r3 883 0014 BD46 mov sp, r7 884 .cfi_def_cfa_register 13 885 @ sp needed 886 0016 5DF8047B ldr r7, [sp], #4 887 .cfi_restore 7 888 .cfi_def_cfa_offset 0 889 001a 7047 bx lr 890 .L57: 891 .align 2 892 .L56: 893 001c 00200240 .word 1073881088 894 .cfi_endproc 895 .LFE138: 897 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 898 .align 1 ARM GAS /tmp/ccv5crZT.s page 26 899 .global HAL_FLASH_OB_Launch 900 .syntax unified 901 .thumb 902 .thumb_func 904 HAL_FLASH_OB_Launch: 905 .LFB139: 541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Launch the option byte loading. 544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @note This function will reset automatically the MCU. 545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL Status 546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) 548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 906 .loc 1 548 1 907 .cfi_startproc 908 @ args = 0, pretend = 0, frame = 0 909 @ frame_needed = 1, uses_anonymous_args = 0 910 0000 80B5 push {r7, lr} 911 .cfi_def_cfa_offset 8 912 .cfi_offset 7, -8 913 .cfi_offset 14, -4 914 0002 00AF add r7, sp, #0 915 .cfi_def_cfa_register 7 549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Set the OBL_Launch bit to launch the option byte loading */ 550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_OBL_LAUNCH); 916 .loc 1 550 3 917 0004 064B ldr r3, .L60 918 0006 1B69 ldr r3, [r3, #16] 919 0008 054A ldr r2, .L60 920 000a 43F40053 orr r3, r3, #8192 921 000e 1361 str r3, [r2, #16] 551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Wait for last operation to be completed */ 553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return(FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE)); 922 .loc 1 553 10 923 0010 4CF25030 movw r0, #50000 924 0014 FFF7FEFF bl FLASH_WaitForLastOperation 925 0018 0346 mov r3, r0 554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 926 .loc 1 554 1 927 001a 1846 mov r0, r3 928 001c 80BD pop {r7, pc} 929 .L61: 930 001e 00BF .align 2 931 .L60: 932 0020 00200240 .word 1073881088 933 .cfi_endproc 934 .LFE139: 936 .section .text.HAL_FLASH_GetError,"ax",%progbits 937 .align 1 938 .global HAL_FLASH_GetError 939 .syntax unified 940 .thumb 941 .thumb_func 943 HAL_FLASH_GetError: 944 .LFB140: ARM GAS /tmp/ccv5crZT.s page 27 555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral errors functions 561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Peripheral errors functions 562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * 563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @verbatim 564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** =============================================================================== 565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ##### Peripheral Errors functions ##### 566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** =============================================================================== 567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** [..] 568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** This subsection permit to get in run-time errors of the FLASH peripheral. 569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** @endverbatim 571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Get the specific FLASH error flag. 576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval FLASH_ErrorCode The returned value can be: 577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @ref FLASH_Error_Codes 578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) 580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 945 .loc 1 580 1 946 .cfi_startproc 947 @ args = 0, pretend = 0, frame = 0 948 @ frame_needed = 1, uses_anonymous_args = 0 949 @ link register save eliminated. 950 0000 80B4 push {r7} 951 .cfi_def_cfa_offset 4 952 .cfi_offset 7, -4 953 0002 00AF add r7, sp, #0 954 .cfi_def_cfa_register 7 581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return pFlash.ErrorCode; 955 .loc 1 581 17 956 0004 034B ldr r3, .L64 957 0006 DB69 ldr r3, [r3, #28] 582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 958 .loc 1 582 1 959 0008 1846 mov r0, r3 960 000a BD46 mov sp, r7 961 .cfi_def_cfa_register 13 962 @ sp needed 963 000c 5DF8047B ldr r7, [sp], #4 964 .cfi_restore 7 965 .cfi_def_cfa_offset 0 966 0010 7047 bx lr 967 .L65: 968 0012 00BF .align 2 969 .L64: 970 0014 00000000 .word pFlash 971 .cfi_endproc 972 .LFE140: 974 .section .text.FLASH_Program_HalfWord,"ax",%progbits ARM GAS /tmp/ccv5crZT.s page 28 975 .align 1 976 .syntax unified 977 .thumb 978 .thumb_func 980 FLASH_Program_HalfWord: 981 .LFB141: 583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @} 590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions 593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @{ 594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address. 598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Address specify the address to be programmed. 599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Data specify the data to be programmed. 600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval None 601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) 603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 982 .loc 1 603 1 983 .cfi_startproc 984 @ args = 0, pretend = 0, frame = 8 985 @ frame_needed = 1, uses_anonymous_args = 0 986 @ link register save eliminated. 987 0000 80B4 push {r7} 988 .cfi_def_cfa_offset 4 989 .cfi_offset 7, -4 990 0002 83B0 sub sp, sp, #12 991 .cfi_def_cfa_offset 16 992 0004 00AF add r7, sp, #0 993 .cfi_def_cfa_register 7 994 0006 7860 str r0, [r7, #4] 995 0008 0B46 mov r3, r1 996 000a 7B80 strh r3, [r7, #2] @ movhi 604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Clean the error context */ 605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 997 .loc 1 605 20 998 000c 084B ldr r3, .L67 999 000e 0022 movs r2, #0 1000 0010 DA61 str r2, [r3, #28] 606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Proceed to program the new data */ 608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** SET_BIT(FLASH->CR, FLASH_CR_PG); 1001 .loc 1 608 5 1002 0012 084B ldr r3, .L67+4 1003 0014 1B69 ldr r3, [r3, #16] 1004 0016 074A ldr r2, .L67+4 1005 0018 43F00103 orr r3, r3, #1 1006 001c 1361 str r3, [r2, #16] ARM GAS /tmp/ccv5crZT.s page 29 609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Write data in the address */ 611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** *(__IO uint16_t*)Address = Data; 1007 .loc 1 611 4 1008 001e 7B68 ldr r3, [r7, #4] 1009 .loc 1 611 28 1010 0020 7A88 ldrh r2, [r7, #2] @ movhi 1011 0022 1A80 strh r2, [r3] @ movhi 612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1012 .loc 1 612 1 1013 0024 00BF nop 1014 0026 0C37 adds r7, r7, #12 1015 .cfi_def_cfa_offset 4 1016 0028 BD46 mov sp, r7 1017 .cfi_def_cfa_register 13 1018 @ sp needed 1019 002a 5DF8047B ldr r7, [sp], #4 1020 .cfi_restore 7 1021 .cfi_def_cfa_offset 0 1022 002e 7047 bx lr 1023 .L68: 1024 .align 2 1025 .L67: 1026 0030 00000000 .word pFlash 1027 0034 00200240 .word 1073881088 1028 .cfi_endproc 1029 .LFE141: 1031 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 1032 .align 1 1033 .global FLASH_WaitForLastOperation 1034 .syntax unified 1035 .thumb 1036 .thumb_func 1038 FLASH_WaitForLastOperation: 1039 .LFB142: 613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. 616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @param Timeout maximum flash operation timeout 617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval HAL Status 618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) 620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 1040 .loc 1 620 1 1041 .cfi_startproc 1042 @ args = 0, pretend = 0, frame = 16 1043 @ frame_needed = 1, uses_anonymous_args = 0 1044 0000 80B5 push {r7, lr} 1045 .cfi_def_cfa_offset 8 1046 .cfi_offset 7, -8 1047 .cfi_offset 14, -4 1048 0002 84B0 sub sp, sp, #16 1049 .cfi_def_cfa_offset 24 1050 0004 00AF add r7, sp, #0 1051 .cfi_def_cfa_register 7 1052 0006 7860 str r0, [r7, #4] 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. ARM GAS /tmp/ccv5crZT.s page 30 622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** flag will be set */ 624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint32_t tickstart = HAL_GetTick(); 1053 .loc 1 625 24 1054 0008 FFF7FEFF bl HAL_GetTick 1055 000c F860 str r0, [r7, #12] 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY)) 1056 .loc 1 627 8 1057 000e 10E0 b .L71 1058 .L74: 628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if (Timeout != HAL_MAX_DELAY) 1059 .loc 1 629 8 1060 0010 7B68 ldr r3, [r7, #4] 1061 0012 B3F1FF3F cmp r3, #-1 1062 0016 0CD0 beq .L71 630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if((Timeout == 0U) || ((HAL_GetTick()-tickstart) > Timeout)) 1063 .loc 1 631 9 1064 0018 7B68 ldr r3, [r7, #4] 1065 001a 002B cmp r3, #0 1066 001c 07D0 beq .L72 1067 .loc 1 631 31 discriminator 1 1068 001e FFF7FEFF bl HAL_GetTick 1069 0022 0246 mov r2, r0 1070 .loc 1 631 44 discriminator 1 1071 0024 FB68 ldr r3, [r7, #12] 1072 0026 D31A subs r3, r2, r3 1073 .loc 1 631 26 discriminator 1 1074 0028 7A68 ldr r2, [r7, #4] 1075 002a 9A42 cmp r2, r3 1076 002c 01D2 bcs .L71 1077 .L72: 632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_TIMEOUT; 1078 .loc 1 633 16 1079 002e 0323 movs r3, #3 1080 0030 1FE0 b .L73 1081 .L71: 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 1082 .loc 1 627 9 1083 0032 124B ldr r3, .L78 1084 0034 DB68 ldr r3, [r3, #12] 1085 0036 03F00103 and r3, r3, #1 1086 003a 012B cmp r3, #1 1087 003c E8D0 beq .L74 634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP)) 1088 .loc 1 639 7 1089 003e 0F4B ldr r3, .L78 1090 0040 DB68 ldr r3, [r3, #12] ARM GAS /tmp/ccv5crZT.s page 31 1091 0042 03F02003 and r3, r3, #32 1092 .loc 1 639 6 1093 0046 202B cmp r3, #32 1094 0048 02D1 bne .L75 640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 1095 .loc 1 642 5 1096 004a 0C4B ldr r3, .L78 1097 004c 2022 movs r2, #32 1098 004e DA60 str r2, [r3, #12] 1099 .L75: 643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) || 1100 .loc 1 645 6 1101 0050 0A4B ldr r3, .L78 1102 0052 DB68 ldr r3, [r3, #12] 1103 0054 03F01003 and r3, r3, #16 1104 .loc 1 645 5 1105 0058 102B cmp r3, #16 1106 005a 05D0 beq .L76 646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR)) 1107 .loc 1 646 6 1108 005c 074B ldr r3, .L78 1109 005e DB68 ldr r3, [r3, #12] 1110 0060 03F00403 and r3, r3, #4 645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR)) 1111 .loc 1 645 47 discriminator 1 1112 0064 042B cmp r3, #4 1113 0066 03D1 bne .L77 1114 .L76: 647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /*Save the error code*/ 649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** FLASH_SetErrorCode(); 1115 .loc 1 649 5 1116 0068 FFF7FEFF bl FLASH_SetErrorCode 650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_ERROR; 1117 .loc 1 650 12 1118 006c 0123 movs r3, #1 1119 006e 00E0 b .L73 1120 .L77: 651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* There is no error flag set */ 654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_OK; 1121 .loc 1 654 10 1122 0070 0023 movs r3, #0 1123 .L73: 655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1124 .loc 1 655 1 1125 0072 1846 mov r0, r3 1126 0074 1037 adds r7, r7, #16 1127 .cfi_def_cfa_offset 8 1128 0076 BD46 mov sp, r7 1129 .cfi_def_cfa_register 13 1130 @ sp needed ARM GAS /tmp/ccv5crZT.s page 32 1131 0078 80BD pop {r7, pc} 1132 .L79: 1133 007a 00BF .align 2 1134 .L78: 1135 007c 00200240 .word 1073881088 1136 .cfi_endproc 1137 .LFE142: 1139 .section .text.FLASH_SetErrorCode,"ax",%progbits 1140 .align 1 1141 .syntax unified 1142 .thumb 1143 .thumb_func 1145 FLASH_SetErrorCode: 1146 .LFB143: 656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /** 659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @brief Set the specific FLASH error flag. 660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** * @retval None 661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** */ 662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** static void FLASH_SetErrorCode(void) 663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 1147 .loc 1 663 1 1148 .cfi_startproc 1149 @ args = 0, pretend = 0, frame = 8 1150 @ frame_needed = 1, uses_anonymous_args = 0 1151 @ link register save eliminated. 1152 0000 80B4 push {r7} 1153 .cfi_def_cfa_offset 4 1154 .cfi_offset 7, -4 1155 0002 83B0 sub sp, sp, #12 1156 .cfi_def_cfa_offset 16 1157 0004 00AF add r7, sp, #0 1158 .cfi_def_cfa_register 7 664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint32_t flags = 0U; 1159 .loc 1 664 12 1160 0006 0023 movs r3, #0 1161 0008 7B60 str r3, [r7, #4] 665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR)) 1162 .loc 1 666 6 1163 000a 144B ldr r3, .L83 1164 000c DB68 ldr r3, [r3, #12] 1165 000e 03F01003 and r3, r3, #16 1166 .loc 1 666 5 1167 0012 102B cmp r3, #16 1168 0014 09D1 bne .L81 667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 1169 .loc 1 668 11 1170 0016 124B ldr r3, .L83+4 1171 0018 DB69 ldr r3, [r3, #28] 1172 .loc 1 668 22 1173 001a 43F00203 orr r3, r3, #2 1174 001e 104A ldr r2, .L83+4 1175 0020 D361 str r3, [r2, #28] 669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** flags |= FLASH_FLAG_WRPERR; ARM GAS /tmp/ccv5crZT.s page 33 1176 .loc 1 669 11 1177 0022 7B68 ldr r3, [r7, #4] 1178 0024 43F01003 orr r3, r3, #16 1179 0028 7B60 str r3, [r7, #4] 1180 .L81: 670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR)) 1181 .loc 1 671 6 1182 002a 0C4B ldr r3, .L83 1183 002c DB68 ldr r3, [r3, #12] 1184 002e 03F00403 and r3, r3, #4 1185 .loc 1 671 5 1186 0032 042B cmp r3, #4 1187 0034 09D1 bne .L82 672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PROG; 1188 .loc 1 673 11 1189 0036 0A4B ldr r3, .L83+4 1190 0038 DB69 ldr r3, [r3, #28] 1191 .loc 1 673 22 1192 003a 43F00103 orr r3, r3, #1 1193 003e 084A ldr r2, .L83+4 1194 0040 D361 str r3, [r2, #28] 674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** flags |= FLASH_FLAG_PGERR; 1195 .loc 1 674 11 1196 0042 7B68 ldr r3, [r7, #4] 1197 0044 43F00403 orr r3, r3, #4 1198 0048 7B60 str r3, [r7, #4] 1199 .L82: 675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** /* Clear FLASH error pending bits */ 677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(flags); 1200 .loc 1 677 3 1201 004a 044A ldr r2, .L83 1202 004c 7B68 ldr r3, [r7, #4] 1203 004e D360 str r3, [r2, #12] 678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1204 .loc 1 678 1 1205 0050 00BF nop 1206 0052 0C37 adds r7, r7, #12 1207 .cfi_def_cfa_offset 4 1208 0054 BD46 mov sp, r7 1209 .cfi_def_cfa_register 13 1210 @ sp needed 1211 0056 5DF8047B ldr r7, [sp], #4 1212 .cfi_restore 7 1213 .cfi_def_cfa_offset 0 1214 005a 7047 bx lr 1215 .L84: 1216 .align 2 1217 .L83: 1218 005c 00200240 .word 1073881088 1219 0060 00000000 .word pFlash 1220 .cfi_endproc 1221 .LFE143: 1223 .text 1224 .Letext0: ARM GAS /tmp/ccv5crZT.s page 34 1225 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 1226 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 1227 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 1228 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 1229 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 1230 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_flash.h" 1231 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal.h" ARM GAS /tmp/ccv5crZT.s page 35 DEFINED SYMBOLS *ABS*:00000000 stm32f3xx_hal_flash.c /tmp/ccv5crZT.s:25 .bss.pFlash:00000000 pFlash /tmp/ccv5crZT.s:22 .bss.pFlash:00000000 $d /tmp/ccv5crZT.s:28 .text.HAL_FLASH_Program:00000000 $t /tmp/ccv5crZT.s:34 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program /tmp/ccv5crZT.s:1038 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation /tmp/ccv5crZT.s:980 .text.FLASH_Program_HalfWord:00000000 FLASH_Program_HalfWord /tmp/ccv5crZT.s:186 .text.HAL_FLASH_Program:000000d8 $d /tmp/ccv5crZT.s:192 .text.HAL_FLASH_Program_IT:00000000 $t /tmp/ccv5crZT.s:198 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT /tmp/ccv5crZT.s:302 .text.HAL_FLASH_Program_IT:00000088 $d /tmp/ccv5crZT.s:308 .text.HAL_FLASH_IRQHandler:00000000 $t /tmp/ccv5crZT.s:314 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler /tmp/ccv5crZT.s:1145 .text.FLASH_SetErrorCode:00000000 FLASH_SetErrorCode /tmp/ccv5crZT.s:651 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback /tmp/ccv5crZT.s:615 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback /tmp/ccv5crZT.s:603 .text.HAL_FLASH_IRQHandler:000001c0 $d /tmp/ccv5crZT.s:609 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t /tmp/ccv5crZT.s:645 .text.HAL_FLASH_OperationErrorCallback:00000000 $t /tmp/ccv5crZT.s:681 .text.HAL_FLASH_Unlock:00000000 $t /tmp/ccv5crZT.s:687 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock /tmp/ccv5crZT.s:746 .text.HAL_FLASH_Unlock:00000040 $d /tmp/ccv5crZT.s:753 .text.HAL_FLASH_Lock:00000000 $t /tmp/ccv5crZT.s:759 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock /tmp/ccv5crZT.s:791 .text.HAL_FLASH_Lock:0000001c $d /tmp/ccv5crZT.s:796 .text.HAL_FLASH_OB_Unlock:00000000 $t /tmp/ccv5crZT.s:802 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock /tmp/ccv5crZT.s:848 .text.HAL_FLASH_OB_Unlock:0000002c $d /tmp/ccv5crZT.s:855 .text.HAL_FLASH_OB_Lock:00000000 $t /tmp/ccv5crZT.s:861 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock /tmp/ccv5crZT.s:893 .text.HAL_FLASH_OB_Lock:0000001c $d /tmp/ccv5crZT.s:898 .text.HAL_FLASH_OB_Launch:00000000 $t /tmp/ccv5crZT.s:904 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch /tmp/ccv5crZT.s:932 .text.HAL_FLASH_OB_Launch:00000020 $d /tmp/ccv5crZT.s:937 .text.HAL_FLASH_GetError:00000000 $t /tmp/ccv5crZT.s:943 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError /tmp/ccv5crZT.s:970 .text.HAL_FLASH_GetError:00000014 $d /tmp/ccv5crZT.s:975 .text.FLASH_Program_HalfWord:00000000 $t /tmp/ccv5crZT.s:1026 .text.FLASH_Program_HalfWord:00000030 $d /tmp/ccv5crZT.s:1032 .text.FLASH_WaitForLastOperation:00000000 $t /tmp/ccv5crZT.s:1135 .text.FLASH_WaitForLastOperation:0000007c $d /tmp/ccv5crZT.s:1140 .text.FLASH_SetErrorCode:00000000 $t /tmp/ccv5crZT.s:1218 .text.FLASH_SetErrorCode:0000005c $d UNDEFINED SYMBOLS FLASH_PageErase HAL_GetTick