ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.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 .global pFlash 20 .section .bss.pFlash,"aw",%nobits 21 .align 3 24 pFlash: 25 0000 00000000 .space 32 25 00000000 25 00000000 25 00000000 25 00000000 26 .section .rodata 27 .align 2 28 .LC0: 29 0000 44726976 .ascii "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flas" 29 6572732F 29 53544D33 29 32463378 29 785F4841 30 0033 682E6300 .ascii "h.c\000" 31 .section .text.HAL_FLASH_Program,"ax",%progbits 32 .align 1 33 .global HAL_FLASH_Program 34 .syntax unified 35 .thumb 36 .thumb_func 38 HAL_FLASH_Program: 39 .LFB130: 40 .file 1 "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c" 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 2 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. 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 3 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. 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 **** * @{ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 4 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 ---------------------------------------------------------*/ 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 **** { 41 .loc 1 167 1 42 .cfi_startproc 43 @ args = 0, pretend = 0, frame = 24 44 @ frame_needed = 1, uses_anonymous_args = 0 45 0000 F0B5 push {r4, r5, r6, r7, lr} 46 .LCFI0: 47 .cfi_def_cfa_offset 20 48 .cfi_offset 4, -20 49 .cfi_offset 5, -16 50 .cfi_offset 6, -12 51 .cfi_offset 7, -8 52 .cfi_offset 14, -4 53 0002 87B0 sub sp, sp, #28 54 .LCFI1: 55 .cfi_def_cfa_offset 48 56 0004 00AF add r7, sp, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 5 57 .LCFI2: 58 .cfi_def_cfa_register 7 59 0006 F860 str r0, [r7, #12] 60 0008 B960 str r1, [r7, #8] 61 000a C7E90023 strd r2, [r7] 168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 62 .loc 1 168 21 63 000e 0123 movs r3, #1 64 0010 FB75 strb r3, [r7, #23] 169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint8_t index = 0U; 65 .loc 1 169 11 66 0012 0023 movs r3, #0 67 0014 BB75 strb r3, [r7, #22] 170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint8_t nbiterations = 0U; 68 .loc 1 170 11 69 0016 0023 movs r3, #0 70 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); 71 .loc 1 173 3 72 001a 454B ldr r3, .L17 73 001c 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 74 001e 012B cmp r3, #1 75 0020 01D1 bne .L2 76 .loc 1 173 3 is_stmt 0 discriminator 1 77 0022 0223 movs r3, #2 78 0024 80E0 b .L3 79 .L2: 80 .loc 1 173 3 discriminator 2 81 0026 424B ldr r3, .L17 82 0028 0122 movs r2, #1 83 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)); 84 .loc 1 176 3 is_stmt 1 discriminator 2 85 002c FB68 ldr r3, [r7, #12] 86 002e 012B cmp r3, #1 87 0030 09D0 beq .L4 88 .loc 1 176 3 is_stmt 0 discriminator 1 89 0032 FB68 ldr r3, [r7, #12] 90 0034 022B cmp r3, #2 91 0036 06D0 beq .L4 92 .loc 1 176 3 discriminator 2 93 0038 FB68 ldr r3, [r7, #12] 94 003a 032B cmp r3, #3 95 003c 03D0 beq .L4 96 .loc 1 176 3 discriminator 3 97 003e B021 movs r1, #176 98 0040 3C48 ldr r0, .L17+4 99 0042 FFF7FEFF bl assert_failed 100 .L4: 177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); 101 .loc 1 177 3 is_stmt 1 102 0046 BB68 ldr r3, [r7, #8] 103 0048 B3F1006F cmp r3, #134217728 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 6 104 004c 16D3 bcc .L5 105 .loc 1 177 3 is_stmt 0 discriminator 2 106 004e 3A4B ldr r3, .L17+8 107 0050 1B88 ldrh r3, [r3] 108 0052 B3F5807F cmp r3, #256 109 0056 04D1 bne .L6 110 .loc 1 177 3 discriminator 3 111 0058 BB68 ldr r3, [r7, #8] 112 005a 384A ldr r2, .L17+12 113 005c 9342 cmp r3, r2 114 005e 0DD8 bhi .L5 115 0060 10E0 b .L7 116 .L6: 117 .loc 1 177 3 discriminator 4 118 0062 354B ldr r3, .L17+8 119 0064 1B88 ldrh r3, [r3] 120 0066 802B cmp r3, #128 121 0068 04D1 bne .L8 122 .loc 1 177 3 discriminator 6 123 006a BB68 ldr r3, [r7, #8] 124 006c 344A ldr r2, .L17+16 125 006e 9342 cmp r3, r2 126 0070 04D8 bhi .L5 127 0072 07E0 b .L7 128 .L8: 129 .loc 1 177 3 discriminator 7 130 0074 BB68 ldr r3, [r7, #8] 131 0076 334A ldr r2, .L17+20 132 0078 9342 cmp r3, r2 133 007a 03D9 bls .L7 134 .L5: 135 .loc 1 177 3 discriminator 9 136 007c B121 movs r1, #177 137 007e 2D48 ldr r0, .L17+4 138 0080 FFF7FEFF bl assert_failed 139 .L7: 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); 140 .loc 1 180 14 is_stmt 1 141 0084 4CF25030 movw r0, #50000 142 0088 FFF7FEFF bl FLASH_WaitForLastOperation 143 008c 0346 mov r3, r0 144 008e 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) 145 .loc 1 182 5 146 0090 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 147 0092 002B cmp r3, #0 148 0094 44D1 bne .L9 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) 149 .loc 1 184 7 150 0096 FB68 ldr r3, [r7, #12] 151 0098 012B cmp r3, #1 152 009a 02D1 bne .L10 185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 7 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; 153 .loc 1 187 20 154 009c 0123 movs r3, #1 155 009e 7B75 strb r3, [r7, #21] 156 00a0 07E0 b .L11 157 .L10: 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) 158 .loc 1 189 12 159 00a2 FB68 ldr r3, [r7, #12] 160 00a4 022B cmp r3, #2 161 00a6 02D1 bne .L12 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; 162 .loc 1 192 20 163 00a8 0223 movs r3, #2 164 00aa 7B75 strb r3, [r7, #21] 165 00ac 01E0 b .L11 166 .L12: 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; 167 .loc 1 197 20 168 00ae 0423 movs r3, #4 169 00b0 7B75 strb r3, [r7, #21] 170 .L11: 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++) 171 .loc 1 200 16 172 00b2 0023 movs r3, #0 173 00b4 BB75 strb r3, [r7, #22] 174 .loc 1 200 5 175 00b6 2DE0 b .L13 176 .L15: 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))); 177 .loc 1 202 44 178 00b8 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 179 00ba 5A00 lsls r2, r3, #1 180 .loc 1 202 7 181 00bc BB68 ldr r3, [r7, #8] 182 00be 02EB030C add ip, r2, r3 183 .loc 1 202 77 184 00c2 BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 185 00c4 1901 lsls r1, r3, #4 186 .loc 1 202 70 187 00c6 D7E90023 ldrd r2, [r7] 188 00ca C1F12006 rsb r6, r1, #32 189 00ce A1F12000 sub r0, r1, #32 190 00d2 22FA01F4 lsr r4, r2, r1 191 00d6 03FA06F6 lsl r6, r3, r6 192 00da 3443 orrs r4, r4, r6 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 8 193 00dc 23FA00F0 lsr r0, r3, r0 194 00e0 0443 orrs r4, r4, r0 195 00e2 23FA01F5 lsr r5, r3, r1 196 .loc 1 202 7 197 00e6 A3B2 uxth r3, r4 198 00e8 1946 mov r1, r3 199 00ea 6046 mov r0, ip 200 00ec 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 */ 205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** status = FLASH_WaitForLastOperation(FLASH_TIMEOUT_VALUE); 201 .loc 1 205 18 202 00f0 4CF25030 movw r0, #50000 203 00f4 FFF7FEFF bl FLASH_WaitForLastOperation 204 00f8 0346 mov r3, r0 205 00fa 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); 206 .loc 1 208 9 207 00fc 124B ldr r3, .L17+24 208 00fe 1B69 ldr r3, [r3, #16] 209 0100 114A ldr r2, .L17+24 210 0102 23F00103 bic r3, r3, #1 211 0106 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) 212 .loc 1 210 10 213 0108 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 214 010a 002B cmp r3, #0 215 010c 07D1 bne .L16 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 216 .loc 1 200 49 discriminator 2 217 010e BB7D ldrb r3, [r7, #22] @ zero_extendqisi2 218 0110 0133 adds r3, r3, #1 219 0112 BB75 strb r3, [r7, #22] 220 .L13: 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 221 .loc 1 200 5 discriminator 1 222 0114 BA7D ldrb r2, [r7, #22] @ zero_extendqisi2 223 0116 7B7D ldrb r3, [r7, #21] @ zero_extendqisi2 224 0118 9A42 cmp r2, r3 225 011a CDD3 bcc .L15 226 011c 00E0 b .L9 227 .L16: 211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** break; 228 .loc 1 212 9 229 011e 00BF nop 230 .L9: 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); 231 .loc 1 218 3 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 9 232 0120 034B ldr r3, .L17 233 0122 0022 movs r2, #0 234 0124 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; 235 .loc 1 220 10 236 0126 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 237 .L3: 221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 238 .loc 1 221 1 239 0128 1846 mov r0, r3 240 012a 1C37 adds r7, r7, #28 241 .LCFI3: 242 .cfi_def_cfa_offset 20 243 012c BD46 mov sp, r7 244 .LCFI4: 245 .cfi_def_cfa_register 13 246 @ sp needed 247 012e F0BD pop {r4, r5, r6, r7, pc} 248 .L18: 249 .align 2 250 .L17: 251 0130 00000000 .word pFlash 252 0134 00000000 .word .LC0 253 0138 CCF7FF1F .word 536868812 254 013c FFFF0308 .word 134479871 255 0140 FFFF0108 .word 134348799 256 0144 FFFF0008 .word 134283263 257 0148 00200240 .word 1073881088 258 .cfi_endproc 259 .LFE130: 261 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 262 .align 1 263 .global HAL_FLASH_Program_IT 264 .syntax unified 265 .thumb 266 .thumb_func 268 HAL_FLASH_Program_IT: 269 .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 **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 10 270 .loc 1 239 1 271 .cfi_startproc 272 @ args = 0, pretend = 0, frame = 24 273 @ frame_needed = 1, uses_anonymous_args = 0 274 0000 80B5 push {r7, lr} 275 .LCFI5: 276 .cfi_def_cfa_offset 8 277 .cfi_offset 7, -8 278 .cfi_offset 14, -4 279 0002 86B0 sub sp, sp, #24 280 .LCFI6: 281 .cfi_def_cfa_offset 32 282 0004 00AF add r7, sp, #0 283 .LCFI7: 284 .cfi_def_cfa_register 7 285 0006 F860 str r0, [r7, #12] 286 0008 B960 str r1, [r7, #8] 287 000a C7E90023 strd r2, [r7] 240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 288 .loc 1 240 21 289 000e 0023 movs r3, #0 290 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); 291 .loc 1 243 3 292 0012 334B ldr r3, .L30 293 0014 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 294 0016 012B cmp r3, #1 295 0018 01D1 bne .L20 296 .loc 1 243 3 is_stmt 0 discriminator 1 297 001a 0223 movs r3, #2 298 001c 5CE0 b .L21 299 .L20: 300 .loc 1 243 3 discriminator 2 301 001e 304B ldr r3, .L30 302 0020 0122 movs r2, #1 303 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)); 304 .loc 1 246 3 is_stmt 1 discriminator 2 305 0024 FB68 ldr r3, [r7, #12] 306 0026 012B cmp r3, #1 307 0028 09D0 beq .L22 308 .loc 1 246 3 is_stmt 0 discriminator 1 309 002a FB68 ldr r3, [r7, #12] 310 002c 022B cmp r3, #2 311 002e 06D0 beq .L22 312 .loc 1 246 3 discriminator 2 313 0030 FB68 ldr r3, [r7, #12] 314 0032 032B cmp r3, #3 315 0034 03D0 beq .L22 316 .loc 1 246 3 discriminator 3 317 0036 F621 movs r1, #246 318 0038 2A48 ldr r0, .L30+4 319 003a FFF7FEFF bl assert_failed ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 11 320 .L22: 247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(Address)); 321 .loc 1 247 3 is_stmt 1 322 003e BB68 ldr r3, [r7, #8] 323 0040 B3F1006F cmp r3, #134217728 324 0044 16D3 bcc .L23 325 .loc 1 247 3 is_stmt 0 discriminator 2 326 0046 284B ldr r3, .L30+8 327 0048 1B88 ldrh r3, [r3] 328 004a B3F5807F cmp r3, #256 329 004e 04D1 bne .L24 330 .loc 1 247 3 discriminator 3 331 0050 BB68 ldr r3, [r7, #8] 332 0052 264A ldr r2, .L30+12 333 0054 9342 cmp r3, r2 334 0056 0DD8 bhi .L23 335 0058 10E0 b .L25 336 .L24: 337 .loc 1 247 3 discriminator 4 338 005a 234B ldr r3, .L30+8 339 005c 1B88 ldrh r3, [r3] 340 005e 802B cmp r3, #128 341 0060 04D1 bne .L26 342 .loc 1 247 3 discriminator 6 343 0062 BB68 ldr r3, [r7, #8] 344 0064 224A ldr r2, .L30+16 345 0066 9342 cmp r3, r2 346 0068 04D8 bhi .L23 347 006a 07E0 b .L25 348 .L26: 349 .loc 1 247 3 discriminator 7 350 006c BB68 ldr r3, [r7, #8] 351 006e 214A ldr r2, .L30+20 352 0070 9342 cmp r3, r2 353 0072 03D9 bls .L25 354 .L23: 355 .loc 1 247 3 discriminator 9 356 0074 F721 movs r1, #247 357 0076 1B48 ldr r0, .L30+4 358 0078 FFF7FEFF bl assert_failed 359 .L25: 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); 360 .loc 1 250 3 is_stmt 1 361 007c 1E4B ldr r3, .L30+24 362 007e 1B69 ldr r3, [r3, #16] 363 0080 1D4A ldr r2, .L30+24 364 0082 43F4A053 orr r3, r3, #5120 365 0086 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; 366 .loc 1 252 18 367 0088 154A ldr r2, .L30 368 008a BB68 ldr r3, [r7, #8] 369 008c 9360 str r3, [r2, #8] 253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Data = Data; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 12 370 .loc 1 253 15 371 008e 1449 ldr r1, .L30 372 0090 D7E90023 ldrd r2, [r7] 373 0094 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) 374 .loc 1 255 5 375 0098 FB68 ldr r3, [r7, #12] 376 009a 012B cmp r3, #1 377 009c 06D1 bne .L27 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; 378 .loc 1 257 29 379 009e 104B ldr r3, .L30 380 00a0 0322 movs r2, #3 381 00a2 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; 382 .loc 1 259 26 383 00a4 0E4B ldr r3, .L30 384 00a6 0122 movs r2, #1 385 00a8 5A60 str r2, [r3, #4] 386 00aa 0FE0 b .L28 387 .L27: 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) 388 .loc 1 261 10 389 00ac FB68 ldr r3, [r7, #12] 390 00ae 022B cmp r3, #2 391 00b0 06D1 bne .L29 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; 392 .loc 1 263 29 393 00b2 0B4B ldr r3, .L30 394 00b4 0422 movs r2, #4 395 00b6 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; 396 .loc 1 265 26 397 00b8 094B ldr r3, .L30 398 00ba 0222 movs r2, #2 399 00bc 5A60 str r2, [r3, #4] 400 00be 05E0 b .L28 401 .L29: 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; 402 .loc 1 269 29 403 00c0 074B ldr r3, .L30 404 00c2 0522 movs r2, #5 405 00c4 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; 406 .loc 1 271 26 407 00c6 064B ldr r3, .L30 408 00c8 0422 movs r2, #4 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 13 409 00ca 5A60 str r2, [r3, #4] 410 .L28: 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); 411 .loc 1 275 3 412 00cc 3B88 ldrh r3, [r7] 413 00ce 1946 mov r1, r3 414 00d0 B868 ldr r0, [r7, #8] 415 00d2 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; 416 .loc 1 277 10 417 00d6 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 418 .L21: 278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 419 .loc 1 278 1 420 00d8 1846 mov r0, r3 421 00da 1837 adds r7, r7, #24 422 .LCFI8: 423 .cfi_def_cfa_offset 8 424 00dc BD46 mov sp, r7 425 .LCFI9: 426 .cfi_def_cfa_register 13 427 @ sp needed 428 00de 80BD pop {r7, pc} 429 .L31: 430 .align 2 431 .L30: 432 00e0 00000000 .word pFlash 433 00e4 00000000 .word .LC0 434 00e8 CCF7FF1F .word 536868812 435 00ec FFFF0308 .word 134479871 436 00f0 FFFF0108 .word 134348799 437 00f4 FFFF0008 .word 134283263 438 00f8 00200240 .word 1073881088 439 .cfi_endproc 440 .LFE131: 442 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 443 .align 1 444 .global HAL_FLASH_IRQHandler 445 .syntax unified 446 .thumb 447 .thumb_func 449 HAL_FLASH_IRQHandler: 450 .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 **** { 451 .loc 1 285 1 452 .cfi_startproc 453 @ args = 0, pretend = 0, frame = 8 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 14 454 @ frame_needed = 1, uses_anonymous_args = 0 455 0000 80B5 push {r7, lr} 456 .LCFI10: 457 .cfi_def_cfa_offset 8 458 .cfi_offset 7, -8 459 .cfi_offset 14, -4 460 0002 82B0 sub sp, sp, #8 461 .LCFI11: 462 .cfi_def_cfa_offset 16 463 0004 00AF add r7, sp, #0 464 .LCFI12: 465 .cfi_def_cfa_register 7 286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint32_t addresstmp = 0U; 466 .loc 1 286 12 467 0006 0023 movs r3, #0 468 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)) 469 .loc 1 289 6 470 000a 6D4B ldr r3, .L45 471 000c DB68 ldr r3, [r3, #12] 472 000e 03F01003 and r3, r3, #16 473 .loc 1 289 5 474 0012 102B cmp r3, #16 475 0014 05D0 beq .L33 476 .loc 1 289 48 discriminator 1 477 0016 6A4B ldr r3, .L45 478 0018 DB68 ldr r3, [r3, #12] 479 001a 03F00403 and r3, r3, #4 480 .loc 1 289 46 discriminator 1 481 001e 042B cmp r3, #4 482 0020 0ED1 bne .L34 483 .L33: 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; 484 .loc 1 292 16 485 0022 684B ldr r3, .L45+4 486 0024 9B68 ldr r3, [r3, #8] 487 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; 488 .loc 1 294 20 489 0028 664B ldr r3, .L45+4 490 002a 4FF0FF32 mov r2, #-1 491 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(); 492 .loc 1 297 5 493 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); 494 .loc 1 300 5 495 0034 7868 ldr r0, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 15 496 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; 497 .loc 1 303 29 498 003a 624B ldr r3, .L45+4 499 003c 0022 movs r2, #0 500 003e 1A70 strb r2, [r3] 501 .L34: 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)) 502 .loc 1 307 6 503 0040 5F4B ldr r3, .L45 504 0042 DB68 ldr r3, [r3, #12] 505 0044 03F02003 and r3, r3, #32 506 .loc 1 307 5 507 0048 202B cmp r3, #32 508 004a 40F0A080 bne .L35 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); 509 .loc 1 310 5 510 004e 5C4B ldr r3, .L45 511 0050 2022 movs r2, #32 512 0052 DA60 str r2, [r3, #12] 311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 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) 513 .loc 1 313 14 514 0054 5B4B ldr r3, .L45+4 515 0056 1B78 ldrb r3, [r3] 516 0058 DBB2 uxtb r3, r3 517 .loc 1 313 7 518 005a 002B cmp r3, #0 519 005c 00F09780 beq .L35 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) 520 .loc 1 315 16 521 0060 584B ldr r3, .L45+4 522 0062 1B78 ldrb r3, [r3] 523 0064 DBB2 uxtb r3, r3 524 .loc 1 315 9 525 0066 012B cmp r3, #1 526 0068 2DD1 bne .L36 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--; 527 .loc 1 318 15 528 006a 564B ldr r3, .L45+4 529 006c 5B68 ldr r3, [r3, #4] 530 .loc 1 318 29 531 006e 013B subs r3, r3, #1 532 0070 544A ldr r2, .L45+4 533 0072 5360 str r3, [r2, #4] 319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 16 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) 534 .loc 1 321 18 535 0074 534B ldr r3, .L45+4 536 0076 5B68 ldr r3, [r3, #4] 537 .loc 1 321 11 538 0078 002B cmp r3, #0 539 007a 17D0 beq .L37 322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** addresstmp = pFlash.Address; 540 .loc 1 323 22 541 007c 514B ldr r3, .L45+4 542 007e 9B68 ldr r3, [r3, #8] 543 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); 544 .loc 1 325 11 545 0082 7868 ldr r0, [r7, #4] 546 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; 547 .loc 1 328 30 548 0088 4E4B ldr r3, .L45+4 549 008a 9B68 ldr r3, [r3, #8] 550 .loc 1 328 22 551 008c 03F50063 add r3, r3, #2048 552 0090 7B60 str r3, [r7, #4] 329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.Address = addresstmp; 553 .loc 1 329 26 554 0092 4C4A ldr r2, .L45+4 555 0094 7B68 ldr r3, [r7, #4] 556 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); 557 .loc 1 332 11 558 0098 494B ldr r3, .L45 559 009a 1B69 ldr r3, [r3, #16] 560 009c 484A ldr r2, .L45 561 009e 23F00203 bic r3, r3, #2 562 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); 563 .loc 1 334 11 564 00a4 7868 ldr r0, [r7, #4] 565 00a6 FFF7FEFF bl FLASH_PageErase 566 00aa 70E0 b .L35 567 .L37: 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; 568 .loc 1 340 39 569 00ac 4FF0FF33 mov r3, #-1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 17 570 00b0 7B60 str r3, [r7, #4] 571 .loc 1 340 26 572 00b2 444A ldr r2, .L45+4 573 00b4 7B68 ldr r3, [r7, #4] 574 00b6 9360 str r3, [r2, #8] 341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 575 .loc 1 341 35 576 00b8 424B ldr r3, .L45+4 577 00ba 0022 movs r2, #0 578 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); 579 .loc 1 343 11 580 00be 7868 ldr r0, [r7, #4] 581 00c0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 582 00c4 63E0 b .L35 583 .L36: 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) 584 .loc 1 346 21 585 00c6 3F4B ldr r3, .L45+4 586 00c8 1B78 ldrb r3, [r3] 587 00ca DBB2 uxtb r3, r3 588 .loc 1 346 14 589 00cc 022B cmp r3, #2 590 00ce 0CD1 bne .L38 347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 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); 591 .loc 1 349 9 592 00d0 3B4B ldr r3, .L45 593 00d2 1B69 ldr r3, [r3, #16] 594 00d4 3A4A ldr r2, .L45 595 00d6 23F00403 bic r3, r3, #4 596 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); 597 .loc 1 353 11 598 00dc 0020 movs r0, #0 599 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; 600 .loc 1 356 35 601 00e2 384B ldr r3, .L45+4 602 00e4 0022 movs r2, #0 603 00e6 1A70 strb r2, [r3] 604 00e8 51E0 b .L35 605 .L38: 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--; ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 18 606 .loc 1 361 15 607 00ea 364B ldr r3, .L45+4 608 00ec 5B68 ldr r3, [r3, #4] 609 .loc 1 361 29 610 00ee 013B subs r3, r3, #1 611 00f0 344A ldr r2, .L45+4 612 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) 613 .loc 1 364 18 614 00f4 334B ldr r3, .L45+4 615 00f6 5B68 ldr r3, [r3, #4] 616 .loc 1 364 11 617 00f8 002B cmp r3, #0 618 00fa 24D0 beq .L39 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; 619 .loc 1 367 26 620 00fc 314B ldr r3, .L45+4 621 00fe 9B68 ldr r3, [r3, #8] 622 0100 0233 adds r3, r3, #2 623 0102 304A ldr r2, .L45+4 624 0104 9360 str r3, [r2, #8] 368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** addresstmp = pFlash.Address; 625 .loc 1 368 22 626 0106 2F4B ldr r3, .L45+4 627 0108 9B68 ldr r3, [r3, #8] 628 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); 629 .loc 1 371 32 630 010c 2D4B ldr r3, .L45+4 631 010e D3E90401 ldrd r0, [r3, #16] 632 .loc 1 371 38 633 0112 4FF00002 mov r2, #0 634 0116 4FF00003 mov r3, #0 635 011a 020C lsrs r2, r0, #16 636 011c 42EA0142 orr r2, r2, r1, lsl #16 637 0120 0B0C lsrs r3, r1, #16 638 .loc 1 371 23 639 0122 2849 ldr r1, .L45+4 640 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); 641 .loc 1 374 11 642 0128 254B ldr r3, .L45 643 012a 1B69 ldr r3, [r3, #16] 644 012c 244A ldr r2, .L45 645 012e 23F00103 bic r3, r3, #1 646 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); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 19 647 .loc 1 377 62 648 0134 234B ldr r3, .L45+4 649 0136 D3E90423 ldrd r2, [r3, #16] 650 .loc 1 377 11 651 013a 93B2 uxth r3, r2 652 013c 1946 mov r1, r3 653 013e 7868 ldr r0, [r7, #4] 654 0140 FFF7FEFF bl FLASH_Program_HalfWord 655 0144 23E0 b .L35 656 .L39: 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) 657 .loc 1 383 21 658 0146 1F4B ldr r3, .L45+4 659 0148 1B78 ldrb r3, [r3] 660 014a DBB2 uxtb r3, r3 661 .loc 1 383 14 662 014c 032B cmp r3, #3 663 014e 05D1 bne .L40 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); 664 .loc 1 385 13 665 0150 1C4B ldr r3, .L45+4 666 0152 9B68 ldr r3, [r3, #8] 667 0154 1846 mov r0, r3 668 0156 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 669 015a 11E0 b .L41 670 .L40: 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) 671 .loc 1 387 26 672 015c 194B ldr r3, .L45+4 673 015e 1B78 ldrb r3, [r3] 674 0160 DBB2 uxtb r3, r3 675 .loc 1 387 19 676 0162 042B cmp r3, #4 677 0164 06D1 bne .L42 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); 678 .loc 1 389 52 679 0166 174B ldr r3, .L45+4 680 0168 9B68 ldr r3, [r3, #8] 681 .loc 1 389 13 682 016a 023B subs r3, r3, #2 683 016c 1846 mov r0, r3 684 016e FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 685 0172 05E0 b .L41 686 .L42: 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); 687 .loc 1 393 52 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 20 688 0174 134B ldr r3, .L45+4 689 0176 9B68 ldr r3, [r3, #8] 690 .loc 1 393 13 691 0178 063B subs r3, r3, #6 692 017a 1846 mov r0, r3 693 017c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 694 .L41: 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; 695 .loc 1 397 26 696 0180 104B ldr r3, .L45+4 697 0182 4FF0FF32 mov r2, #-1 698 0186 9A60 str r2, [r3, #8] 398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 699 .loc 1 398 35 700 0188 0E4B ldr r3, .L45+4 701 018a 0022 movs r2, #0 702 018c 1A70 strb r2, [r3] 703 .L35: 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 **** 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) 704 .loc 1 405 12 705 018e 0D4B ldr r3, .L45+4 706 0190 1B78 ldrb r3, [r3] 707 0192 DBB2 uxtb r3, r3 708 .loc 1 405 5 709 0194 002B cmp r3, #0 710 0196 0ED1 bne .L44 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)); 711 .loc 1 408 5 712 0198 094B ldr r3, .L45 713 019a 1B69 ldr r3, [r3, #16] 714 019c 084A ldr r2, .L45 715 019e 23F00703 bic r3, r3, #7 716 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); 717 .loc 1 411 5 718 01a4 064B ldr r3, .L45 719 01a6 1B69 ldr r3, [r3, #16] 720 01a8 054A ldr r2, .L45 721 01aa 23F4A053 bic r3, r3, #5120 722 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); 723 .loc 1 414 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 21 724 01b0 044B ldr r3, .L45+4 725 01b2 0022 movs r2, #0 726 01b4 1A76 strb r2, [r3, #24] 727 .L44: 415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 728 .loc 1 416 1 729 01b6 00BF nop 730 01b8 0837 adds r7, r7, #8 731 .LCFI13: 732 .cfi_def_cfa_offset 8 733 01ba BD46 mov sp, r7 734 .LCFI14: 735 .cfi_def_cfa_register 13 736 @ sp needed 737 01bc 80BD pop {r7, pc} 738 .L46: 739 01be 00BF .align 2 740 .L45: 741 01c0 00200240 .word 1073881088 742 01c4 00000000 .word pFlash 743 .cfi_endproc 744 .LFE132: 746 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 747 .align 1 748 .weak HAL_FLASH_EndOfOperationCallback 749 .syntax unified 750 .thumb 751 .thumb_func 753 HAL_FLASH_EndOfOperationCallback: 754 .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 **** { 755 .loc 1 428 1 756 .cfi_startproc 757 @ args = 0, pretend = 0, frame = 8 758 @ frame_needed = 1, uses_anonymous_args = 0 759 @ link register save eliminated. 760 0000 80B4 push {r7} 761 .LCFI15: 762 .cfi_def_cfa_offset 4 763 .cfi_offset 7, -4 764 0002 83B0 sub sp, sp, #12 765 .LCFI16: 766 .cfi_def_cfa_offset 16 767 0004 00AF add r7, sp, #0 768 .LCFI17: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 22 769 .cfi_def_cfa_register 7 770 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 **** } 771 .loc 1 435 1 772 0008 00BF nop 773 000a 0C37 adds r7, r7, #12 774 .LCFI18: 775 .cfi_def_cfa_offset 4 776 000c BD46 mov sp, r7 777 .LCFI19: 778 .cfi_def_cfa_register 13 779 @ sp needed 780 000e 5DF8047B ldr r7, [sp], #4 781 .LCFI20: 782 .cfi_restore 7 783 .cfi_def_cfa_offset 0 784 0012 7047 bx lr 785 .cfi_endproc 786 .LFE133: 788 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 789 .align 1 790 .weak HAL_FLASH_OperationErrorCallback 791 .syntax unified 792 .thumb 793 .thumb_func 795 HAL_FLASH_OperationErrorCallback: 796 .LFB134: 436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** 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 **** { 797 .loc 1 446 1 798 .cfi_startproc 799 @ args = 0, pretend = 0, frame = 8 800 @ frame_needed = 1, uses_anonymous_args = 0 801 @ link register save eliminated. 802 0000 80B4 push {r7} 803 .LCFI21: 804 .cfi_def_cfa_offset 4 805 .cfi_offset 7, -4 806 0002 83B0 sub sp, sp, #12 807 .LCFI22: 808 .cfi_def_cfa_offset 16 809 0004 00AF add r7, sp, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 23 810 .LCFI23: 811 .cfi_def_cfa_register 7 812 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 **** } 813 .loc 1 453 1 814 0008 00BF nop 815 000a 0C37 adds r7, r7, #12 816 .LCFI24: 817 .cfi_def_cfa_offset 4 818 000c BD46 mov sp, r7 819 .LCFI25: 820 .cfi_def_cfa_register 13 821 @ sp needed 822 000e 5DF8047B ldr r7, [sp], #4 823 .LCFI26: 824 .cfi_restore 7 825 .cfi_def_cfa_offset 0 826 0012 7047 bx lr 827 .cfi_endproc 828 .LFE134: 830 .section .text.HAL_FLASH_Unlock,"ax",%progbits 831 .align 1 832 .global HAL_FLASH_Unlock 833 .syntax unified 834 .thumb 835 .thumb_func 837 HAL_FLASH_Unlock: 838 .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 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 24 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 **** { 839 .loc 1 479 1 840 .cfi_startproc 841 @ args = 0, pretend = 0, frame = 8 842 @ frame_needed = 1, uses_anonymous_args = 0 843 @ link register save eliminated. 844 0000 80B4 push {r7} 845 .LCFI27: 846 .cfi_def_cfa_offset 4 847 .cfi_offset 7, -4 848 0002 83B0 sub sp, sp, #12 849 .LCFI28: 850 .cfi_def_cfa_offset 16 851 0004 00AF add r7, sp, #0 852 .LCFI29: 853 .cfi_def_cfa_register 7 480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 854 .loc 1 480 21 855 0006 0023 movs r3, #0 856 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) 857 .loc 1 482 6 858 000a 0D4B ldr r3, .L52 859 000c 1B69 ldr r3, [r3, #16] 860 000e 03F08003 and r3, r3, #128 861 .loc 1 482 5 862 0012 002B cmp r3, #0 863 0014 0DD0 beq .L50 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); 864 .loc 1 485 5 865 0016 0A4B ldr r3, .L52 866 0018 0A4A ldr r2, .L52+4 867 001a 5A60 str r2, [r3, #4] 486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 868 .loc 1 486 5 869 001c 084B ldr r3, .L52 870 001e 0A4A ldr r2, .L52+8 871 0020 5A60 str r2, [r3, #4] 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) 872 .loc 1 489 8 873 0022 074B ldr r3, .L52 874 0024 1B69 ldr r3, [r3, #16] 875 0026 03F08003 and r3, r3, #128 876 .loc 1 489 7 877 002a 002B cmp r3, #0 878 002c 01D0 beq .L50 490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** status = HAL_ERROR; 879 .loc 1 491 14 880 002e 0123 movs r3, #1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 25 881 0030 FB71 strb r3, [r7, #7] 882 .L50: 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; 883 .loc 1 495 10 884 0032 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 885 .loc 1 496 1 886 0034 1846 mov r0, r3 887 0036 0C37 adds r7, r7, #12 888 .LCFI30: 889 .cfi_def_cfa_offset 4 890 0038 BD46 mov sp, r7 891 .LCFI31: 892 .cfi_def_cfa_register 13 893 @ sp needed 894 003a 5DF8047B ldr r7, [sp], #4 895 .LCFI32: 896 .cfi_restore 7 897 .cfi_def_cfa_offset 0 898 003e 7047 bx lr 899 .L53: 900 .align 2 901 .L52: 902 0040 00200240 .word 1073881088 903 0044 23016745 .word 1164378403 904 0048 AB89EFCD .word -839939669 905 .cfi_endproc 906 .LFE135: 908 .section .text.HAL_FLASH_Lock,"ax",%progbits 909 .align 1 910 .global HAL_FLASH_Lock 911 .syntax unified 912 .thumb 913 .thumb_func 915 HAL_FLASH_Lock: 916 .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 **** { 917 .loc 1 503 1 918 .cfi_startproc 919 @ args = 0, pretend = 0, frame = 0 920 @ frame_needed = 1, uses_anonymous_args = 0 921 @ link register save eliminated. 922 0000 80B4 push {r7} 923 .LCFI33: 924 .cfi_def_cfa_offset 4 925 .cfi_offset 7, -4 926 0002 00AF add r7, sp, #0 927 .LCFI34: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 26 928 .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); 929 .loc 1 505 3 930 0004 054B ldr r3, .L56 931 0006 1B69 ldr r3, [r3, #16] 932 0008 044A ldr r2, .L56 933 000a 43F08003 orr r3, r3, #128 934 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; 935 .loc 1 507 10 936 0010 0023 movs r3, #0 508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 937 .loc 1 508 1 938 0012 1846 mov r0, r3 939 0014 BD46 mov sp, r7 940 .LCFI35: 941 .cfi_def_cfa_register 13 942 @ sp needed 943 0016 5DF8047B ldr r7, [sp], #4 944 .LCFI36: 945 .cfi_restore 7 946 .cfi_def_cfa_offset 0 947 001a 7047 bx lr 948 .L57: 949 .align 2 950 .L56: 951 001c 00200240 .word 1073881088 952 .cfi_endproc 953 .LFE136: 955 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 956 .align 1 957 .global HAL_FLASH_OB_Unlock 958 .syntax unified 959 .thumb 960 .thumb_func 962 HAL_FLASH_OB_Unlock: 963 .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 **** { 964 .loc 1 515 1 965 .cfi_startproc 966 @ args = 0, pretend = 0, frame = 0 967 @ frame_needed = 1, uses_anonymous_args = 0 968 @ link register save eliminated. 969 0000 80B4 push {r7} 970 .LCFI37: 971 .cfi_def_cfa_offset 4 972 .cfi_offset 7, -4 973 0002 00AF add r7, sp, #0 974 .LCFI38: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 27 975 .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)) 976 .loc 1 516 7 977 0004 094B ldr r3, .L62 978 0006 1B69 ldr r3, [r3, #16] 979 0008 03F40073 and r3, r3, #512 980 .loc 1 516 6 981 000c 002B cmp r3, #0 982 000e 07D1 bne .L59 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); 983 .loc 1 519 5 984 0010 064B ldr r3, .L62 985 0012 074A ldr r2, .L62+4 986 0014 9A60 str r2, [r3, #8] 520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** WRITE_REG(FLASH->OPTKEYR, FLASH_OPTKEY2); 987 .loc 1 520 5 988 0016 054B ldr r3, .L62 989 0018 064A ldr r2, .L62+8 990 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; 991 .loc 1 527 10 992 001c 0023 movs r3, #0 993 001e 00E0 b .L61 994 .L59: 524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 995 .loc 1 524 12 996 0020 0123 movs r3, #1 997 .L61: 528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 998 .loc 1 528 1 999 0022 1846 mov r0, r3 1000 0024 BD46 mov sp, r7 1001 .LCFI39: 1002 .cfi_def_cfa_register 13 1003 @ sp needed 1004 0026 5DF8047B ldr r7, [sp], #4 1005 .LCFI40: 1006 .cfi_restore 7 1007 .cfi_def_cfa_offset 0 1008 002a 7047 bx lr 1009 .L63: 1010 .align 2 1011 .L62: 1012 002c 00200240 .word 1073881088 1013 0030 23016745 .word 1164378403 1014 0034 AB89EFCD .word -839939669 1015 .cfi_endproc 1016 .LFE137: 1018 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 28 1019 .align 1 1020 .global HAL_FLASH_OB_Lock 1021 .syntax unified 1022 .thumb 1023 .thumb_func 1025 HAL_FLASH_OB_Lock: 1026 .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 **** { 1027 .loc 1 535 1 1028 .cfi_startproc 1029 @ args = 0, pretend = 0, frame = 0 1030 @ frame_needed = 1, uses_anonymous_args = 0 1031 @ link register save eliminated. 1032 0000 80B4 push {r7} 1033 .LCFI41: 1034 .cfi_def_cfa_offset 4 1035 .cfi_offset 7, -4 1036 0002 00AF add r7, sp, #0 1037 .LCFI42: 1038 .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); 1039 .loc 1 537 3 1040 0004 054B ldr r3, .L66 1041 0006 1B69 ldr r3, [r3, #16] 1042 0008 044A ldr r2, .L66 1043 000a 23F40073 bic r3, r3, #512 1044 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; 1045 .loc 1 539 10 1046 0010 0023 movs r3, #0 540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1047 .loc 1 540 1 1048 0012 1846 mov r0, r3 1049 0014 BD46 mov sp, r7 1050 .LCFI43: 1051 .cfi_def_cfa_register 13 1052 @ sp needed 1053 0016 5DF8047B ldr r7, [sp], #4 1054 .LCFI44: 1055 .cfi_restore 7 1056 .cfi_def_cfa_offset 0 1057 001a 7047 bx lr 1058 .L67: 1059 .align 2 1060 .L66: 1061 001c 00200240 .word 1073881088 1062 .cfi_endproc 1063 .LFE138: 1065 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 29 1066 .align 1 1067 .global HAL_FLASH_OB_Launch 1068 .syntax unified 1069 .thumb 1070 .thumb_func 1072 HAL_FLASH_OB_Launch: 1073 .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 **** { 1074 .loc 1 548 1 1075 .cfi_startproc 1076 @ args = 0, pretend = 0, frame = 0 1077 @ frame_needed = 1, uses_anonymous_args = 0 1078 0000 80B5 push {r7, lr} 1079 .LCFI45: 1080 .cfi_def_cfa_offset 8 1081 .cfi_offset 7, -8 1082 .cfi_offset 14, -4 1083 0002 00AF add r7, sp, #0 1084 .LCFI46: 1085 .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); 1086 .loc 1 550 3 1087 0004 064B ldr r3, .L70 1088 0006 1B69 ldr r3, [r3, #16] 1089 0008 054A ldr r2, .L70 1090 000a 43F40053 orr r3, r3, #8192 1091 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)); 1092 .loc 1 553 10 1093 0010 4CF25030 movw r0, #50000 1094 0014 FFF7FEFF bl FLASH_WaitForLastOperation 1095 0018 0346 mov r3, r0 554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1096 .loc 1 554 1 1097 001a 1846 mov r0, r3 1098 001c 80BD pop {r7, pc} 1099 .L71: 1100 001e 00BF .align 2 1101 .L70: 1102 0020 00200240 .word 1073881088 1103 .cfi_endproc 1104 .LFE139: 1106 .section .text.HAL_FLASH_GetError,"ax",%progbits 1107 .align 1 1108 .global HAL_FLASH_GetError 1109 .syntax unified 1110 .thumb ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 30 1111 .thumb_func 1113 HAL_FLASH_GetError: 1114 .LFB140: 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 **** { 1115 .loc 1 580 1 1116 .cfi_startproc 1117 @ args = 0, pretend = 0, frame = 0 1118 @ frame_needed = 1, uses_anonymous_args = 0 1119 @ link register save eliminated. 1120 0000 80B4 push {r7} 1121 .LCFI47: 1122 .cfi_def_cfa_offset 4 1123 .cfi_offset 7, -4 1124 0002 00AF add r7, sp, #0 1125 .LCFI48: 1126 .cfi_def_cfa_register 7 581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return pFlash.ErrorCode; 1127 .loc 1 581 17 1128 0004 034B ldr r3, .L74 1129 0006 DB69 ldr r3, [r3, #28] 582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1130 .loc 1 582 1 1131 0008 1846 mov r0, r3 1132 000a BD46 mov sp, r7 1133 .LCFI49: 1134 .cfi_def_cfa_register 13 1135 @ sp needed 1136 000c 5DF8047B ldr r7, [sp], #4 1137 .LCFI50: 1138 .cfi_restore 7 1139 .cfi_def_cfa_offset 0 1140 0010 7047 bx lr ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 31 1141 .L75: 1142 0012 00BF .align 2 1143 .L74: 1144 0014 00000000 .word pFlash 1145 .cfi_endproc 1146 .LFE140: 1148 .section .text.FLASH_Program_HalfWord,"ax",%progbits 1149 .align 1 1150 .syntax unified 1151 .thumb 1152 .thumb_func 1154 FLASH_Program_HalfWord: 1155 .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 **** { 1156 .loc 1 603 1 1157 .cfi_startproc 1158 @ args = 0, pretend = 0, frame = 8 1159 @ frame_needed = 1, uses_anonymous_args = 0 1160 @ link register save eliminated. 1161 0000 80B4 push {r7} 1162 .LCFI51: 1163 .cfi_def_cfa_offset 4 1164 .cfi_offset 7, -4 1165 0002 83B0 sub sp, sp, #12 1166 .LCFI52: 1167 .cfi_def_cfa_offset 16 1168 0004 00AF add r7, sp, #0 1169 .LCFI53: 1170 .cfi_def_cfa_register 7 1171 0006 7860 str r0, [r7, #4] 1172 0008 0B46 mov r3, r1 1173 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; 1174 .loc 1 605 20 1175 000c 084B ldr r3, .L77 1176 000e 0022 movs r2, #0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 32 1177 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); 1178 .loc 1 608 5 1179 0012 084B ldr r3, .L77+4 1180 0014 1B69 ldr r3, [r3, #16] 1181 0016 074A ldr r2, .L77+4 1182 0018 43F00103 orr r3, r3, #1 1183 001c 1361 str r3, [r2, #16] 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; 1184 .loc 1 611 4 1185 001e 7B68 ldr r3, [r7, #4] 1186 .loc 1 611 28 1187 0020 7A88 ldrh r2, [r7, #2] @ movhi 1188 0022 1A80 strh r2, [r3] @ movhi 612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1189 .loc 1 612 1 1190 0024 00BF nop 1191 0026 0C37 adds r7, r7, #12 1192 .LCFI54: 1193 .cfi_def_cfa_offset 4 1194 0028 BD46 mov sp, r7 1195 .LCFI55: 1196 .cfi_def_cfa_register 13 1197 @ sp needed 1198 002a 5DF8047B ldr r7, [sp], #4 1199 .LCFI56: 1200 .cfi_restore 7 1201 .cfi_def_cfa_offset 0 1202 002e 7047 bx lr 1203 .L78: 1204 .align 2 1205 .L77: 1206 0030 00000000 .word pFlash 1207 0034 00200240 .word 1073881088 1208 .cfi_endproc 1209 .LFE141: 1211 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 1212 .align 1 1213 .global FLASH_WaitForLastOperation 1214 .syntax unified 1215 .thumb 1216 .thumb_func 1218 FLASH_WaitForLastOperation: 1219 .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 **** { 1220 .loc 1 620 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 33 1221 .cfi_startproc 1222 @ args = 0, pretend = 0, frame = 16 1223 @ frame_needed = 1, uses_anonymous_args = 0 1224 0000 80B5 push {r7, lr} 1225 .LCFI57: 1226 .cfi_def_cfa_offset 8 1227 .cfi_offset 7, -8 1228 .cfi_offset 14, -4 1229 0002 84B0 sub sp, sp, #16 1230 .LCFI58: 1231 .cfi_def_cfa_offset 24 1232 0004 00AF add r7, sp, #0 1233 .LCFI59: 1234 .cfi_def_cfa_register 7 1235 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. 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(); 1236 .loc 1 625 24 1237 0008 FFF7FEFF bl HAL_GetTick 1238 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)) 1239 .loc 1 627 8 1240 000e 10E0 b .L80 1241 .L83: 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) 1242 .loc 1 629 8 1243 0010 7B68 ldr r3, [r7, #4] 1244 0012 B3F1FF3F cmp r3, #-1 1245 0016 0CD0 beq .L80 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)) 1246 .loc 1 631 9 1247 0018 7B68 ldr r3, [r7, #4] 1248 001a 002B cmp r3, #0 1249 001c 07D0 beq .L81 1250 .loc 1 631 31 discriminator 1 1251 001e FFF7FEFF bl HAL_GetTick 1252 0022 0246 mov r2, r0 1253 .loc 1 631 44 discriminator 1 1254 0024 FB68 ldr r3, [r7, #12] 1255 0026 D31A subs r3, r2, r3 1256 .loc 1 631 26 discriminator 1 1257 0028 7A68 ldr r2, [r7, #4] 1258 002a 9A42 cmp r2, r3 1259 002c 01D2 bcs .L80 1260 .L81: 632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_TIMEOUT; 1261 .loc 1 633 16 1262 002e 0323 movs r3, #3 1263 0030 1FE0 b .L82 1264 .L80: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 34 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 1265 .loc 1 627 9 1266 0032 124B ldr r3, .L87 1267 0034 DB68 ldr r3, [r3, #12] 1268 0036 03F00103 and r3, r3, #1 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** { 1269 .loc 1 627 8 1270 003a 012B cmp r3, #1 1271 003c E8D0 beq .L83 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)) 1272 .loc 1 639 7 1273 003e 0F4B ldr r3, .L87 1274 0040 DB68 ldr r3, [r3, #12] 1275 0042 03F02003 and r3, r3, #32 1276 .loc 1 639 6 1277 0046 202B cmp r3, #32 1278 0048 02D1 bne .L84 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); 1279 .loc 1 642 5 1280 004a 0C4B ldr r3, .L87 1281 004c 2022 movs r2, #32 1282 004e DA60 str r2, [r3, #12] 1283 .L84: 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) || 1284 .loc 1 645 6 1285 0050 0A4B ldr r3, .L87 1286 0052 DB68 ldr r3, [r3, #12] 1287 0054 03F01003 and r3, r3, #16 1288 .loc 1 645 5 1289 0058 102B cmp r3, #16 1290 005a 05D0 beq .L85 646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR)) 1291 .loc 1 646 6 discriminator 1 1292 005c 074B ldr r3, .L87 1293 005e DB68 ldr r3, [r3, #12] 1294 0060 03F00403 and r3, r3, #4 645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** __HAL_FLASH_GET_FLAG(FLASH_FLAG_PGERR)) 1295 .loc 1 645 47 discriminator 1 1296 0064 042B cmp r3, #4 1297 0066 03D1 bne .L86 1298 .L85: 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(); 1299 .loc 1 649 5 1300 0068 FFF7FEFF bl FLASH_SetErrorCode 650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** return HAL_ERROR; 1301 .loc 1 650 12 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 35 1302 006c 0123 movs r3, #1 1303 006e 00E0 b .L82 1304 .L86: 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; 1305 .loc 1 654 10 1306 0070 0023 movs r3, #0 1307 .L82: 655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1308 .loc 1 655 1 1309 0072 1846 mov r0, r3 1310 0074 1037 adds r7, r7, #16 1311 .LCFI60: 1312 .cfi_def_cfa_offset 8 1313 0076 BD46 mov sp, r7 1314 .LCFI61: 1315 .cfi_def_cfa_register 13 1316 @ sp needed 1317 0078 80BD pop {r7, pc} 1318 .L88: 1319 007a 00BF .align 2 1320 .L87: 1321 007c 00200240 .word 1073881088 1322 .cfi_endproc 1323 .LFE142: 1325 .section .text.FLASH_SetErrorCode,"ax",%progbits 1326 .align 1 1327 .syntax unified 1328 .thumb 1329 .thumb_func 1331 FLASH_SetErrorCode: 1332 .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 **** { 1333 .loc 1 663 1 1334 .cfi_startproc 1335 @ args = 0, pretend = 0, frame = 8 1336 @ frame_needed = 1, uses_anonymous_args = 0 1337 @ link register save eliminated. 1338 0000 80B4 push {r7} 1339 .LCFI62: 1340 .cfi_def_cfa_offset 4 1341 .cfi_offset 7, -4 1342 0002 83B0 sub sp, sp, #12 1343 .LCFI63: 1344 .cfi_def_cfa_offset 16 1345 0004 00AF add r7, sp, #0 1346 .LCFI64: 1347 .cfi_def_cfa_register 7 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 36 664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** uint32_t flags = 0U; 1348 .loc 1 664 12 1349 0006 0023 movs r3, #0 1350 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)) 1351 .loc 1 666 6 1352 000a 144B ldr r3, .L92 1353 000c DB68 ldr r3, [r3, #12] 1354 000e 03F01003 and r3, r3, #16 1355 .loc 1 666 5 1356 0012 102B cmp r3, #16 1357 0014 09D1 bne .L90 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; 1358 .loc 1 668 22 1359 0016 124B ldr r3, .L92+4 1360 0018 DB69 ldr r3, [r3, #28] 1361 001a 43F00203 orr r3, r3, #2 1362 001e 104A ldr r2, .L92+4 1363 0020 D361 str r3, [r2, #28] 669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** flags |= FLASH_FLAG_WRPERR; 1364 .loc 1 669 11 1365 0022 7B68 ldr r3, [r7, #4] 1366 0024 43F01003 orr r3, r3, #16 1367 0028 7B60 str r3, [r7, #4] 1368 .L90: 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)) 1369 .loc 1 671 6 1370 002a 0C4B ldr r3, .L92 1371 002c DB68 ldr r3, [r3, #12] 1372 002e 03F00403 and r3, r3, #4 1373 .loc 1 671 5 1374 0032 042B cmp r3, #4 1375 0034 09D1 bne .L91 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; 1376 .loc 1 673 22 1377 0036 0A4B ldr r3, .L92+4 1378 0038 DB69 ldr r3, [r3, #28] 1379 003a 43F00103 orr r3, r3, #1 1380 003e 084A ldr r2, .L92+4 1381 0040 D361 str r3, [r2, #28] 674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** flags |= FLASH_FLAG_PGERR; 1382 .loc 1 674 11 1383 0042 7B68 ldr r3, [r7, #4] 1384 0044 43F00403 orr r3, r3, #4 1385 0048 7B60 str r3, [r7, #4] 1386 .L91: 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); 1387 .loc 1 677 3 1388 004a 044A ldr r2, .L92 1389 004c 7B68 ldr r3, [r7, #4] 1390 004e D360 str r3, [r2, #12] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 37 678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash.c **** } 1391 .loc 1 678 1 1392 0050 00BF nop 1393 0052 0C37 adds r7, r7, #12 1394 .LCFI65: 1395 .cfi_def_cfa_offset 4 1396 0054 BD46 mov sp, r7 1397 .LCFI66: 1398 .cfi_def_cfa_register 13 1399 @ sp needed 1400 0056 5DF8047B ldr r7, [sp], #4 1401 .LCFI67: 1402 .cfi_restore 7 1403 .cfi_def_cfa_offset 0 1404 005a 7047 bx lr 1405 .L93: 1406 .align 2 1407 .L92: 1408 005c 00200240 .word 1073881088 1409 0060 00000000 .word pFlash 1410 .cfi_endproc 1411 .LFE143: 1413 .text 1414 .Letext0: 1415 .file 2 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 1416 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 1417 .file 4 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 1418 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h" 1419 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 1420 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_flash.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s page 38 DEFINED SYMBOLS *ABS*:00000000 stm32f3xx_hal_flash.c C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:24 .bss.pFlash:00000000 pFlash C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:21 .bss.pFlash:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:27 .rodata:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:32 .text.HAL_FLASH_Program:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:38 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1218 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1154 .text.FLASH_Program_HalfWord:00000000 FLASH_Program_HalfWord C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:251 .text.HAL_FLASH_Program:00000130 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:262 .text.HAL_FLASH_Program_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:268 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:432 .text.HAL_FLASH_Program_IT:000000e0 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:443 .text.HAL_FLASH_IRQHandler:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:449 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1331 .text.FLASH_SetErrorCode:00000000 FLASH_SetErrorCode C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:795 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:753 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:741 .text.HAL_FLASH_IRQHandler:000001c0 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:747 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:789 .text.HAL_FLASH_OperationErrorCallback:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:831 .text.HAL_FLASH_Unlock:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:837 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:902 .text.HAL_FLASH_Unlock:00000040 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:909 .text.HAL_FLASH_Lock:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:915 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:951 .text.HAL_FLASH_Lock:0000001c $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:956 .text.HAL_FLASH_OB_Unlock:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:962 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1012 .text.HAL_FLASH_OB_Unlock:0000002c $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1019 .text.HAL_FLASH_OB_Lock:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1025 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1061 .text.HAL_FLASH_OB_Lock:0000001c $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1066 .text.HAL_FLASH_OB_Launch:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1072 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1102 .text.HAL_FLASH_OB_Launch:00000020 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1107 .text.HAL_FLASH_GetError:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1113 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1144 .text.HAL_FLASH_GetError:00000014 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1149 .text.FLASH_Program_HalfWord:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1206 .text.FLASH_Program_HalfWord:00000030 $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1212 .text.FLASH_WaitForLastOperation:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1321 .text.FLASH_WaitForLastOperation:0000007c $d C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1326 .text.FLASH_SetErrorCode:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccW07dMO.s:1408 .text.FLASH_SetErrorCode:0000005c $d UNDEFINED SYMBOLS assert_failed FLASH_PageErase HAL_GetTick