ARM GAS /tmp/ccCfNgvn.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, 1 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "stm32f4xx_hal_flash.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .section .text.FLASH_Program_DoubleWord,"ax",%progbits 20 .align 1 21 .syntax unified 22 .thumb 23 .thumb_func 25 FLASH_Program_DoubleWord: 26 .LVL0: 27 .LFB142: 28 .file 1 "Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c" 1:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 2:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 3:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @file stm32f4xx_hal_flash.c 4:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @author MCD Application Team 5:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver. 6:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * functionalities of the internal FLASH memory: 8:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Program operations functions 9:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Memory Control functions 10:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Peripheral Errors functions 11:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 12:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 13:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 14:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### FLASH peripheral features ##### 15:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 16:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 17:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses 18:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations 19:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** and the read and write protection mechanisms. 20:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 21:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction 22:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** prefetch and cache lines. 23:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 24:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The FLASH main features are: 25:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Flash memory read operations 26:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Flash memory program/erase operations 27:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Read / write protections 28:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Prefetch on I-Code 29:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) 64 cache lines of 128 bits on I-Code 30:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) 8 cache lines of 128 bits on D-Code ARM GAS /tmp/ccCfNgvn.s page 2 31:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 32:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 33:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### How to use this driver ##### 34:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 35:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 36:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH 37:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory of all STM32F4xx devices. 38:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 39:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) FLASH Memory IO Programming functions: 40:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and 41:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_Lock() functions 42:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Program functions: byte, half word, word and double word 43:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) There Two modes of programming : 44:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function 45:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function 46:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 47:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) Interrupts and flags management functions : 48:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() 49:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status 50:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Get error flag status by calling HAL_SetErrorCode() 51:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 52:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 53:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing 54:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to handle the following operations: 55:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Set the latency 56:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer 57:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache 58:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache 59:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts 60:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Monitor the FLASH flags status 61:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 62:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 63:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 64:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @attention 65:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 66:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *

© Copyright (c) 2017 STMicroelectronics. 67:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * All rights reserved.

68:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 69:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This software component is licensed by ST under BSD 3-Clause license, 70:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the "License"; You may not use this file except in compliance with the 71:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * License. You may obtain a copy of the License at: 72:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * opensource.org/licenses/BSD-3-Clause 73:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 74:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 75:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 76:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 77:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/ 78:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #include "stm32f4xx_hal.h" 79:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 80:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup STM32F4xx_HAL_Driver 81:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 82:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 83:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 84:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH FLASH 85:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver 86:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 87:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ ARM GAS /tmp/ccCfNgvn.s page 3 88:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 89:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED 90:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 91:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ 92:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ 93:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants 94:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 95:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 96:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE 50000U /* 50 s */ 97:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 98:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 99:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 100:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/ 101:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ 102:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Variables 103:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 104:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 105:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Variable used for Erase sectors under interruption */ 106:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash; 107:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 108:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 109:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 110:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 111:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/ 112:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions 113:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 114:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 115:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program operations */ 116:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); 117:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data); 118:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); 119:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data); 120:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void); 121:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 122:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); 123:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 124:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 125:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 126:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 127:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Exported functions --------------------------------------------------------*/ 128:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions 129:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 130:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 131:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 132:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 133:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Programming operation functions 134:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 135:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 136:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 137:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Programming operation functions ##### 138:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 139:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 140:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH 141:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** program operations. 142:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 143:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 144:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ ARM GAS /tmp/ccCfNgvn.s page 4 145:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 146:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 147:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 148:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address 149:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 150:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 151:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 152:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 153:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 154:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 156:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 158:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 160:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Locked */ 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_LOCK(&pFlash); 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 163:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 164:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 168:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(status == HAL_OK) 170:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_BYTE) 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 173:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 175:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 180:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 183:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 185:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 188:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 190:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 192:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 195:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG); 197:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 199:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Unlocked */ 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccCfNgvn.s page 5 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 204:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 206:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address with interrupt ena 207:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 208:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 209:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 210:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 211:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 212:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 214:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 218:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Locked */ 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_LOCK(&pFlash); 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 221:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 222:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 223:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 224:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable End of FLASH Operation interrupt */ 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 227:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable Error source interrupt */ 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); 229:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_BYTE) 234:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 237:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 239:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 242:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 244:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 247:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 249:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 250:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 252:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 253:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 256:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 258:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. ARM GAS /tmp/ccCfNgvn.s page 6 259:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 260:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 261:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 263:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 264:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 265:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH operation error flags */ 266:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 267:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 268:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 271:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty sector*/ 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 281:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty bank*/ 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Bank; 284:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 286:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 287:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty address*/ 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Address; 289:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 291:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the Error code*/ 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 294:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH error interrupt user callback */ 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(addresstmp); 296:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Stop the procedure ongoing*/ 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 299:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 301:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 303:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 306:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Nb of sector to erased can be decreased*/ 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.NbSectorsToErase--; 311:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check if there are still sectors to erase*/ 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.NbSectorsToErase != 0U) 314:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; ARM GAS /tmp/ccCfNgvn.s page 7 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 318:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 319:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Increment sector number*/ 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector++; 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 325:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 326:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*No more sectors to Erase, user callback can be called.*/ 327:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Reset Sector and stop Erase sectors procedure*/ 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = addresstmp = 0xFFFFFFFFU; 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches() ; 333:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 334:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 336:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 337:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 338:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 339:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 341:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* MassErase ended. Return the selected bank */ 343:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches() ; 345:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 346:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Bank); 348:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 351:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program ended. Return the selected address*/ 352:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 356:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 358:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) 360:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Operation is completed, disable the PG, SER, SNB and MER Bits */ 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, (FLASH_CR_PG | FLASH_CR_SER | FLASH_CR_SNB | FLASH_MER_BIT)); 363:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 364:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable End of FLASH Operation interrupt */ 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP); 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 367:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable Error source interrupt */ 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR); 369:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 370:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Unlocked */ 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 372:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccCfNgvn.s page 8 373:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 374:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 375:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 376:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback 377:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 378:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 379:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector which has been erased 380:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * (if 0xFFFFFFFFU, it means that all the selected sectors have been erased) 381:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 382:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 383:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 384:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 386:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 387:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 388:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 389:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file 390:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 391:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 392:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 393:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 394:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH operation error interrupt callback 395:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 396:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 397:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector number which returned an error 398:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 399:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 400:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 401:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 403:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 404:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 405:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 406:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file 407:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 408:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 409:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 410:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 411:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 412:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 413:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 414:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions 415:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief management functions 416:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 417:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 418:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 419:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Control functions ##### 420:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 421:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 422:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH 423:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory operations. 424:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 425:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 426:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 427:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 428:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 429:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** ARM GAS /tmp/ccCfNgvn.s page 9 430:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Unlock the FLASH control register access 431:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 432:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 433:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 438:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 439:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorize the FLASH Registers access */ 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1); 441:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 442:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Verify Flash is unlocked */ 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 445:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 446:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = HAL_ERROR; 447:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 448:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 449:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 451:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 452:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 453:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 454:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Locks the FLASH control register access 455:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 456:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 457:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) 458:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_LOCK; 461:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 464:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 465:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 466:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access. 467:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 468:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 469:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 472:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 473:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorizes the Option Byte register programming */ 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY1; 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 476:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 477:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 478:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 479:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 480:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 481:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 483:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 484:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 485:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 486:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access. ARM GAS /tmp/ccCfNgvn.s page 10 487:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 488:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 489:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) 490:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK; 493:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 495:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 496:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 497:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 498:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Launch the option byte loading. 499:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 500:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 501:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) 502:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 503:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t *)OPTCR_BYTE0_ADDRESS |= FLASH_OPTCR_OPTSTRT; 505:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 506:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); 508:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 509:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 510:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 511:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 512:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 513:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 514:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions 515:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Peripheral Errors functions 516:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 517:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 518:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 519:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Errors functions ##### 520:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 521:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 522:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral. 523:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 524:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 525:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 526:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 527:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 528:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 529:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Get the specific FLASH error flag. 530:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval FLASH_ErrorCode: The returned value can be a combination of: 531:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH Read Protection error flag (PCROP) 532:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming Sequence error flag 533:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGP: FLASH Programming Parallelism error flag 534:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag 535:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag 536:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag 537:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 538:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 541:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 542:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 543:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** ARM GAS /tmp/ccCfNgvn.s page 11 544:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 546:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 547:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 548:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. 549:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Timeout maximum flash operationtimeout 550:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 551:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 552:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 554:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 556:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear Error Code */ 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 558:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 559:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 560:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** flag will be set */ 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Get tick */ 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** tickstart = HAL_GetTick(); 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) 566:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY) 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if((Timeout == 0U)||((HAL_GetTick() - tickstart ) > Timeout)) 570:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_TIMEOUT; 572:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 573:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 574:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 575:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 578:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 579:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 580:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 581:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 583:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 584:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 585:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 587:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 588:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 589:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 590:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the error code*/ 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 593:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 594:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 595:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If there is no error flag set */ 596:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 597:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 598:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 599:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 600:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** ARM GAS /tmp/ccCfNgvn.s page 12 601:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program a double word (64-bit) at a specified address. 602:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 603:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V and Vpp in the range 7V to 9V. 604:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 605:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 606:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 607:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 608:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 609:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 610:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 611:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 612:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) 613:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 29 .loc 1 613 1 view -0 30 .cfi_startproc 31 @ args = 0, pretend = 0, frame = 0 32 @ frame_needed = 0, uses_anonymous_args = 0 33 @ link register save eliminated. 34 .loc 1 613 1 is_stmt 0 view .LVU1 35 0000 10B4 push {r4} 36 .LCFI0: 37 .cfi_def_cfa_offset 4 38 .cfi_offset 4, -4 614:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 615:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 39 .loc 1 615 3 is_stmt 1 view .LVU2 616:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 617:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 618:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 40 .loc 1 618 3 view .LVU3 41 0002 0949 ldr r1, .L3 42 0004 0C69 ldr r4, [r1, #16] 43 0006 24F44074 bic r4, r4, #768 44 000a 0C61 str r4, [r1, #16] 619:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; 45 .loc 1 619 3 view .LVU4 46 .loc 1 619 13 is_stmt 0 view .LVU5 47 000c 0C69 ldr r4, [r1, #16] 48 000e 44F44074 orr r4, r4, #768 49 0012 0C61 str r4, [r1, #16] 620:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 50 .loc 1 620 3 is_stmt 1 view .LVU6 51 .loc 1 620 13 is_stmt 0 view .LVU7 52 0014 0C69 ldr r4, [r1, #16] 53 0016 44F00104 orr r4, r4, #1 54 001a 0C61 str r4, [r1, #16] 621:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 622:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program the double-word */ 623:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)Address = (uint32_t)Data; 55 .loc 1 623 3 is_stmt 1 view .LVU8 56 .loc 1 623 28 is_stmt 0 view .LVU9 57 001c 0260 str r2, [r0] 624:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32); 58 .loc 1 624 3 is_stmt 1 view .LVU10 59 .loc 1 624 32 is_stmt 0 view .LVU11 60 001e 4360 str r3, [r0, #4] 625:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccCfNgvn.s page 13 61 .loc 1 625 1 view .LVU12 62 0020 5DF8044B ldr r4, [sp], #4 63 .LCFI1: 64 .cfi_restore 4 65 .cfi_def_cfa_offset 0 66 0024 7047 bx lr 67 .L4: 68 0026 00BF .align 2 69 .L3: 70 0028 003C0240 .word 1073888256 71 .cfi_endproc 72 .LFE142: 74 .section .text.FLASH_Program_Word,"ax",%progbits 75 .align 1 76 .syntax unified 77 .thumb 78 .thumb_func 80 FLASH_Program_Word: 81 .LVL1: 82 .LFB143: 626:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 627:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 628:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 629:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program word (32-bit) at a specified address. 630:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 631:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V. 632:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 633:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 634:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 635:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 636:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 637:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 638:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 639:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 640:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data) 641:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 83 .loc 1 641 1 is_stmt 1 view -0 84 .cfi_startproc 85 @ args = 0, pretend = 0, frame = 0 86 @ frame_needed = 0, uses_anonymous_args = 0 87 @ link register save eliminated. 642:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 643:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 88 .loc 1 643 3 view .LVU14 644:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 645:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 646:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 89 .loc 1 646 3 view .LVU15 90 0000 074B ldr r3, .L6 91 0002 1A69 ldr r2, [r3, #16] 92 0004 22F44072 bic r2, r2, #768 93 0008 1A61 str r2, [r3, #16] 647:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD; 94 .loc 1 647 3 view .LVU16 95 .loc 1 647 13 is_stmt 0 view .LVU17 96 000a 1A69 ldr r2, [r3, #16] 97 000c 42F40072 orr r2, r2, #512 ARM GAS /tmp/ccCfNgvn.s page 14 98 0010 1A61 str r2, [r3, #16] 648:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 99 .loc 1 648 3 is_stmt 1 view .LVU18 100 .loc 1 648 13 is_stmt 0 view .LVU19 101 0012 1A69 ldr r2, [r3, #16] 102 0014 42F00102 orr r2, r2, #1 103 0018 1A61 str r2, [r3, #16] 649:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 650:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)Address = Data; 104 .loc 1 650 3 is_stmt 1 view .LVU20 105 .loc 1 650 28 is_stmt 0 view .LVU21 106 001a 0160 str r1, [r0] 651:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 107 .loc 1 651 1 view .LVU22 108 001c 7047 bx lr 109 .L7: 110 001e 00BF .align 2 111 .L6: 112 0020 003C0240 .word 1073888256 113 .cfi_endproc 114 .LFE143: 116 .section .text.FLASH_Program_HalfWord,"ax",%progbits 117 .align 1 118 .syntax unified 119 .thumb 120 .thumb_func 122 FLASH_Program_HalfWord: 123 .LVL2: 124 .LFB144: 652:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 653:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 654:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address. 655:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 656:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.1V to 3.6V. 657:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 658:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 659:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 660:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 661:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 662:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 663:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 664:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 665:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) 666:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 125 .loc 1 666 1 is_stmt 1 view -0 126 .cfi_startproc 127 @ args = 0, pretend = 0, frame = 0 128 @ frame_needed = 0, uses_anonymous_args = 0 129 @ link register save eliminated. 667:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 668:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 130 .loc 1 668 3 view .LVU24 669:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 670:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 671:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 131 .loc 1 671 3 view .LVU25 132 0000 074B ldr r3, .L9 ARM GAS /tmp/ccCfNgvn.s page 15 133 0002 1A69 ldr r2, [r3, #16] 134 0004 22F44072 bic r2, r2, #768 135 0008 1A61 str r2, [r3, #16] 672:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD; 136 .loc 1 672 3 view .LVU26 137 .loc 1 672 13 is_stmt 0 view .LVU27 138 000a 1A69 ldr r2, [r3, #16] 139 000c 42F48072 orr r2, r2, #256 140 0010 1A61 str r2, [r3, #16] 673:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 141 .loc 1 673 3 is_stmt 1 view .LVU28 142 .loc 1 673 13 is_stmt 0 view .LVU29 143 0012 1A69 ldr r2, [r3, #16] 144 0014 42F00102 orr r2, r2, #1 145 0018 1A61 str r2, [r3, #16] 674:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 675:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint16_t*)Address = Data; 146 .loc 1 675 3 is_stmt 1 view .LVU30 147 .loc 1 675 28 is_stmt 0 view .LVU31 148 001a 0180 strh r1, [r0] @ movhi 676:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 149 .loc 1 676 1 view .LVU32 150 001c 7047 bx lr 151 .L10: 152 001e 00BF .align 2 153 .L9: 154 0020 003C0240 .word 1073888256 155 .cfi_endproc 156 .LFE144: 158 .section .text.FLASH_Program_Byte,"ax",%progbits 159 .align 1 160 .syntax unified 161 .thumb 162 .thumb_func 164 FLASH_Program_Byte: 165 .LVL3: 166 .LFB145: 677:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 678:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 679:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte (8-bit) at a specified address. 680:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 681:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 1.8V to 3.6V. 682:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 683:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 684:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 685:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 686:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 687:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 688:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 689:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 690:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) 691:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 167 .loc 1 691 1 is_stmt 1 view -0 168 .cfi_startproc 169 @ args = 0, pretend = 0, frame = 0 170 @ frame_needed = 0, uses_anonymous_args = 0 171 @ link register save eliminated. ARM GAS /tmp/ccCfNgvn.s page 16 692:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 693:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 172 .loc 1 693 3 view .LVU34 694:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 695:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 696:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 173 .loc 1 696 3 view .LVU35 174 0000 064B ldr r3, .L12 175 0002 1A69 ldr r2, [r3, #16] 176 0004 22F44072 bic r2, r2, #768 177 0008 1A61 str r2, [r3, #16] 697:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE; 178 .loc 1 697 3 view .LVU36 179 .loc 1 697 13 is_stmt 0 view .LVU37 180 000a 1A69 ldr r2, [r3, #16] 181 000c 1A61 str r2, [r3, #16] 698:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 182 .loc 1 698 3 is_stmt 1 view .LVU38 183 .loc 1 698 13 is_stmt 0 view .LVU39 184 000e 1A69 ldr r2, [r3, #16] 185 0010 42F00102 orr r2, r2, #1 186 0014 1A61 str r2, [r3, #16] 699:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 700:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t*)Address = Data; 187 .loc 1 700 3 is_stmt 1 view .LVU40 188 .loc 1 700 27 is_stmt 0 view .LVU41 189 0016 0170 strb r1, [r0] 701:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 190 .loc 1 701 1 view .LVU42 191 0018 7047 bx lr 192 .L13: 193 001a 00BF .align 2 194 .L12: 195 001c 003C0240 .word 1073888256 196 .cfi_endproc 197 .LFE145: 199 .section .text.FLASH_SetErrorCode,"ax",%progbits 200 .align 1 201 .syntax unified 202 .thumb 203 .thumb_func 205 FLASH_SetErrorCode: 206 .LFB146: 702:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 703:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 704:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Set the specific FLASH error flag. 705:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 706:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 707:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void) 708:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 207 .loc 1 708 1 is_stmt 1 view -0 208 .cfi_startproc 209 @ args = 0, pretend = 0, frame = 0 210 @ frame_needed = 0, uses_anonymous_args = 0 211 @ link register save eliminated. 709:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) 212 .loc 1 709 3 view .LVU44 ARM GAS /tmp/ccCfNgvn.s page 17 213 .loc 1 709 6 is_stmt 0 view .LVU45 214 0000 204B ldr r3, .L20 215 0002 DB68 ldr r3, [r3, #12] 216 .loc 1 709 5 view .LVU46 217 0004 13F0100F tst r3, #16 218 0008 07D0 beq .L15 710:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 711:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 219 .loc 1 711 4 is_stmt 1 view .LVU47 220 .loc 1 711 21 is_stmt 0 view .LVU48 221 000a 1F4A ldr r2, .L20+4 222 000c D369 ldr r3, [r2, #28] 223 000e 43F01003 orr r3, r3, #16 224 0012 D361 str r3, [r2, #28] 712:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 713:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH write protection error pending bit */ 714:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR); 225 .loc 1 714 4 is_stmt 1 view .LVU49 226 0014 1B4B ldr r3, .L20 227 0016 1022 movs r2, #16 228 0018 DA60 str r2, [r3, #12] 229 .L15: 715:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 716:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 717:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) 230 .loc 1 717 3 view .LVU50 231 .loc 1 717 6 is_stmt 0 view .LVU51 232 001a 1A4B ldr r3, .L20 233 001c DB68 ldr r3, [r3, #12] 234 .loc 1 717 5 view .LVU52 235 001e 13F0200F tst r3, #32 236 0022 07D0 beq .L16 718:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 719:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 237 .loc 1 719 4 is_stmt 1 view .LVU53 238 .loc 1 719 21 is_stmt 0 view .LVU54 239 0024 184A ldr r2, .L20+4 240 0026 D369 ldr r3, [r2, #28] 241 0028 43F00803 orr r3, r3, #8 242 002c D361 str r3, [r2, #28] 720:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 721:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming alignment error pending bit */ 722:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGAERR); 243 .loc 1 722 4 is_stmt 1 view .LVU55 244 002e 154B ldr r3, .L20 245 0030 2022 movs r2, #32 246 0032 DA60 str r2, [r3, #12] 247 .L16: 723:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 724:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 725:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) 248 .loc 1 725 3 view .LVU56 249 .loc 1 725 6 is_stmt 0 view .LVU57 250 0034 134B ldr r3, .L20 251 0036 DB68 ldr r3, [r3, #12] 252 .loc 1 725 5 view .LVU58 253 0038 13F0400F tst r3, #64 ARM GAS /tmp/ccCfNgvn.s page 18 254 003c 07D0 beq .L17 726:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 727:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; 255 .loc 1 727 5 is_stmt 1 view .LVU59 256 .loc 1 727 22 is_stmt 0 view .LVU60 257 003e 124A ldr r2, .L20+4 258 0040 D369 ldr r3, [r2, #28] 259 0042 43F00403 orr r3, r3, #4 260 0046 D361 str r3, [r2, #28] 728:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 729:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming parallelism error pending bit */ 730:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGPERR); 261 .loc 1 730 5 is_stmt 1 view .LVU61 262 0048 0E4B ldr r3, .L20 263 004a 4022 movs r2, #64 264 004c DA60 str r2, [r3, #12] 265 .L17: 731:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 732:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 733:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGSERR) != RESET) 266 .loc 1 733 3 view .LVU62 267 .loc 1 733 6 is_stmt 0 view .LVU63 268 004e 0D4B ldr r3, .L20 269 0050 DB68 ldr r3, [r3, #12] 270 .loc 1 733 5 view .LVU64 271 0052 13F0800F tst r3, #128 272 0056 07D0 beq .L18 734:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 735:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGS; 273 .loc 1 735 5 is_stmt 1 view .LVU65 274 .loc 1 735 22 is_stmt 0 view .LVU66 275 0058 0B4A ldr r2, .L20+4 276 005a D369 ldr r3, [r2, #28] 277 005c 43F00203 orr r3, r3, #2 278 0060 D361 str r3, [r2, #28] 736:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 737:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming sequence error pending bit */ 738:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR); 279 .loc 1 738 5 is_stmt 1 view .LVU67 280 0062 084B ldr r3, .L20 281 0064 8022 movs r2, #128 282 0066 DA60 str r2, [r3, #12] 283 .L18: 739:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 740:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 741:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) 742:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 743:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 744:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 745:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Proprietary readout protection error pending bit */ 746:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_RDERR); 747:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 748:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 749:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) 284 .loc 1 749 3 view .LVU68 285 .loc 1 749 6 is_stmt 0 view .LVU69 286 0068 064B ldr r3, .L20 ARM GAS /tmp/ccCfNgvn.s page 19 287 006a DB68 ldr r3, [r3, #12] 288 .loc 1 749 5 view .LVU70 289 006c 13F0020F tst r3, #2 290 0070 07D0 beq .L14 750:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 751:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; 291 .loc 1 751 5 is_stmt 1 view .LVU71 292 .loc 1 751 22 is_stmt 0 view .LVU72 293 0072 054A ldr r2, .L20+4 294 0074 D369 ldr r3, [r2, #28] 295 0076 43F02003 orr r3, r3, #32 296 007a D361 str r3, [r2, #28] 752:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 753:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Operation error pending bit */ 754:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPERR); 297 .loc 1 754 5 is_stmt 1 view .LVU73 298 007c 014B ldr r3, .L20 299 007e 0222 movs r2, #2 300 0080 DA60 str r2, [r3, #12] 301 .L14: 755:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 756:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 302 .loc 1 756 1 is_stmt 0 view .LVU74 303 0082 7047 bx lr 304 .L21: 305 .align 2 306 .L20: 307 0084 003C0240 .word 1073888256 308 0088 00000000 .word .LANCHOR0 309 .cfi_endproc 310 .LFE146: 312 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 313 .align 1 314 .global HAL_FLASH_Program_IT 315 .syntax unified 316 .thumb 317 .thumb_func 319 HAL_FLASH_Program_IT: 320 .LVL4: 321 .LFB131: 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 322 .loc 1 215 1 is_stmt 1 view -0 323 .cfi_startproc 324 @ args = 0, pretend = 0, frame = 0 325 @ frame_needed = 0, uses_anonymous_args = 0 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 326 .loc 1 215 1 is_stmt 0 view .LVU76 327 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 328 .LCFI2: 329 .cfi_def_cfa_offset 24 330 .cfi_offset 3, -24 331 .cfi_offset 4, -20 332 .cfi_offset 5, -16 333 .cfi_offset 6, -12 334 .cfi_offset 7, -8 335 .cfi_offset 14, -4 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccCfNgvn.s page 20 336 .loc 1 216 3 is_stmt 1 view .LVU77 337 .LVL5: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 338 .loc 1 219 3 view .LVU78 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 339 .loc 1 219 3 view .LVU79 340 0002 174D ldr r5, .L32 341 0004 2D7E ldrb r5, [r5, #24] @ zero_extendqisi2 342 0006 012D cmp r5, #1 343 0008 28D0 beq .L27 344 000a 0446 mov r4, r0 345 000c 0846 mov r0, r1 346 .LVL6: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 347 .loc 1 219 3 discriminator 2 view .LVU80 348 000e 144E ldr r6, .L32 349 0010 0121 movs r1, #1 350 .LVL7: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 351 .loc 1 219 3 is_stmt 0 discriminator 2 view .LVU81 352 0012 3176 strb r1, [r6, #24] 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 353 .loc 1 219 3 is_stmt 1 discriminator 2 view .LVU82 222:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 354 .loc 1 222 3 discriminator 2 view .LVU83 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 355 .loc 1 225 3 discriminator 2 view .LVU84 356 0014 134D ldr r5, .L32+4 357 0016 2F69 ldr r7, [r5, #16] 358 0018 47F08077 orr r7, r7, #16777216 359 001c 2F61 str r7, [r5, #16] 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 360 .loc 1 228 3 discriminator 2 view .LVU85 361 001e 2F69 ldr r7, [r5, #16] 362 0020 47F00077 orr r7, r7, #33554432 363 0024 2F61 str r7, [r5, #16] 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 364 .loc 1 230 3 discriminator 2 view .LVU86 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 365 .loc 1 230 27 is_stmt 0 discriminator 2 view .LVU87 366 0026 0321 movs r1, #3 367 0028 3170 strb r1, [r6] 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 368 .loc 1 231 3 is_stmt 1 discriminator 2 view .LVU88 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 369 .loc 1 231 18 is_stmt 0 discriminator 2 view .LVU89 370 002a 7061 str r0, [r6, #20] 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 371 .loc 1 233 3 is_stmt 1 discriminator 2 view .LVU90 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 372 .loc 1 233 5 is_stmt 0 discriminator 2 view .LVU91 373 002c 3CB1 cbz r4, .L29 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 374 .loc 1 238 8 is_stmt 1 view .LVU92 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 375 .loc 1 238 10 is_stmt 0 view .LVU93 376 002e 012C cmp r4, #1 ARM GAS /tmp/ccCfNgvn.s page 21 377 0030 0AD0 beq .L30 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 378 .loc 1 243 8 is_stmt 1 view .LVU94 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 379 .loc 1 243 10 is_stmt 0 view .LVU95 380 0032 022C cmp r4, #2 381 0034 0DD0 beq .L31 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 382 .loc 1 251 5 is_stmt 1 view .LVU96 383 0036 FFF7FEFF bl FLASH_Program_DoubleWord 384 .LVL8: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 385 .loc 1 254 10 is_stmt 0 view .LVU97 386 003a 0020 movs r0, #0 387 .LVL9: 388 .L23: 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 389 .loc 1 255 1 view .LVU98 390 003c F8BD pop {r3, r4, r5, r6, r7, pc} 391 .LVL10: 392 .L29: 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 393 .loc 1 236 7 is_stmt 1 view .LVU99 394 003e D1B2 uxtb r1, r2 395 0040 FFF7FEFF bl FLASH_Program_Byte 396 .LVL11: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 397 .loc 1 254 10 is_stmt 0 view .LVU100 398 0044 0020 movs r0, #0 399 0046 F9E7 b .L23 400 .LVL12: 401 .L30: 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 402 .loc 1 241 5 is_stmt 1 view .LVU101 403 0048 91B2 uxth r1, r2 404 004a FFF7FEFF bl FLASH_Program_HalfWord 405 .LVL13: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 406 .loc 1 254 10 is_stmt 0 view .LVU102 407 004e 0020 movs r0, #0 408 0050 F4E7 b .L23 409 .LVL14: 410 .L31: 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 411 .loc 1 246 5 is_stmt 1 view .LVU103 412 0052 1146 mov r1, r2 413 0054 FFF7FEFF bl FLASH_Program_Word 414 .LVL15: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 415 .loc 1 254 10 is_stmt 0 view .LVU104 416 0058 0020 movs r0, #0 417 005a EFE7 b .L23 418 .LVL16: 419 .L27: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 420 .loc 1 219 3 view .LVU105 421 005c 0220 movs r0, #2 ARM GAS /tmp/ccCfNgvn.s page 22 422 .LVL17: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 423 .loc 1 219 3 view .LVU106 424 005e EDE7 b .L23 425 .L33: 426 .align 2 427 .L32: 428 0060 00000000 .word .LANCHOR0 429 0064 003C0240 .word 1073888256 430 .cfi_endproc 431 .LFE131: 433 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 434 .align 1 435 .weak HAL_FLASH_EndOfOperationCallback 436 .syntax unified 437 .thumb 438 .thumb_func 440 HAL_FLASH_EndOfOperationCallback: 441 .LVL18: 442 .LFB133: 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 443 .loc 1 385 1 is_stmt 1 view -0 444 .cfi_startproc 445 @ args = 0, pretend = 0, frame = 0 446 @ frame_needed = 0, uses_anonymous_args = 0 447 @ link register save eliminated. 387:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 448 .loc 1 387 3 view .LVU108 391:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 449 .loc 1 391 1 is_stmt 0 view .LVU109 450 0000 7047 bx lr 451 .cfi_endproc 452 .LFE133: 454 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 455 .align 1 456 .weak HAL_FLASH_OperationErrorCallback 457 .syntax unified 458 .thumb 459 .thumb_func 461 HAL_FLASH_OperationErrorCallback: 462 .LVL19: 463 .LFB134: 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 464 .loc 1 402 1 is_stmt 1 view -0 465 .cfi_startproc 466 @ args = 0, pretend = 0, frame = 0 467 @ frame_needed = 0, uses_anonymous_args = 0 468 @ link register save eliminated. 404:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 469 .loc 1 404 3 view .LVU111 408:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 470 .loc 1 408 1 is_stmt 0 view .LVU112 471 0000 7047 bx lr 472 .cfi_endproc 473 .LFE134: 475 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 476 .align 1 ARM GAS /tmp/ccCfNgvn.s page 23 477 .global HAL_FLASH_IRQHandler 478 .syntax unified 479 .thumb 480 .thumb_func 482 HAL_FLASH_IRQHandler: 483 .LFB132: 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 484 .loc 1 262 1 is_stmt 1 view -0 485 .cfi_startproc 486 @ args = 0, pretend = 0, frame = 0 487 @ frame_needed = 0, uses_anonymous_args = 0 488 0000 10B5 push {r4, lr} 489 .LCFI3: 490 .cfi_def_cfa_offset 8 491 .cfi_offset 4, -8 492 .cfi_offset 14, -4 263:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 493 .loc 1 263 3 view .LVU114 494 .LVL20: 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 495 .loc 1 270 3 view .LVU115 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 496 .loc 1 270 6 is_stmt 0 view .LVU116 497 0002 3A4B ldr r3, .L52 498 0004 DB68 ldr r3, [r3, #12] 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 499 .loc 1 270 5 view .LVU117 500 0006 13F0F20F tst r3, #242 501 000a 13D0 beq .L37 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 502 .loc 1 274 5 is_stmt 1 view .LVU118 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 503 .loc 1 274 14 is_stmt 0 view .LVU119 504 000c 384B ldr r3, .L52+4 505 000e 1B78 ldrb r3, [r3] @ zero_extendqisi2 506 0010 DBB2 uxtb r3, r3 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 507 .loc 1 274 7 view .LVU120 508 0012 012B cmp r3, #1 509 0014 3BD0 beq .L48 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 510 .loc 1 280 10 is_stmt 1 view .LVU121 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 511 .loc 1 280 19 is_stmt 0 view .LVU122 512 0016 364B ldr r3, .L52+4 513 0018 1B78 ldrb r3, [r3] @ zero_extendqisi2 514 001a DBB2 uxtb r3, r3 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 515 .loc 1 280 12 view .LVU123 516 001c 022B cmp r3, #2 517 001e 3CD0 beq .L49 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 518 .loc 1 288 7 is_stmt 1 view .LVU124 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 519 .loc 1 288 18 is_stmt 0 view .LVU125 520 0020 334B ldr r3, .L52+4 521 0022 5C69 ldr r4, [r3, #20] ARM GAS /tmp/ccCfNgvn.s page 24 522 .LVL21: 523 .L39: 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 524 .loc 1 292 5 is_stmt 1 view .LVU126 525 0024 FFF7FEFF bl FLASH_SetErrorCode 526 .LVL22: 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 527 .loc 1 295 5 view .LVU127 528 0028 2046 mov r0, r4 529 002a FFF7FEFF bl HAL_FLASH_OperationErrorCallback 530 .LVL23: 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 531 .loc 1 298 5 view .LVU128 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 532 .loc 1 298 29 is_stmt 0 view .LVU129 533 002e 304B ldr r3, .L52+4 534 0030 0022 movs r2, #0 535 0032 1A70 strb r2, [r3] 536 .LVL24: 537 .L37: 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 538 .loc 1 302 3 is_stmt 1 view .LVU130 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 539 .loc 1 302 6 is_stmt 0 view .LVU131 540 0034 2D4B ldr r3, .L52 541 0036 DB68 ldr r3, [r3, #12] 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 542 .loc 1 302 5 view .LVU132 543 0038 13F0010F tst r3, #1 544 003c 13D0 beq .L41 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 545 .loc 1 305 5 is_stmt 1 view .LVU133 546 003e 2B4B ldr r3, .L52 547 0040 0122 movs r2, #1 548 0042 DA60 str r2, [r3, #12] 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 549 .loc 1 307 5 view .LVU134 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 550 .loc 1 307 14 is_stmt 0 view .LVU135 551 0044 2A4B ldr r3, .L52+4 552 0046 1B78 ldrb r3, [r3] @ zero_extendqisi2 553 0048 DBB2 uxtb r3, r3 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 554 .loc 1 307 7 view .LVU136 555 004a 9342 cmp r3, r2 556 004c 28D0 beq .L50 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 557 .loc 1 340 7 is_stmt 1 view .LVU137 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 558 .loc 1 340 16 is_stmt 0 view .LVU138 559 004e 284B ldr r3, .L52+4 560 0050 1B78 ldrb r3, [r3] @ zero_extendqisi2 561 0052 DBB2 uxtb r3, r3 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 562 .loc 1 340 9 view .LVU139 563 0054 022B cmp r3, #2 564 0056 41D0 beq .L51 ARM GAS /tmp/ccCfNgvn.s page 25 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 565 .loc 1 353 9 is_stmt 1 view .LVU140 566 0058 254B ldr r3, .L52+4 567 005a 5869 ldr r0, [r3, #20] 568 005c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 569 .LVL25: 570 .L45: 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 571 .loc 1 355 7 view .LVU141 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 572 .loc 1 355 31 is_stmt 0 view .LVU142 573 0060 234B ldr r3, .L52+4 574 0062 0022 movs r2, #0 575 0064 1A70 strb r2, [r3] 576 .L41: 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 577 .loc 1 359 3 is_stmt 1 view .LVU143 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 578 .loc 1 359 12 is_stmt 0 view .LVU144 579 0066 224B ldr r3, .L52+4 580 0068 1B78 ldrb r3, [r3] @ zero_extendqisi2 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 581 .loc 1 359 5 view .LVU145 582 006a 7BB9 cbnz r3, .L36 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 583 .loc 1 362 5 is_stmt 1 view .LVU146 584 006c 1F4B ldr r3, .L52 585 006e 1A69 ldr r2, [r3, #16] 586 0070 22F0FF02 bic r2, r2, #255 587 0074 1A61 str r2, [r3, #16] 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 588 .loc 1 365 5 view .LVU147 589 0076 1A69 ldr r2, [r3, #16] 590 0078 22F08072 bic r2, r2, #16777216 591 007c 1A61 str r2, [r3, #16] 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 592 .loc 1 368 5 view .LVU148 593 007e 1A69 ldr r2, [r3, #16] 594 0080 22F00072 bic r2, r2, #33554432 595 0084 1A61 str r2, [r3, #16] 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 596 .loc 1 371 5 view .LVU149 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 597 .loc 1 371 5 view .LVU150 598 0086 1A4B ldr r3, .L52+4 599 0088 0022 movs r2, #0 600 008a 1A76 strb r2, [r3, #24] 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 601 .loc 1 371 5 view .LVU151 602 .L36: 373:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 603 .loc 1 373 1 is_stmt 0 view .LVU152 604 008c 10BD pop {r4, pc} 605 .LVL26: 606 .L48: 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 607 .loc 1 277 7 is_stmt 1 view .LVU153 ARM GAS /tmp/ccCfNgvn.s page 26 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 608 .loc 1 277 18 is_stmt 0 view .LVU154 609 008e 184B ldr r3, .L52+4 610 0090 DC68 ldr r4, [r3, #12] 611 .LVL27: 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 612 .loc 1 278 7 is_stmt 1 view .LVU155 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 613 .loc 1 278 21 is_stmt 0 view .LVU156 614 0092 4FF0FF32 mov r2, #-1 615 0096 DA60 str r2, [r3, #12] 616 0098 C4E7 b .L39 617 .LVL28: 618 .L49: 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 619 .loc 1 283 7 is_stmt 1 view .LVU157 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 620 .loc 1 283 18 is_stmt 0 view .LVU158 621 009a 154B ldr r3, .L52+4 622 009c 1C69 ldr r4, [r3, #16] 623 .LVL29: 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 624 .loc 1 283 18 view .LVU159 625 009e C1E7 b .L39 626 .LVL30: 627 .L50: 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 628 .loc 1 310 7 is_stmt 1 view .LVU160 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 629 .loc 1 310 13 is_stmt 0 view .LVU161 630 00a0 134B ldr r3, .L52+4 631 00a2 5A68 ldr r2, [r3, #4] 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 632 .loc 1 310 30 view .LVU162 633 00a4 013A subs r2, r2, #1 634 00a6 5A60 str r2, [r3, #4] 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 635 .loc 1 313 7 is_stmt 1 view .LVU163 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 636 .loc 1 313 16 is_stmt 0 view .LVU164 637 00a8 5B68 ldr r3, [r3, #4] 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 638 .loc 1 313 9 view .LVU165 639 00aa 5BB1 cbz r3, .L43 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 640 .loc 1 315 9 is_stmt 1 view .LVU166 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 641 .loc 1 315 20 is_stmt 0 view .LVU167 642 00ac 104C ldr r4, .L52+4 643 00ae E068 ldr r0, [r4, #12] 644 .LVL31: 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 645 .loc 1 317 9 is_stmt 1 view .LVU168 646 00b0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 647 .LVL32: 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 648 .loc 1 320 9 view .LVU169 ARM GAS /tmp/ccCfNgvn.s page 27 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 649 .loc 1 320 15 is_stmt 0 view .LVU170 650 00b4 E368 ldr r3, [r4, #12] 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 651 .loc 1 320 22 view .LVU171 652 00b6 0133 adds r3, r3, #1 653 00b8 E360 str r3, [r4, #12] 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 654 .loc 1 321 9 is_stmt 1 view .LVU172 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 655 .loc 1 321 20 is_stmt 0 view .LVU173 656 00ba E068 ldr r0, [r4, #12] 657 .LVL33: 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 658 .loc 1 322 9 is_stmt 1 view .LVU174 659 00bc 217A ldrb r1, [r4, #8] @ zero_extendqisi2 660 00be FFF7FEFF bl FLASH_Erase_Sector 661 .LVL34: 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 662 .loc 1 322 9 is_stmt 0 view .LVU175 663 00c2 D0E7 b .L41 664 .L43: 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 665 .loc 1 328 9 is_stmt 1 view .LVU176 666 .LVL35: 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 667 .loc 1 328 23 is_stmt 0 view .LVU177 668 00c4 0A4B ldr r3, .L52+4 669 00c6 4FF0FF34 mov r4, #-1 670 00ca DC60 str r4, [r3, #12] 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 671 .loc 1 329 9 is_stmt 1 view .LVU178 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 672 .loc 1 329 33 is_stmt 0 view .LVU179 673 00cc 0022 movs r2, #0 674 00ce 1A70 strb r2, [r3] 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 675 .loc 1 332 9 is_stmt 1 view .LVU180 676 00d0 FFF7FEFF bl FLASH_FlushCaches 677 .LVL36: 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 678 .loc 1 335 9 view .LVU181 679 00d4 2046 mov r0, r4 680 00d6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 681 .LVL37: 682 00da C4E7 b .L41 683 .LVL38: 684 .L51: 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 685 .loc 1 344 9 view .LVU182 686 00dc FFF7FEFF bl FLASH_FlushCaches 687 .LVL39: 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 688 .loc 1 347 9 view .LVU183 689 00e0 034B ldr r3, .L52+4 690 00e2 1869 ldr r0, [r3, #16] 691 00e4 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback ARM GAS /tmp/ccCfNgvn.s page 28 692 .LVL40: 693 00e8 BAE7 b .L45 694 .L53: 695 00ea 00BF .align 2 696 .L52: 697 00ec 003C0240 .word 1073888256 698 00f0 00000000 .word .LANCHOR0 699 .cfi_endproc 700 .LFE132: 702 .section .text.HAL_FLASH_Unlock,"ax",%progbits 703 .align 1 704 .global HAL_FLASH_Unlock 705 .syntax unified 706 .thumb 707 .thumb_func 709 HAL_FLASH_Unlock: 710 .LFB135: 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 711 .loc 1 434 1 view -0 712 .cfi_startproc 713 @ args = 0, pretend = 0, frame = 0 714 @ frame_needed = 0, uses_anonymous_args = 0 715 @ link register save eliminated. 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 716 .loc 1 435 3 view .LVU185 717 .LVL41: 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 718 .loc 1 437 3 view .LVU186 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 719 .loc 1 437 6 is_stmt 0 view .LVU187 720 0000 094B ldr r3, .L59 721 0002 1B69 ldr r3, [r3, #16] 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 722 .loc 1 437 5 view .LVU188 723 0004 002B cmp r3, #0 724 0006 01DB blt .L58 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 725 .loc 1 435 21 view .LVU189 726 0008 0020 movs r0, #0 727 000a 7047 bx lr 728 .L58: 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 729 .loc 1 440 5 is_stmt 1 view .LVU190 730 000c 064B ldr r3, .L59 731 000e 074A ldr r2, .L59+4 732 0010 5A60 str r2, [r3, #4] 441:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 733 .loc 1 441 5 view .LVU191 734 0012 02F18832 add r2, r2, #-2004318072 735 0016 5A60 str r2, [r3, #4] 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 736 .loc 1 444 5 view .LVU192 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 737 .loc 1 444 8 is_stmt 0 view .LVU193 738 0018 1B69 ldr r3, [r3, #16] 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 739 .loc 1 444 7 view .LVU194 ARM GAS /tmp/ccCfNgvn.s page 29 740 001a 002B cmp r3, #0 741 001c 01DB blt .L57 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 742 .loc 1 435 21 view .LVU195 743 001e 0020 movs r0, #0 744 0020 7047 bx lr 745 .L57: 446:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 746 .loc 1 446 14 view .LVU196 747 0022 0120 movs r0, #1 748 .LVL42: 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 749 .loc 1 450 3 is_stmt 1 view .LVU197 451:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 750 .loc 1 451 1 is_stmt 0 view .LVU198 751 0024 7047 bx lr 752 .L60: 753 0026 00BF .align 2 754 .L59: 755 0028 003C0240 .word 1073888256 756 002c 23016745 .word 1164378403 757 .cfi_endproc 758 .LFE135: 760 .section .text.HAL_FLASH_Lock,"ax",%progbits 761 .align 1 762 .global HAL_FLASH_Lock 763 .syntax unified 764 .thumb 765 .thumb_func 767 HAL_FLASH_Lock: 768 .LFB136: 458:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 769 .loc 1 458 1 is_stmt 1 view -0 770 .cfi_startproc 771 @ args = 0, pretend = 0, frame = 0 772 @ frame_needed = 0, uses_anonymous_args = 0 773 @ link register save eliminated. 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 774 .loc 1 460 3 view .LVU200 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 775 .loc 1 460 13 is_stmt 0 view .LVU201 776 0000 034A ldr r2, .L62 777 0002 1369 ldr r3, [r2, #16] 778 0004 43F00043 orr r3, r3, #-2147483648 779 0008 1361 str r3, [r2, #16] 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 780 .loc 1 462 3 is_stmt 1 view .LVU202 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 781 .loc 1 463 1 is_stmt 0 view .LVU203 782 000a 0020 movs r0, #0 783 000c 7047 bx lr 784 .L63: 785 000e 00BF .align 2 786 .L62: 787 0010 003C0240 .word 1073888256 788 .cfi_endproc 789 .LFE136: ARM GAS /tmp/ccCfNgvn.s page 30 791 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 792 .align 1 793 .global HAL_FLASH_OB_Unlock 794 .syntax unified 795 .thumb 796 .thumb_func 798 HAL_FLASH_OB_Unlock: 799 .LFB137: 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 800 .loc 1 470 1 is_stmt 1 view -0 801 .cfi_startproc 802 @ args = 0, pretend = 0, frame = 0 803 @ frame_needed = 0, uses_anonymous_args = 0 804 @ link register save eliminated. 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 805 .loc 1 471 3 view .LVU205 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 806 .loc 1 471 12 is_stmt 0 view .LVU206 807 0000 074B ldr r3, .L67 808 0002 5B69 ldr r3, [r3, #20] 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 809 .loc 1 471 5 view .LVU207 810 0004 13F0010F tst r3, #1 811 0008 07D0 beq .L66 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 812 .loc 1 474 5 is_stmt 1 view .LVU208 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 813 .loc 1 474 20 is_stmt 0 view .LVU209 814 000a 054B ldr r3, .L67 815 000c 054A ldr r2, .L67+4 816 000e 9A60 str r2, [r3, #8] 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 817 .loc 1 475 5 is_stmt 1 view .LVU210 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 818 .loc 1 475 20 is_stmt 0 view .LVU211 819 0010 02F14432 add r2, r2, #1145324612 820 0014 9A60 str r2, [r3, #8] 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 821 .loc 1 482 3 is_stmt 1 view .LVU212 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 822 .loc 1 482 10 is_stmt 0 view .LVU213 823 0016 0020 movs r0, #0 824 0018 7047 bx lr 825 .L66: 479:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 826 .loc 1 479 12 view .LVU214 827 001a 0120 movs r0, #1 483:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 828 .loc 1 483 1 view .LVU215 829 001c 7047 bx lr 830 .L68: 831 001e 00BF .align 2 832 .L67: 833 0020 003C0240 .word 1073888256 834 0024 3B2A1908 .word 135866939 835 .cfi_endproc 836 .LFE137: ARM GAS /tmp/ccCfNgvn.s page 31 838 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 839 .align 1 840 .global HAL_FLASH_OB_Lock 841 .syntax unified 842 .thumb 843 .thumb_func 845 HAL_FLASH_OB_Lock: 846 .LFB138: 490:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 847 .loc 1 490 1 is_stmt 1 view -0 848 .cfi_startproc 849 @ args = 0, pretend = 0, frame = 0 850 @ frame_needed = 0, uses_anonymous_args = 0 851 @ link register save eliminated. 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 852 .loc 1 492 3 view .LVU217 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 853 .loc 1 492 16 is_stmt 0 view .LVU218 854 0000 034A ldr r2, .L70 855 0002 5369 ldr r3, [r2, #20] 856 0004 43F00103 orr r3, r3, #1 857 0008 5361 str r3, [r2, #20] 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 858 .loc 1 494 3 is_stmt 1 view .LVU219 495:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 859 .loc 1 495 1 is_stmt 0 view .LVU220 860 000a 0020 movs r0, #0 861 000c 7047 bx lr 862 .L71: 863 000e 00BF .align 2 864 .L70: 865 0010 003C0240 .word 1073888256 866 .cfi_endproc 867 .LFE138: 869 .section .text.HAL_FLASH_GetError,"ax",%progbits 870 .align 1 871 .global HAL_FLASH_GetError 872 .syntax unified 873 .thumb 874 .thumb_func 876 HAL_FLASH_GetError: 877 .LFB140: 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 878 .loc 1 539 1 is_stmt 1 view -0 879 .cfi_startproc 880 @ args = 0, pretend = 0, frame = 0 881 @ frame_needed = 0, uses_anonymous_args = 0 882 @ link register save eliminated. 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 883 .loc 1 540 4 view .LVU222 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 884 .loc 1 540 17 is_stmt 0 view .LVU223 885 0000 014B ldr r3, .L73 886 0002 D869 ldr r0, [r3, #28] 541:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 887 .loc 1 541 1 view .LVU224 888 0004 7047 bx lr ARM GAS /tmp/ccCfNgvn.s page 32 889 .L74: 890 0006 00BF .align 2 891 .L73: 892 0008 00000000 .word .LANCHOR0 893 .cfi_endproc 894 .LFE140: 896 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 897 .align 1 898 .global FLASH_WaitForLastOperation 899 .syntax unified 900 .thumb 901 .thumb_func 903 FLASH_WaitForLastOperation: 904 .LVL43: 905 .LFB141: 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 906 .loc 1 553 1 is_stmt 1 view -0 907 .cfi_startproc 908 @ args = 0, pretend = 0, frame = 0 909 @ frame_needed = 0, uses_anonymous_args = 0 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 910 .loc 1 553 1 is_stmt 0 view .LVU226 911 0000 38B5 push {r3, r4, r5, lr} 912 .LCFI4: 913 .cfi_def_cfa_offset 16 914 .cfi_offset 3, -16 915 .cfi_offset 4, -12 916 .cfi_offset 5, -8 917 .cfi_offset 14, -4 918 0002 0446 mov r4, r0 554:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 919 .loc 1 554 3 is_stmt 1 view .LVU227 920 .LVL44: 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 921 .loc 1 557 3 view .LVU228 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 922 .loc 1 557 20 is_stmt 0 view .LVU229 923 0004 144B ldr r3, .L86 924 0006 0022 movs r2, #0 925 0008 DA61 str r2, [r3, #28] 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 926 .loc 1 563 3 is_stmt 1 view .LVU230 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 927 .loc 1 563 15 is_stmt 0 view .LVU231 928 000a FFF7FEFF bl HAL_GetTick 929 .LVL45: 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 930 .loc 1 563 15 view .LVU232 931 000e 0546 mov r5, r0 932 .LVL46: 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 933 .loc 1 565 3 is_stmt 1 view .LVU233 934 .L77: 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 935 .loc 1 565 8 view .LVU234 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 936 .loc 1 565 9 is_stmt 0 view .LVU235 ARM GAS /tmp/ccCfNgvn.s page 33 937 0010 124B ldr r3, .L86+4 938 0012 DB68 ldr r3, [r3, #12] 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 939 .loc 1 565 8 view .LVU236 940 0014 13F4803F tst r3, #65536 941 0018 0AD0 beq .L84 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 942 .loc 1 567 5 is_stmt 1 view .LVU237 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 943 .loc 1 567 7 is_stmt 0 view .LVU238 944 001a B4F1FF3F cmp r4, #-1 945 001e F7D0 beq .L77 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 946 .loc 1 569 7 is_stmt 1 view .LVU239 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 947 .loc 1 569 9 is_stmt 0 view .LVU240 948 0020 24B1 cbz r4, .L78 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 949 .loc 1 569 29 discriminator 1 view .LVU241 950 0022 FFF7FEFF bl HAL_GetTick 951 .LVL47: 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 952 .loc 1 569 43 discriminator 1 view .LVU242 953 0026 401B subs r0, r0, r5 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 954 .loc 1 569 25 discriminator 1 view .LVU243 955 0028 A042 cmp r0, r4 956 002a F1D9 bls .L77 957 .L78: 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 958 .loc 1 571 9 is_stmt 1 view .LVU244 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 959 .loc 1 571 16 is_stmt 0 view .LVU245 960 002c 0320 movs r0, #3 961 002e 0DE0 b .L79 962 .L84: 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 963 .loc 1 577 3 is_stmt 1 view .LVU246 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 964 .loc 1 577 7 is_stmt 0 view .LVU247 965 0030 0A4B ldr r3, .L86+4 966 0032 DB68 ldr r3, [r3, #12] 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 967 .loc 1 577 6 view .LVU248 968 0034 13F0010F tst r3, #1 969 0038 02D0 beq .L81 580:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 970 .loc 1 580 5 is_stmt 1 view .LVU249 971 003a 084B ldr r3, .L86+4 972 003c 0122 movs r2, #1 973 003e DA60 str r2, [r3, #12] 974 .L81: 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 975 .loc 1 586 3 view .LVU250 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 976 .loc 1 586 6 is_stmt 0 view .LVU251 977 0040 064B ldr r3, .L86+4 ARM GAS /tmp/ccCfNgvn.s page 34 978 0042 DB68 ldr r3, [r3, #12] 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 979 .loc 1 586 5 view .LVU252 980 0044 13F0F20F tst r3, #242 981 0048 01D1 bne .L85 596:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 982 .loc 1 596 10 view .LVU253 983 004a 0020 movs r0, #0 984 .L79: 598:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 985 .loc 1 598 1 view .LVU254 986 004c 38BD pop {r3, r4, r5, pc} 987 .LVL48: 988 .L85: 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 989 .loc 1 591 5 is_stmt 1 view .LVU255 990 004e FFF7FEFF bl FLASH_SetErrorCode 991 .LVL49: 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 992 .loc 1 592 5 view .LVU256 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 993 .loc 1 592 12 is_stmt 0 view .LVU257 994 0052 0120 movs r0, #1 995 0054 FAE7 b .L79 996 .L87: 997 0056 00BF .align 2 998 .L86: 999 0058 00000000 .word .LANCHOR0 1000 005c 003C0240 .word 1073888256 1001 .cfi_endproc 1002 .LFE141: 1004 .section .text.HAL_FLASH_Program,"ax",%progbits 1005 .align 1 1006 .global HAL_FLASH_Program 1007 .syntax unified 1008 .thumb 1009 .thumb_func 1011 HAL_FLASH_Program: 1012 .LVL50: 1013 .LFB130: 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 1014 .loc 1 157 1 is_stmt 1 view -0 1015 .cfi_startproc 1016 @ args = 0, pretend = 0, frame = 0 1017 @ frame_needed = 0, uses_anonymous_args = 0 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 1018 .loc 1 157 1 is_stmt 0 view .LVU259 1019 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 1020 .LCFI5: 1021 .cfi_def_cfa_offset 24 1022 .cfi_offset 3, -24 1023 .cfi_offset 4, -20 1024 .cfi_offset 5, -16 1025 .cfi_offset 6, -12 1026 .cfi_offset 7, -8 1027 .cfi_offset 14, -4 1028 0002 1646 mov r6, r2 ARM GAS /tmp/ccCfNgvn.s page 35 158:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1029 .loc 1 158 3 is_stmt 1 view .LVU260 1030 .LVL51: 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1031 .loc 1 161 3 view .LVU261 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1032 .loc 1 161 3 view .LVU262 1033 0004 1B4A ldr r2, .L100 1034 .LVL52: 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1035 .loc 1 161 3 is_stmt 0 view .LVU263 1036 0006 127E ldrb r2, [r2, #24] @ zero_extendqisi2 1037 0008 012A cmp r2, #1 1038 000a 30D0 beq .L95 1039 000c 0446 mov r4, r0 1040 000e 0D46 mov r5, r1 1041 0010 1F46 mov r7, r3 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1042 .loc 1 161 3 is_stmt 1 discriminator 2 view .LVU264 1043 0012 184B ldr r3, .L100 1044 0014 0122 movs r2, #1 1045 0016 1A76 strb r2, [r3, #24] 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1046 .loc 1 161 3 discriminator 2 view .LVU265 164:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1047 .loc 1 164 3 discriminator 2 view .LVU266 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1048 .loc 1 167 3 discriminator 2 view .LVU267 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1049 .loc 1 167 12 is_stmt 0 discriminator 2 view .LVU268 1050 0018 4CF25030 movw r0, #50000 1051 .LVL53: 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1052 .loc 1 167 12 discriminator 2 view .LVU269 1053 001c FFF7FEFF bl FLASH_WaitForLastOperation 1054 .LVL54: 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1055 .loc 1 169 3 is_stmt 1 discriminator 2 view .LVU270 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1056 .loc 1 169 5 is_stmt 0 discriminator 2 view .LVU271 1057 0020 90B9 cbnz r0, .L90 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1058 .loc 1 171 5 is_stmt 1 view .LVU272 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1059 .loc 1 171 7 is_stmt 0 view .LVU273 1060 0022 ACB1 cbz r4, .L97 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1061 .loc 1 176 10 is_stmt 1 view .LVU274 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1062 .loc 1 176 12 is_stmt 0 view .LVU275 1063 0024 012C cmp r4, #1 1064 0026 18D0 beq .L98 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1065 .loc 1 181 10 is_stmt 1 view .LVU276 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1066 .loc 1 181 12 is_stmt 0 view .LVU277 1067 0028 022C cmp r4, #2 ARM GAS /tmp/ccCfNgvn.s page 36 1068 002a 1BD0 beq .L99 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1069 .loc 1 189 7 is_stmt 1 view .LVU278 1070 002c 3246 mov r2, r6 1071 002e 3B46 mov r3, r7 1072 0030 2846 mov r0, r5 1073 .LVL55: 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1074 .loc 1 189 7 is_stmt 0 view .LVU279 1075 0032 FFF7FEFF bl FLASH_Program_DoubleWord 1076 .LVL56: 1077 .L92: 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1078 .loc 1 193 5 is_stmt 1 view .LVU280 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1079 .loc 1 193 14 is_stmt 0 view .LVU281 1080 0036 4CF25030 movw r0, #50000 1081 003a FFF7FEFF bl FLASH_WaitForLastOperation 1082 .LVL57: 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1083 .loc 1 196 5 is_stmt 1 view .LVU282 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1084 .loc 1 196 15 is_stmt 0 view .LVU283 1085 003e 0E4A ldr r2, .L100+4 1086 0040 1369 ldr r3, [r2, #16] 1087 0042 23F00103 bic r3, r3, #1 1088 0046 1361 str r3, [r2, #16] 1089 .L90: 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1090 .loc 1 200 3 is_stmt 1 view .LVU284 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1091 .loc 1 200 3 view .LVU285 1092 0048 0A4B ldr r3, .L100 1093 004a 0022 movs r2, #0 1094 004c 1A76 strb r2, [r3, #24] 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1095 .loc 1 200 3 view .LVU286 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1096 .loc 1 202 3 view .LVU287 1097 .LVL58: 1098 .L89: 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1099 .loc 1 203 1 is_stmt 0 view .LVU288 1100 004e F8BD pop {r3, r4, r5, r6, r7, pc} 1101 .LVL59: 1102 .L97: 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1103 .loc 1 174 7 is_stmt 1 view .LVU289 1104 0050 F1B2 uxtb r1, r6 1105 0052 2846 mov r0, r5 1106 .LVL60: 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1107 .loc 1 174 7 is_stmt 0 view .LVU290 1108 0054 FFF7FEFF bl FLASH_Program_Byte 1109 .LVL61: 1110 0058 EDE7 b .L92 1111 .LVL62: ARM GAS /tmp/ccCfNgvn.s page 37 1112 .L98: 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1113 .loc 1 179 7 is_stmt 1 view .LVU291 1114 005a B1B2 uxth r1, r6 1115 005c 2846 mov r0, r5 1116 .LVL63: 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1117 .loc 1 179 7 is_stmt 0 view .LVU292 1118 005e FFF7FEFF bl FLASH_Program_HalfWord 1119 .LVL64: 1120 0062 E8E7 b .L92 1121 .LVL65: 1122 .L99: 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1123 .loc 1 184 7 is_stmt 1 view .LVU293 1124 0064 3146 mov r1, r6 1125 0066 2846 mov r0, r5 1126 .LVL66: 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1127 .loc 1 184 7 is_stmt 0 view .LVU294 1128 0068 FFF7FEFF bl FLASH_Program_Word 1129 .LVL67: 1130 006c E3E7 b .L92 1131 .LVL68: 1132 .L95: 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1133 .loc 1 161 3 view .LVU295 1134 006e 0220 movs r0, #2 1135 .LVL69: 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1136 .loc 1 161 3 view .LVU296 1137 0070 EDE7 b .L89 1138 .L101: 1139 0072 00BF .align 2 1140 .L100: 1141 0074 00000000 .word .LANCHOR0 1142 0078 003C0240 .word 1073888256 1143 .cfi_endproc 1144 .LFE130: 1146 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 1147 .align 1 1148 .global HAL_FLASH_OB_Launch 1149 .syntax unified 1150 .thumb 1151 .thumb_func 1153 HAL_FLASH_OB_Launch: 1154 .LFB139: 502:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 1155 .loc 1 502 1 is_stmt 1 view -0 1156 .cfi_startproc 1157 @ args = 0, pretend = 0, frame = 0 1158 @ frame_needed = 0, uses_anonymous_args = 0 1159 0000 08B5 push {r3, lr} 1160 .LCFI6: 1161 .cfi_def_cfa_offset 8 1162 .cfi_offset 3, -8 1163 .cfi_offset 14, -4 ARM GAS /tmp/ccCfNgvn.s page 38 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1164 .loc 1 504 3 view .LVU298 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1165 .loc 1 504 40 is_stmt 0 view .LVU299 1166 0002 054A ldr r2, .L104 1167 0004 137D ldrb r3, [r2, #20] @ zero_extendqisi2 1168 0006 43F00203 orr r3, r3, #2 1169 000a 1375 strb r3, [r2, #20] 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1170 .loc 1 507 3 is_stmt 1 view .LVU300 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1171 .loc 1 507 10 is_stmt 0 view .LVU301 1172 000c 4CF25030 movw r0, #50000 1173 0010 FFF7FEFF bl FLASH_WaitForLastOperation 1174 .LVL70: 508:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1175 .loc 1 508 1 view .LVU302 1176 0014 08BD pop {r3, pc} 1177 .L105: 1178 0016 00BF .align 2 1179 .L104: 1180 0018 003C0240 .word 1073888256 1181 .cfi_endproc 1182 .LFE139: 1184 .global pFlash 1185 .section .bss.pFlash,"aw",%nobits 1186 .align 2 1187 .set .LANCHOR0,. + 0 1190 pFlash: 1191 0000 00000000 .space 32 1191 00000000 1191 00000000 1191 00000000 1191 00000000 1192 .text 1193 .Letext0: 1194 .file 2 "/home/gitc/\346\241\214\351\235\242/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/ 1195 .file 3 "/home/gitc/\346\241\214\351\235\242/gcc-arm-none-eabi-10.3-2021.10/arm-none-eabi/include/ 1196 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h" 1197 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" 1198 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" 1199 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" 1200 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" 1201 .file 9 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h" ARM GAS /tmp/ccCfNgvn.s page 39 DEFINED SYMBOLS *ABS*:0000000000000000 stm32f4xx_hal_flash.c /tmp/ccCfNgvn.s:20 .text.FLASH_Program_DoubleWord:0000000000000000 $t /tmp/ccCfNgvn.s:25 .text.FLASH_Program_DoubleWord:0000000000000000 FLASH_Program_DoubleWord /tmp/ccCfNgvn.s:70 .text.FLASH_Program_DoubleWord:0000000000000028 $d /tmp/ccCfNgvn.s:75 .text.FLASH_Program_Word:0000000000000000 $t /tmp/ccCfNgvn.s:80 .text.FLASH_Program_Word:0000000000000000 FLASH_Program_Word /tmp/ccCfNgvn.s:112 .text.FLASH_Program_Word:0000000000000020 $d /tmp/ccCfNgvn.s:117 .text.FLASH_Program_HalfWord:0000000000000000 $t /tmp/ccCfNgvn.s:122 .text.FLASH_Program_HalfWord:0000000000000000 FLASH_Program_HalfWord /tmp/ccCfNgvn.s:154 .text.FLASH_Program_HalfWord:0000000000000020 $d /tmp/ccCfNgvn.s:159 .text.FLASH_Program_Byte:0000000000000000 $t /tmp/ccCfNgvn.s:164 .text.FLASH_Program_Byte:0000000000000000 FLASH_Program_Byte /tmp/ccCfNgvn.s:195 .text.FLASH_Program_Byte:000000000000001c $d /tmp/ccCfNgvn.s:200 .text.FLASH_SetErrorCode:0000000000000000 $t /tmp/ccCfNgvn.s:205 .text.FLASH_SetErrorCode:0000000000000000 FLASH_SetErrorCode /tmp/ccCfNgvn.s:307 .text.FLASH_SetErrorCode:0000000000000084 $d /tmp/ccCfNgvn.s:313 .text.HAL_FLASH_Program_IT:0000000000000000 $t /tmp/ccCfNgvn.s:319 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT /tmp/ccCfNgvn.s:428 .text.HAL_FLASH_Program_IT:0000000000000060 $d /tmp/ccCfNgvn.s:434 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t /tmp/ccCfNgvn.s:440 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback /tmp/ccCfNgvn.s:455 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t /tmp/ccCfNgvn.s:461 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback /tmp/ccCfNgvn.s:476 .text.HAL_FLASH_IRQHandler:0000000000000000 $t /tmp/ccCfNgvn.s:482 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler /tmp/ccCfNgvn.s:697 .text.HAL_FLASH_IRQHandler:00000000000000ec $d /tmp/ccCfNgvn.s:703 .text.HAL_FLASH_Unlock:0000000000000000 $t /tmp/ccCfNgvn.s:709 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock /tmp/ccCfNgvn.s:755 .text.HAL_FLASH_Unlock:0000000000000028 $d /tmp/ccCfNgvn.s:761 .text.HAL_FLASH_Lock:0000000000000000 $t /tmp/ccCfNgvn.s:767 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock /tmp/ccCfNgvn.s:787 .text.HAL_FLASH_Lock:0000000000000010 $d /tmp/ccCfNgvn.s:792 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t /tmp/ccCfNgvn.s:798 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock /tmp/ccCfNgvn.s:833 .text.HAL_FLASH_OB_Unlock:0000000000000020 $d /tmp/ccCfNgvn.s:839 .text.HAL_FLASH_OB_Lock:0000000000000000 $t /tmp/ccCfNgvn.s:845 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock /tmp/ccCfNgvn.s:865 .text.HAL_FLASH_OB_Lock:0000000000000010 $d /tmp/ccCfNgvn.s:870 .text.HAL_FLASH_GetError:0000000000000000 $t /tmp/ccCfNgvn.s:876 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError /tmp/ccCfNgvn.s:892 .text.HAL_FLASH_GetError:0000000000000008 $d /tmp/ccCfNgvn.s:897 .text.FLASH_WaitForLastOperation:0000000000000000 $t /tmp/ccCfNgvn.s:903 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation /tmp/ccCfNgvn.s:999 .text.FLASH_WaitForLastOperation:0000000000000058 $d /tmp/ccCfNgvn.s:1005 .text.HAL_FLASH_Program:0000000000000000 $t /tmp/ccCfNgvn.s:1011 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program /tmp/ccCfNgvn.s:1141 .text.HAL_FLASH_Program:0000000000000074 $d /tmp/ccCfNgvn.s:1147 .text.HAL_FLASH_OB_Launch:0000000000000000 $t /tmp/ccCfNgvn.s:1153 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch /tmp/ccCfNgvn.s:1180 .text.HAL_FLASH_OB_Launch:0000000000000018 $d /tmp/ccCfNgvn.s:1190 .bss.pFlash:0000000000000000 pFlash /tmp/ccCfNgvn.s:1186 .bss.pFlash:0000000000000000 $d UNDEFINED SYMBOLS FLASH_Erase_Sector FLASH_FlushCaches ARM GAS /tmp/ccCfNgvn.s page 40 HAL_GetTick