ARM GAS /tmp/ccjBtVhA.s page 1 1 .cpu cortex-m4 2 .eabi_attribute 27, 1 3 .eabi_attribute 28, 1 4 .eabi_attribute 20, 1 5 .eabi_attribute 21, 1 6 .eabi_attribute 23, 3 7 .eabi_attribute 24, 1 8 .eabi_attribute 25, 1 9 .eabi_attribute 26, 1 10 .eabi_attribute 30, 1 11 .eabi_attribute 34, 1 12 .eabi_attribute 18, 4 13 .file "stm32f4xx_hal_flash.c" 14 .text 15 .Ltext0: 16 .cfi_sections .debug_frame 17 .section .text.FLASH_Program_DoubleWord,"ax",%progbits 18 .align 1 19 .syntax unified 20 .thumb 21 .thumb_func 22 .fpu fpv4-sp-d16 24 FLASH_Program_DoubleWord: 25 .LFB142: 26 .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 31:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 32:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccjBtVhA.s page 2 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 **** */ 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 ARM GAS /tmp/ccjBtVhA.s page 3 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 **** * @{ 145:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 146:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccjBtVhA.s page 4 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 **** 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccjBtVhA.s page 5 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. 259:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 260:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ ARM GAS /tmp/ccjBtVhA.s page 6 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; 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); ARM GAS /tmp/ccjBtVhA.s page 7 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 **** } 373:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 374:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccjBtVhA.s page 8 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 **** /** 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 ARM GAS /tmp/ccjBtVhA.s page 9 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. 487:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 488:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ ARM GAS /tmp/ccjBtVhA.s page 10 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 **** /** 544:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ ARM GAS /tmp/ccjBtVhA.s page 11 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 **** /** 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 ARM GAS /tmp/ccjBtVhA.s page 12 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 **** { 27 .loc 1 613 0 28 .cfi_startproc 29 @ args = 0, pretend = 0, frame = 0 30 @ frame_needed = 0, uses_anonymous_args = 0 31 @ link register save eliminated. 32 .LVL0: 33 0000 10B4 push {r4} 34 .LCFI0: 35 .cfi_def_cfa_offset 4 36 .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)); 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); 37 .loc 1 618 0 38 0002 0949 ldr r1, .L3 39 0004 0C69 ldr r4, [r1, #16] 40 0006 24F44074 bic r4, r4, #768 41 000a 0C61 str r4, [r1, #16] 619:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; 42 .loc 1 619 0 43 000c 0C69 ldr r4, [r1, #16] 44 000e 44F44074 orr r4, r4, #768 45 0012 0C61 str r4, [r1, #16] 620:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 46 .loc 1 620 0 47 0014 0C69 ldr r4, [r1, #16] 48 0016 44F00104 orr r4, r4, #1 49 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; 50 .loc 1 623 0 51 001c 0260 str r2, [r0] 624:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32); 52 .loc 1 624 0 53 001e 4360 str r3, [r0, #4] 625:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 54 .loc 1 625 0 55 0020 5DF8044B ldr r4, [sp], #4 56 .LCFI1: 57 .cfi_restore 4 58 .cfi_def_cfa_offset 0 59 0024 7047 bx lr 60 .L4: ARM GAS /tmp/ccjBtVhA.s page 13 61 0026 00BF .align 2 62 .L3: 63 0028 003C0240 .word 1073888256 64 .cfi_endproc 65 .LFE142: 67 .section .text.FLASH_Program_Word,"ax",%progbits 68 .align 1 69 .syntax unified 70 .thumb 71 .thumb_func 72 .fpu fpv4-sp-d16 74 FLASH_Program_Word: 75 .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 **** { 76 .loc 1 641 0 77 .cfi_startproc 78 @ args = 0, pretend = 0, frame = 0 79 @ frame_needed = 0, uses_anonymous_args = 0 80 @ link register save eliminated. 81 .LVL1: 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)); 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); 82 .loc 1 646 0 83 0000 074B ldr r3, .L6 84 0002 1A69 ldr r2, [r3, #16] 85 0004 22F44072 bic r2, r2, #768 86 0008 1A61 str r2, [r3, #16] 647:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD; 87 .loc 1 647 0 88 000a 1A69 ldr r2, [r3, #16] 89 000c 42F40072 orr r2, r2, #512 90 0010 1A61 str r2, [r3, #16] 648:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 91 .loc 1 648 0 92 0012 1A69 ldr r2, [r3, #16] 93 0014 42F00102 orr r2, r2, #1 94 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; ARM GAS /tmp/ccjBtVhA.s page 14 95 .loc 1 650 0 96 001a 0160 str r1, [r0] 97 001c 7047 bx lr 98 .L7: 99 001e 00BF .align 2 100 .L6: 101 0020 003C0240 .word 1073888256 102 .cfi_endproc 103 .LFE143: 105 .section .text.FLASH_Program_HalfWord,"ax",%progbits 106 .align 1 107 .syntax unified 108 .thumb 109 .thumb_func 110 .fpu fpv4-sp-d16 112 FLASH_Program_HalfWord: 113 .LFB144: 651:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** { 114 .loc 1 666 0 115 .cfi_startproc 116 @ args = 0, pretend = 0, frame = 0 117 @ frame_needed = 0, uses_anonymous_args = 0 118 @ link register save eliminated. 119 .LVL2: 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)); 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); 120 .loc 1 671 0 121 0000 074B ldr r3, .L9 122 0002 1A69 ldr r2, [r3, #16] 123 0004 22F44072 bic r2, r2, #768 124 0008 1A61 str r2, [r3, #16] 672:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD; 125 .loc 1 672 0 126 000a 1A69 ldr r2, [r3, #16] 127 000c 42F48072 orr r2, r2, #256 128 0010 1A61 str r2, [r3, #16] 673:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 129 .loc 1 673 0 130 0012 1A69 ldr r2, [r3, #16] ARM GAS /tmp/ccjBtVhA.s page 15 131 0014 42F00102 orr r2, r2, #1 132 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; 133 .loc 1 675 0 134 001a 0180 strh r1, [r0] @ movhi 135 001c 7047 bx lr 136 .L10: 137 001e 00BF .align 2 138 .L9: 139 0020 003C0240 .word 1073888256 140 .cfi_endproc 141 .LFE144: 143 .section .text.FLASH_Program_Byte,"ax",%progbits 144 .align 1 145 .syntax unified 146 .thumb 147 .thumb_func 148 .fpu fpv4-sp-d16 150 FLASH_Program_Byte: 151 .LFB145: 676:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** { 152 .loc 1 691 0 153 .cfi_startproc 154 @ args = 0, pretend = 0, frame = 0 155 @ frame_needed = 0, uses_anonymous_args = 0 156 @ link register save eliminated. 157 .LVL3: 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)); 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); 158 .loc 1 696 0 159 0000 064B ldr r3, .L12 160 0002 1A69 ldr r2, [r3, #16] 161 0004 22F44072 bic r2, r2, #768 162 0008 1A61 str r2, [r3, #16] 697:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE; 163 .loc 1 697 0 164 000a 1A69 ldr r2, [r3, #16] 165 000c 1A61 str r2, [r3, #16] ARM GAS /tmp/ccjBtVhA.s page 16 698:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 166 .loc 1 698 0 167 000e 1A69 ldr r2, [r3, #16] 168 0010 42F00102 orr r2, r2, #1 169 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; 170 .loc 1 700 0 171 0016 0170 strb r1, [r0] 172 0018 7047 bx lr 173 .L13: 174 001a 00BF .align 2 175 .L12: 176 001c 003C0240 .word 1073888256 177 .cfi_endproc 178 .LFE145: 180 .section .text.FLASH_SetErrorCode,"ax",%progbits 181 .align 1 182 .syntax unified 183 .thumb 184 .thumb_func 185 .fpu fpv4-sp-d16 187 FLASH_SetErrorCode: 188 .LFB146: 701:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** { 189 .loc 1 708 0 190 .cfi_startproc 191 @ args = 0, pretend = 0, frame = 0 192 @ frame_needed = 0, uses_anonymous_args = 0 193 @ link register save eliminated. 709:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) 194 .loc 1 709 0 195 0000 204B ldr r3, .L20 196 0002 DB68 ldr r3, [r3, #12] 197 0004 13F0100F tst r3, #16 198 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; 199 .loc 1 711 0 200 000a 1F4A ldr r2, .L20+4 201 000c D369 ldr r3, [r2, #28] 202 000e 43F01003 orr r3, r3, #16 203 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); 204 .loc 1 714 0 205 0014 1022 movs r2, #16 206 0016 1B4B ldr r3, .L20 207 0018 DA60 str r2, [r3, #12] ARM GAS /tmp/ccjBtVhA.s page 17 208 .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) 209 .loc 1 717 0 210 001a 1A4B ldr r3, .L20 211 001c DB68 ldr r3, [r3, #12] 212 001e 13F0200F tst r3, #32 213 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; 214 .loc 1 719 0 215 0024 184A ldr r2, .L20+4 216 0026 D369 ldr r3, [r2, #28] 217 0028 43F00803 orr r3, r3, #8 218 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); 219 .loc 1 722 0 220 002e 2022 movs r2, #32 221 0030 144B ldr r3, .L20 222 0032 DA60 str r2, [r3, #12] 223 .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) 224 .loc 1 725 0 225 0034 134B ldr r3, .L20 226 0036 DB68 ldr r3, [r3, #12] 227 0038 13F0400F tst r3, #64 228 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; 229 .loc 1 727 0 230 003e 124A ldr r2, .L20+4 231 0040 D369 ldr r3, [r2, #28] 232 0042 43F00403 orr r3, r3, #4 233 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); 234 .loc 1 730 0 235 0048 4022 movs r2, #64 236 004a 0E4B ldr r3, .L20 237 004c DA60 str r2, [r3, #12] 238 .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) 239 .loc 1 733 0 240 004e 0D4B ldr r3, .L20 241 0050 DB68 ldr r3, [r3, #12] 242 0052 13F0800F tst r3, #128 243 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; ARM GAS /tmp/ccjBtVhA.s page 18 244 .loc 1 735 0 245 0058 0B4A ldr r2, .L20+4 246 005a D369 ldr r3, [r2, #28] 247 005c 43F00203 orr r3, r3, #2 248 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); 249 .loc 1 738 0 250 0062 8022 movs r2, #128 251 0064 074B ldr r3, .L20 252 0066 DA60 str r2, [r3, #12] 253 .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) 254 .loc 1 749 0 255 0068 064B ldr r3, .L20 256 006a DB68 ldr r3, [r3, #12] 257 006c 13F0020F tst r3, #2 258 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; 259 .loc 1 751 0 260 0072 054A ldr r2, .L20+4 261 0074 D369 ldr r3, [r2, #28] 262 0076 43F02003 orr r3, r3, #32 263 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); 264 .loc 1 754 0 265 007c 0222 movs r2, #2 266 007e 014B ldr r3, .L20 267 0080 DA60 str r2, [r3, #12] 268 .L14: 269 0082 7047 bx lr 270 .L21: 271 .align 2 272 .L20: 273 0084 003C0240 .word 1073888256 274 0088 00000000 .word pFlash 275 .cfi_endproc 276 .LFE146: 278 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 279 .align 1 280 .global HAL_FLASH_Program_IT 281 .syntax unified 282 .thumb ARM GAS /tmp/ccjBtVhA.s page 19 283 .thumb_func 284 .fpu fpv4-sp-d16 286 HAL_FLASH_Program_IT: 287 .LFB131: 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 288 .loc 1 215 0 289 .cfi_startproc 290 @ args = 0, pretend = 0, frame = 0 291 @ frame_needed = 0, uses_anonymous_args = 0 292 .LVL4: 293 0000 70B5 push {r4, r5, r6, lr} 294 .LCFI2: 295 .cfi_def_cfa_offset 16 296 .cfi_offset 4, -16 297 .cfi_offset 5, -12 298 .cfi_offset 6, -8 299 .cfi_offset 14, -4 300 .LVL5: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 301 .loc 1 219 0 302 0002 194C ldr r4, .L32 303 0004 247E ldrb r4, [r4, #24] @ zero_extendqisi2 304 0006 012C cmp r4, #1 305 0008 2CD0 beq .L27 306 000a 0D46 mov r5, r1 307 000c 0446 mov r4, r0 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 308 .loc 1 219 0 is_stmt 0 discriminator 2 309 000e 1649 ldr r1, .L32 310 .LVL6: 311 0010 0120 movs r0, #1 312 .LVL7: 313 0012 0876 strb r0, [r1, #24] 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 314 .loc 1 225 0 is_stmt 1 discriminator 2 315 0014 1548 ldr r0, .L32+4 316 0016 0669 ldr r6, [r0, #16] 317 0018 46F08076 orr r6, r6, #16777216 318 001c 0661 str r6, [r0, #16] 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 319 .loc 1 228 0 discriminator 2 320 001e 0669 ldr r6, [r0, #16] 321 0020 46F00076 orr r6, r6, #33554432 322 0024 0661 str r6, [r0, #16] 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 323 .loc 1 230 0 discriminator 2 324 0026 0320 movs r0, #3 325 0028 0870 strb r0, [r1] 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 326 .loc 1 231 0 discriminator 2 327 002a 4D61 str r5, [r1, #20] 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 328 .loc 1 233 0 discriminator 2 329 002c 44B1 cbz r4, .L29 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 330 .loc 1 238 0 331 002e 012C cmp r4, #1 ARM GAS /tmp/ccjBtVhA.s page 20 332 0030 0CD0 beq .L30 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 333 .loc 1 243 0 334 0032 022C cmp r4, #2 335 0034 10D0 beq .L31 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 336 .loc 1 251 0 337 0036 2846 mov r0, r5 338 0038 FFF7FEFF bl FLASH_Program_DoubleWord 339 .LVL8: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 340 .loc 1 254 0 341 003c 0020 movs r0, #0 342 003e 70BD pop {r4, r5, r6, pc} 343 .LVL9: 344 .L29: 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 345 .loc 1 236 0 346 0040 D1B2 uxtb r1, r2 347 0042 2846 mov r0, r5 348 0044 FFF7FEFF bl FLASH_Program_Byte 349 .LVL10: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 350 .loc 1 254 0 351 0048 0020 movs r0, #0 352 004a 70BD pop {r4, r5, r6, pc} 353 .LVL11: 354 .L30: 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 355 .loc 1 241 0 356 004c 91B2 uxth r1, r2 357 004e 2846 mov r0, r5 358 0050 FFF7FEFF bl FLASH_Program_HalfWord 359 .LVL12: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 360 .loc 1 254 0 361 0054 0020 movs r0, #0 362 0056 70BD pop {r4, r5, r6, pc} 363 .LVL13: 364 .L31: 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 365 .loc 1 246 0 366 0058 1146 mov r1, r2 367 005a 2846 mov r0, r5 368 005c FFF7FEFF bl FLASH_Program_Word 369 .LVL14: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 370 .loc 1 254 0 371 0060 0020 movs r0, #0 372 0062 70BD pop {r4, r5, r6, pc} 373 .LVL15: 374 .L27: 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 375 .loc 1 219 0 376 0064 0220 movs r0, #2 377 .LVL16: 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccjBtVhA.s page 21 378 .loc 1 255 0 379 0066 70BD pop {r4, r5, r6, pc} 380 .L33: 381 .align 2 382 .L32: 383 0068 00000000 .word pFlash 384 006c 003C0240 .word 1073888256 385 .cfi_endproc 386 .LFE131: 388 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 389 .align 1 390 .weak HAL_FLASH_EndOfOperationCallback 391 .syntax unified 392 .thumb 393 .thumb_func 394 .fpu fpv4-sp-d16 396 HAL_FLASH_EndOfOperationCallback: 397 .LFB133: 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 398 .loc 1 385 0 399 .cfi_startproc 400 @ args = 0, pretend = 0, frame = 0 401 @ frame_needed = 0, uses_anonymous_args = 0 402 @ link register save eliminated. 403 .LVL17: 404 0000 7047 bx lr 405 .cfi_endproc 406 .LFE133: 408 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 409 .align 1 410 .weak HAL_FLASH_OperationErrorCallback 411 .syntax unified 412 .thumb 413 .thumb_func 414 .fpu fpv4-sp-d16 416 HAL_FLASH_OperationErrorCallback: 417 .LFB134: 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 418 .loc 1 402 0 419 .cfi_startproc 420 @ args = 0, pretend = 0, frame = 0 421 @ frame_needed = 0, uses_anonymous_args = 0 422 @ link register save eliminated. 423 .LVL18: 424 0000 7047 bx lr 425 .cfi_endproc 426 .LFE134: 428 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 429 .align 1 430 .global HAL_FLASH_IRQHandler 431 .syntax unified 432 .thumb 433 .thumb_func 434 .fpu fpv4-sp-d16 436 HAL_FLASH_IRQHandler: 437 .LFB132: 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; ARM GAS /tmp/ccjBtVhA.s page 22 438 .loc 1 262 0 439 .cfi_startproc 440 @ args = 0, pretend = 0, frame = 0 441 @ frame_needed = 0, uses_anonymous_args = 0 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 442 .loc 1 262 0 443 0000 10B5 push {r4, lr} 444 .LCFI3: 445 .cfi_def_cfa_offset 8 446 .cfi_offset 4, -8 447 .cfi_offset 14, -4 448 .LVL19: 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 449 .loc 1 270 0 450 0002 3A4B ldr r3, .L52 451 0004 DB68 ldr r3, [r3, #12] 452 0006 13F0F20F tst r3, #242 453 000a 13D0 beq .L37 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 454 .loc 1 274 0 455 000c 384B ldr r3, .L52+4 456 000e 1B78 ldrb r3, [r3] @ zero_extendqisi2 457 0010 DBB2 uxtb r3, r3 458 0012 012B cmp r3, #1 459 0014 3BD0 beq .L48 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 460 .loc 1 280 0 461 0016 364B ldr r3, .L52+4 462 0018 1B78 ldrb r3, [r3] @ zero_extendqisi2 463 001a DBB2 uxtb r3, r3 464 001c 022B cmp r3, #2 465 001e 3CD0 beq .L49 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 466 .loc 1 288 0 467 0020 334B ldr r3, .L52+4 468 0022 5C69 ldr r4, [r3, #20] 469 .LVL20: 470 .L39: 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 471 .loc 1 292 0 472 0024 FFF7FEFF bl FLASH_SetErrorCode 473 .LVL21: 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 474 .loc 1 295 0 475 0028 2046 mov r0, r4 476 002a FFF7FEFF bl HAL_FLASH_OperationErrorCallback 477 .LVL22: 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 478 .loc 1 298 0 479 002e 0022 movs r2, #0 480 0030 2F4B ldr r3, .L52+4 481 0032 1A70 strb r2, [r3] 482 .LVL23: 483 .L37: 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 484 .loc 1 302 0 485 0034 2D4B ldr r3, .L52 ARM GAS /tmp/ccjBtVhA.s page 23 486 0036 DB68 ldr r3, [r3, #12] 487 0038 13F0010F tst r3, #1 488 003c 13D0 beq .L41 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 489 .loc 1 305 0 490 003e 0122 movs r2, #1 491 0040 2A4B ldr r3, .L52 492 0042 DA60 str r2, [r3, #12] 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 493 .loc 1 307 0 494 0044 2A4B ldr r3, .L52+4 495 0046 1B78 ldrb r3, [r3] @ zero_extendqisi2 496 0048 DBB2 uxtb r3, r3 497 004a 9342 cmp r3, r2 498 004c 28D0 beq .L50 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 499 .loc 1 340 0 500 004e 284B ldr r3, .L52+4 501 0050 1B78 ldrb r3, [r3] @ zero_extendqisi2 502 0052 DBB2 uxtb r3, r3 503 0054 022B cmp r3, #2 504 0056 41D0 beq .L51 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 505 .loc 1 353 0 506 0058 254B ldr r3, .L52+4 507 005a 5869 ldr r0, [r3, #20] 508 005c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 509 .LVL24: 510 .L45: 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 511 .loc 1 355 0 512 0060 0022 movs r2, #0 513 0062 234B ldr r3, .L52+4 514 0064 1A70 strb r2, [r3] 515 .L41: 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 516 .loc 1 359 0 517 0066 224B ldr r3, .L52+4 518 0068 1B78 ldrb r3, [r3] @ zero_extendqisi2 519 006a 7BB9 cbnz r3, .L36 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 520 .loc 1 362 0 521 006c 1F4B ldr r3, .L52 522 006e 1A69 ldr r2, [r3, #16] 523 0070 22F0FF02 bic r2, r2, #255 524 0074 1A61 str r2, [r3, #16] 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 525 .loc 1 365 0 526 0076 1A69 ldr r2, [r3, #16] 527 0078 22F08072 bic r2, r2, #16777216 528 007c 1A61 str r2, [r3, #16] 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 529 .loc 1 368 0 530 007e 1A69 ldr r2, [r3, #16] 531 0080 22F00072 bic r2, r2, #33554432 532 0084 1A61 str r2, [r3, #16] 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccjBtVhA.s page 24 533 .loc 1 371 0 534 0086 0022 movs r2, #0 535 0088 194B ldr r3, .L52+4 536 008a 1A76 strb r2, [r3, #24] 537 .L36: 538 008c 10BD pop {r4, pc} 539 .LVL25: 540 .L48: 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 541 .loc 1 277 0 542 008e 184B ldr r3, .L52+4 543 0090 DC68 ldr r4, [r3, #12] 544 .LVL26: 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 545 .loc 1 278 0 546 0092 4FF0FF32 mov r2, #-1 547 0096 DA60 str r2, [r3, #12] 548 0098 C4E7 b .L39 549 .LVL27: 550 .L49: 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 551 .loc 1 283 0 552 009a 154B ldr r3, .L52+4 553 009c 1C69 ldr r4, [r3, #16] 554 .LVL28: 555 009e C1E7 b .L39 556 .LVL29: 557 .L50: 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 558 .loc 1 310 0 559 00a0 134B ldr r3, .L52+4 560 00a2 5A68 ldr r2, [r3, #4] 561 00a4 013A subs r2, r2, #1 562 00a6 5A60 str r2, [r3, #4] 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 563 .loc 1 313 0 564 00a8 5B68 ldr r3, [r3, #4] 565 00aa 5BB1 cbz r3, .L43 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 566 .loc 1 315 0 567 00ac 104C ldr r4, .L52+4 568 00ae E068 ldr r0, [r4, #12] 569 .LVL30: 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 570 .loc 1 317 0 571 00b0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 572 .LVL31: 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 573 .loc 1 320 0 574 00b4 E368 ldr r3, [r4, #12] 575 00b6 0133 adds r3, r3, #1 576 00b8 E360 str r3, [r4, #12] 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 577 .loc 1 321 0 578 00ba E068 ldr r0, [r4, #12] 579 .LVL32: 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccjBtVhA.s page 25 580 .loc 1 322 0 581 00bc 217A ldrb r1, [r4, #8] @ zero_extendqisi2 582 00be FFF7FEFF bl FLASH_Erase_Sector 583 .LVL33: 584 00c2 D0E7 b .L41 585 .L43: 586 .LVL34: 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 587 .loc 1 328 0 588 00c4 0A4B ldr r3, .L52+4 589 00c6 4FF0FF34 mov r4, #-1 590 00ca DC60 str r4, [r3, #12] 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 591 .loc 1 329 0 592 00cc 0022 movs r2, #0 593 00ce 1A70 strb r2, [r3] 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 594 .loc 1 332 0 595 00d0 FFF7FEFF bl FLASH_FlushCaches 596 .LVL35: 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 597 .loc 1 335 0 598 00d4 2046 mov r0, r4 599 00d6 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 600 .LVL36: 601 00da C4E7 b .L41 602 .LVL37: 603 .L51: 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 604 .loc 1 344 0 605 00dc FFF7FEFF bl FLASH_FlushCaches 606 .LVL38: 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 607 .loc 1 347 0 608 00e0 034B ldr r3, .L52+4 609 00e2 1869 ldr r0, [r3, #16] 610 00e4 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 611 .LVL39: 612 00e8 BAE7 b .L45 613 .L53: 614 00ea 00BF .align 2 615 .L52: 616 00ec 003C0240 .word 1073888256 617 00f0 00000000 .word pFlash 618 .cfi_endproc 619 .LFE132: 621 .section .text.HAL_FLASH_Unlock,"ax",%progbits 622 .align 1 623 .global HAL_FLASH_Unlock 624 .syntax unified 625 .thumb 626 .thumb_func 627 .fpu fpv4-sp-d16 629 HAL_FLASH_Unlock: 630 .LFB135: 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 631 .loc 1 434 0 ARM GAS /tmp/ccjBtVhA.s page 26 632 .cfi_startproc 633 @ args = 0, pretend = 0, frame = 0 634 @ frame_needed = 0, uses_anonymous_args = 0 635 @ link register save eliminated. 636 .LVL40: 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 637 .loc 1 437 0 638 0000 094B ldr r3, .L59 639 0002 1B69 ldr r3, [r3, #16] 640 0004 002B cmp r3, #0 641 0006 01DB blt .L58 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 642 .loc 1 435 0 643 0008 0020 movs r0, #0 644 000a 7047 bx lr 645 .L58: 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 646 .loc 1 440 0 647 000c 064B ldr r3, .L59 648 000e 074A ldr r2, .L59+4 649 0010 5A60 str r2, [r3, #4] 441:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 650 .loc 1 441 0 651 0012 02F18832 add r2, r2, #-2004318072 652 0016 5A60 str r2, [r3, #4] 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 653 .loc 1 444 0 654 0018 1B69 ldr r3, [r3, #16] 655 001a 002B cmp r3, #0 656 001c 01DB blt .L57 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 657 .loc 1 435 0 658 001e 0020 movs r0, #0 659 0020 7047 bx lr 660 .L57: 446:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 661 .loc 1 446 0 662 0022 0120 movs r0, #1 663 .LVL41: 451:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 664 .loc 1 451 0 665 0024 7047 bx lr 666 .L60: 667 0026 00BF .align 2 668 .L59: 669 0028 003C0240 .word 1073888256 670 002c 23016745 .word 1164378403 671 .cfi_endproc 672 .LFE135: 674 .section .text.HAL_FLASH_Lock,"ax",%progbits 675 .align 1 676 .global HAL_FLASH_Lock 677 .syntax unified 678 .thumb 679 .thumb_func 680 .fpu fpv4-sp-d16 682 HAL_FLASH_Lock: ARM GAS /tmp/ccjBtVhA.s page 27 683 .LFB136: 458:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 684 .loc 1 458 0 685 .cfi_startproc 686 @ args = 0, pretend = 0, frame = 0 687 @ frame_needed = 0, uses_anonymous_args = 0 688 @ link register save eliminated. 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 689 .loc 1 460 0 690 0000 034A ldr r2, .L62 691 0002 1369 ldr r3, [r2, #16] 692 0004 43F00043 orr r3, r3, #-2147483648 693 0008 1361 str r3, [r2, #16] 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 694 .loc 1 463 0 695 000a 0020 movs r0, #0 696 000c 7047 bx lr 697 .L63: 698 000e 00BF .align 2 699 .L62: 700 0010 003C0240 .word 1073888256 701 .cfi_endproc 702 .LFE136: 704 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 705 .align 1 706 .global HAL_FLASH_OB_Unlock 707 .syntax unified 708 .thumb 709 .thumb_func 710 .fpu fpv4-sp-d16 712 HAL_FLASH_OB_Unlock: 713 .LFB137: 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 714 .loc 1 470 0 715 .cfi_startproc 716 @ args = 0, pretend = 0, frame = 0 717 @ frame_needed = 0, uses_anonymous_args = 0 718 @ link register save eliminated. 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 719 .loc 1 471 0 720 0000 074B ldr r3, .L67 721 0002 5B69 ldr r3, [r3, #20] 722 0004 13F0010F tst r3, #1 723 0008 07D0 beq .L66 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 724 .loc 1 474 0 725 000a 054B ldr r3, .L67 726 000c 054A ldr r2, .L67+4 727 000e 9A60 str r2, [r3, #8] 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 728 .loc 1 475 0 729 0010 02F14432 add r2, r2, #1145324612 730 0014 9A60 str r2, [r3, #8] 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 731 .loc 1 482 0 732 0016 0020 movs r0, #0 733 0018 7047 bx lr ARM GAS /tmp/ccjBtVhA.s page 28 734 .L66: 479:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 735 .loc 1 479 0 736 001a 0120 movs r0, #1 483:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 737 .loc 1 483 0 738 001c 7047 bx lr 739 .L68: 740 001e 00BF .align 2 741 .L67: 742 0020 003C0240 .word 1073888256 743 0024 3B2A1908 .word 135866939 744 .cfi_endproc 745 .LFE137: 747 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 748 .align 1 749 .global HAL_FLASH_OB_Lock 750 .syntax unified 751 .thumb 752 .thumb_func 753 .fpu fpv4-sp-d16 755 HAL_FLASH_OB_Lock: 756 .LFB138: 490:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 757 .loc 1 490 0 758 .cfi_startproc 759 @ args = 0, pretend = 0, frame = 0 760 @ frame_needed = 0, uses_anonymous_args = 0 761 @ link register save eliminated. 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 762 .loc 1 492 0 763 0000 034A ldr r2, .L70 764 0002 5369 ldr r3, [r2, #20] 765 0004 43F00103 orr r3, r3, #1 766 0008 5361 str r3, [r2, #20] 495:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 767 .loc 1 495 0 768 000a 0020 movs r0, #0 769 000c 7047 bx lr 770 .L71: 771 000e 00BF .align 2 772 .L70: 773 0010 003C0240 .word 1073888256 774 .cfi_endproc 775 .LFE138: 777 .section .text.HAL_FLASH_GetError,"ax",%progbits 778 .align 1 779 .global HAL_FLASH_GetError 780 .syntax unified 781 .thumb 782 .thumb_func 783 .fpu fpv4-sp-d16 785 HAL_FLASH_GetError: 786 .LFB140: 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 787 .loc 1 539 0 788 .cfi_startproc ARM GAS /tmp/ccjBtVhA.s page 29 789 @ args = 0, pretend = 0, frame = 0 790 @ frame_needed = 0, uses_anonymous_args = 0 791 @ link register save eliminated. 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 792 .loc 1 540 0 793 0000 014B ldr r3, .L73 794 0002 D869 ldr r0, [r3, #28] 541:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 795 .loc 1 541 0 796 0004 7047 bx lr 797 .L74: 798 0006 00BF .align 2 799 .L73: 800 0008 00000000 .word pFlash 801 .cfi_endproc 802 .LFE140: 804 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 805 .align 1 806 .global FLASH_WaitForLastOperation 807 .syntax unified 808 .thumb 809 .thumb_func 810 .fpu fpv4-sp-d16 812 FLASH_WaitForLastOperation: 813 .LFB141: 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 814 .loc 1 553 0 815 .cfi_startproc 816 @ args = 0, pretend = 0, frame = 0 817 @ frame_needed = 0, uses_anonymous_args = 0 818 .LVL42: 819 0000 38B5 push {r3, r4, r5, lr} 820 .LCFI4: 821 .cfi_def_cfa_offset 16 822 .cfi_offset 3, -16 823 .cfi_offset 4, -12 824 .cfi_offset 5, -8 825 .cfi_offset 14, -4 826 0002 0446 mov r4, r0 827 .LVL43: 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 828 .loc 1 557 0 829 0004 0022 movs r2, #0 830 0006 154B ldr r3, .L87 831 0008 DA61 str r2, [r3, #28] 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 832 .loc 1 563 0 833 000a FFF7FEFF bl HAL_GetTick 834 .LVL44: 835 000e 0546 mov r5, r0 836 .LVL45: 837 .L77: 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 838 .loc 1 565 0 839 0010 134B ldr r3, .L87+4 840 0012 DB68 ldr r3, [r3, #12] 841 0014 13F4803F tst r3, #65536 ARM GAS /tmp/ccjBtVhA.s page 30 842 0018 0AD0 beq .L85 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 843 .loc 1 567 0 844 001a B4F1FF3F cmp r4, #-1 845 001e F7D0 beq .L77 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 846 .loc 1 569 0 847 0020 CCB1 cbz r4, .L81 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 848 .loc 1 569 0 is_stmt 0 discriminator 1 849 0022 FFF7FEFF bl HAL_GetTick 850 .LVL46: 851 0026 401B subs r0, r0, r5 852 0028 8442 cmp r4, r0 853 002a F1D2 bcs .L77 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 854 .loc 1 571 0 is_stmt 1 855 002c 0320 movs r0, #3 856 002e 38BD pop {r3, r4, r5, pc} 857 .LVL47: 858 .L85: 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 859 .loc 1 577 0 860 0030 0B4B ldr r3, .L87+4 861 0032 DB68 ldr r3, [r3, #12] 862 0034 13F0010F tst r3, #1 863 0038 02D0 beq .L80 580:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 864 .loc 1 580 0 865 003a 0122 movs r2, #1 866 003c 084B ldr r3, .L87+4 867 003e DA60 str r2, [r3, #12] 868 .L80: 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 869 .loc 1 586 0 870 0040 074B ldr r3, .L87+4 871 0042 DB68 ldr r3, [r3, #12] 872 0044 13F0F20F tst r3, #242 873 0048 01D1 bne .L86 596:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 874 .loc 1 596 0 875 004a 0020 movs r0, #0 598:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 876 .loc 1 598 0 877 004c 38BD pop {r3, r4, r5, pc} 878 .LVL48: 879 .L86: 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 880 .loc 1 591 0 881 004e FFF7FEFF bl FLASH_SetErrorCode 882 .LVL49: 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 883 .loc 1 592 0 884 0052 0120 movs r0, #1 885 0054 38BD pop {r3, r4, r5, pc} 886 .LVL50: 887 .L81: ARM GAS /tmp/ccjBtVhA.s page 31 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 888 .loc 1 571 0 889 0056 0320 movs r0, #3 890 0058 38BD pop {r3, r4, r5, pc} 891 .LVL51: 892 .L88: 893 005a 00BF .align 2 894 .L87: 895 005c 00000000 .word pFlash 896 0060 003C0240 .word 1073888256 897 .cfi_endproc 898 .LFE141: 900 .section .text.HAL_FLASH_Program,"ax",%progbits 901 .align 1 902 .global HAL_FLASH_Program 903 .syntax unified 904 .thumb 905 .thumb_func 906 .fpu fpv4-sp-d16 908 HAL_FLASH_Program: 909 .LFB130: 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 910 .loc 1 157 0 911 .cfi_startproc 912 @ args = 0, pretend = 0, frame = 0 913 @ frame_needed = 0, uses_anonymous_args = 0 914 .LVL52: 915 0000 2DE9F041 push {r4, r5, r6, r7, r8, lr} 916 .LCFI5: 917 .cfi_def_cfa_offset 24 918 .cfi_offset 4, -24 919 .cfi_offset 5, -20 920 .cfi_offset 6, -16 921 .cfi_offset 7, -12 922 .cfi_offset 8, -8 923 .cfi_offset 14, -4 924 .LVL53: 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 925 .loc 1 161 0 926 0004 1D4C ldr r4, .L102 927 0006 247E ldrb r4, [r4, #24] @ zero_extendqisi2 928 0008 012C cmp r4, #1 929 000a 03D1 bne .L98 930 000c 0224 movs r4, #2 931 .LVL54: 932 .L90: 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 933 .loc 1 203 0 934 000e 2046 mov r0, r4 935 0010 BDE8F081 pop {r4, r5, r6, r7, r8, pc} 936 .LVL55: 937 .L98: 938 0014 9846 mov r8, r3 939 0016 1746 mov r7, r2 940 0018 0E46 mov r6, r1 941 001a 0546 mov r5, r0 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccjBtVhA.s page 32 942 .loc 1 161 0 discriminator 2 943 001c 0122 movs r2, #1 944 .LVL56: 945 001e 174B ldr r3, .L102 946 0020 1A76 strb r2, [r3, #24] 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 947 .loc 1 167 0 discriminator 2 948 0022 4CF25030 movw r0, #50000 949 .LVL57: 950 0026 FFF7FEFF bl FLASH_WaitForLastOperation 951 .LVL58: 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 952 .loc 1 169 0 discriminator 2 953 002a 0446 mov r4, r0 954 002c 98B9 cbnz r0, .L91 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 955 .loc 1 171 0 956 002e B5B1 cbz r5, .L99 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 957 .loc 1 176 0 958 0030 012D cmp r5, #1 959 0032 19D0 beq .L100 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 960 .loc 1 181 0 961 0034 022D cmp r5, #2 962 0036 1CD0 beq .L101 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 963 .loc 1 189 0 964 0038 3A46 mov r2, r7 965 003a 4346 mov r3, r8 966 003c 3046 mov r0, r6 967 .LVL59: 968 003e FFF7FEFF bl FLASH_Program_DoubleWord 969 .LVL60: 970 .L93: 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 971 .loc 1 193 0 972 0042 4CF25030 movw r0, #50000 973 0046 FFF7FEFF bl FLASH_WaitForLastOperation 974 .LVL61: 975 004a 0446 mov r4, r0 976 .LVL62: 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 977 .loc 1 196 0 978 004c 0C4A ldr r2, .L102+4 979 004e 1369 ldr r3, [r2, #16] 980 0050 23F00103 bic r3, r3, #1 981 0054 1361 str r3, [r2, #16] 982 .LVL63: 983 .L91: 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 984 .loc 1 200 0 985 0056 0022 movs r2, #0 986 0058 084B ldr r3, .L102 987 005a 1A76 strb r2, [r3, #24] 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 988 .loc 1 202 0 ARM GAS /tmp/ccjBtVhA.s page 33 989 005c D7E7 b .L90 990 .LVL64: 991 .L99: 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 992 .loc 1 174 0 993 005e F9B2 uxtb r1, r7 994 0060 3046 mov r0, r6 995 .LVL65: 996 0062 FFF7FEFF bl FLASH_Program_Byte 997 .LVL66: 998 0066 ECE7 b .L93 999 .LVL67: 1000 .L100: 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1001 .loc 1 179 0 1002 0068 B9B2 uxth r1, r7 1003 006a 3046 mov r0, r6 1004 .LVL68: 1005 006c FFF7FEFF bl FLASH_Program_HalfWord 1006 .LVL69: 1007 0070 E7E7 b .L93 1008 .LVL70: 1009 .L101: 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1010 .loc 1 184 0 1011 0072 3946 mov r1, r7 1012 0074 3046 mov r0, r6 1013 .LVL71: 1014 0076 FFF7FEFF bl FLASH_Program_Word 1015 .LVL72: 1016 007a E2E7 b .L93 1017 .L103: 1018 .align 2 1019 .L102: 1020 007c 00000000 .word pFlash 1021 0080 003C0240 .word 1073888256 1022 .cfi_endproc 1023 .LFE130: 1025 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 1026 .align 1 1027 .global HAL_FLASH_OB_Launch 1028 .syntax unified 1029 .thumb 1030 .thumb_func 1031 .fpu fpv4-sp-d16 1033 HAL_FLASH_OB_Launch: 1034 .LFB139: 502:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 1035 .loc 1 502 0 1036 .cfi_startproc 1037 @ args = 0, pretend = 0, frame = 0 1038 @ frame_needed = 0, uses_anonymous_args = 0 1039 0000 08B5 push {r3, lr} 1040 .LCFI6: 1041 .cfi_def_cfa_offset 8 1042 .cfi_offset 3, -8 1043 .cfi_offset 14, -4 ARM GAS /tmp/ccjBtVhA.s page 34 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1044 .loc 1 504 0 1045 0002 054A ldr r2, .L106 1046 0004 1378 ldrb r3, [r2] @ zero_extendqisi2 1047 0006 43F00203 orr r3, r3, #2 1048 000a 1370 strb r3, [r2] 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1049 .loc 1 507 0 1050 000c 4CF25030 movw r0, #50000 1051 0010 FFF7FEFF bl FLASH_WaitForLastOperation 1052 .LVL73: 508:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1053 .loc 1 508 0 1054 0014 08BD pop {r3, pc} 1055 .L107: 1056 0016 00BF .align 2 1057 .L106: 1058 0018 143C0240 .word 1073888276 1059 .cfi_endproc 1060 .LFE139: 1062 .comm pFlash,32,4 1063 .text 1064 .Letext0: 1065 .file 2 "/usr/include/newlib/machine/_default_types.h" 1066 .file 3 "/usr/include/newlib/sys/_stdint.h" 1067 .file 4 "Drivers/CMSIS/Include/core_cm4.h" 1068 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h" 1069 .file 6 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h" 1070 .file 7 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" 1071 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" 1072 .file 9 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" 1073 .file 10 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" 1074 .file 11 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h" ARM GAS /tmp/ccjBtVhA.s page 35 DEFINED SYMBOLS *ABS*:0000000000000000 stm32f4xx_hal_flash.c /tmp/ccjBtVhA.s:18 .text.FLASH_Program_DoubleWord:0000000000000000 $t /tmp/ccjBtVhA.s:24 .text.FLASH_Program_DoubleWord:0000000000000000 FLASH_Program_DoubleWord /tmp/ccjBtVhA.s:63 .text.FLASH_Program_DoubleWord:0000000000000028 $d /tmp/ccjBtVhA.s:68 .text.FLASH_Program_Word:0000000000000000 $t /tmp/ccjBtVhA.s:74 .text.FLASH_Program_Word:0000000000000000 FLASH_Program_Word /tmp/ccjBtVhA.s:101 .text.FLASH_Program_Word:0000000000000020 $d /tmp/ccjBtVhA.s:106 .text.FLASH_Program_HalfWord:0000000000000000 $t /tmp/ccjBtVhA.s:112 .text.FLASH_Program_HalfWord:0000000000000000 FLASH_Program_HalfWord /tmp/ccjBtVhA.s:139 .text.FLASH_Program_HalfWord:0000000000000020 $d /tmp/ccjBtVhA.s:144 .text.FLASH_Program_Byte:0000000000000000 $t /tmp/ccjBtVhA.s:150 .text.FLASH_Program_Byte:0000000000000000 FLASH_Program_Byte /tmp/ccjBtVhA.s:176 .text.FLASH_Program_Byte:000000000000001c $d /tmp/ccjBtVhA.s:181 .text.FLASH_SetErrorCode:0000000000000000 $t /tmp/ccjBtVhA.s:187 .text.FLASH_SetErrorCode:0000000000000000 FLASH_SetErrorCode /tmp/ccjBtVhA.s:273 .text.FLASH_SetErrorCode:0000000000000084 $d *COM*:0000000000000020 pFlash /tmp/ccjBtVhA.s:279 .text.HAL_FLASH_Program_IT:0000000000000000 $t /tmp/ccjBtVhA.s:286 .text.HAL_FLASH_Program_IT:0000000000000000 HAL_FLASH_Program_IT /tmp/ccjBtVhA.s:383 .text.HAL_FLASH_Program_IT:0000000000000068 $d /tmp/ccjBtVhA.s:389 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 $t /tmp/ccjBtVhA.s:396 .text.HAL_FLASH_EndOfOperationCallback:0000000000000000 HAL_FLASH_EndOfOperationCallback /tmp/ccjBtVhA.s:409 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 $t /tmp/ccjBtVhA.s:416 .text.HAL_FLASH_OperationErrorCallback:0000000000000000 HAL_FLASH_OperationErrorCallback /tmp/ccjBtVhA.s:429 .text.HAL_FLASH_IRQHandler:0000000000000000 $t /tmp/ccjBtVhA.s:436 .text.HAL_FLASH_IRQHandler:0000000000000000 HAL_FLASH_IRQHandler /tmp/ccjBtVhA.s:616 .text.HAL_FLASH_IRQHandler:00000000000000ec $d /tmp/ccjBtVhA.s:622 .text.HAL_FLASH_Unlock:0000000000000000 $t /tmp/ccjBtVhA.s:629 .text.HAL_FLASH_Unlock:0000000000000000 HAL_FLASH_Unlock /tmp/ccjBtVhA.s:669 .text.HAL_FLASH_Unlock:0000000000000028 $d /tmp/ccjBtVhA.s:675 .text.HAL_FLASH_Lock:0000000000000000 $t /tmp/ccjBtVhA.s:682 .text.HAL_FLASH_Lock:0000000000000000 HAL_FLASH_Lock /tmp/ccjBtVhA.s:700 .text.HAL_FLASH_Lock:0000000000000010 $d /tmp/ccjBtVhA.s:705 .text.HAL_FLASH_OB_Unlock:0000000000000000 $t /tmp/ccjBtVhA.s:712 .text.HAL_FLASH_OB_Unlock:0000000000000000 HAL_FLASH_OB_Unlock /tmp/ccjBtVhA.s:742 .text.HAL_FLASH_OB_Unlock:0000000000000020 $d /tmp/ccjBtVhA.s:748 .text.HAL_FLASH_OB_Lock:0000000000000000 $t /tmp/ccjBtVhA.s:755 .text.HAL_FLASH_OB_Lock:0000000000000000 HAL_FLASH_OB_Lock /tmp/ccjBtVhA.s:773 .text.HAL_FLASH_OB_Lock:0000000000000010 $d /tmp/ccjBtVhA.s:778 .text.HAL_FLASH_GetError:0000000000000000 $t /tmp/ccjBtVhA.s:785 .text.HAL_FLASH_GetError:0000000000000000 HAL_FLASH_GetError /tmp/ccjBtVhA.s:800 .text.HAL_FLASH_GetError:0000000000000008 $d /tmp/ccjBtVhA.s:805 .text.FLASH_WaitForLastOperation:0000000000000000 $t /tmp/ccjBtVhA.s:812 .text.FLASH_WaitForLastOperation:0000000000000000 FLASH_WaitForLastOperation /tmp/ccjBtVhA.s:895 .text.FLASH_WaitForLastOperation:000000000000005c $d /tmp/ccjBtVhA.s:901 .text.HAL_FLASH_Program:0000000000000000 $t /tmp/ccjBtVhA.s:908 .text.HAL_FLASH_Program:0000000000000000 HAL_FLASH_Program /tmp/ccjBtVhA.s:1020 .text.HAL_FLASH_Program:000000000000007c $d /tmp/ccjBtVhA.s:1026 .text.HAL_FLASH_OB_Launch:0000000000000000 $t /tmp/ccjBtVhA.s:1033 .text.HAL_FLASH_OB_Launch:0000000000000000 HAL_FLASH_OB_Launch /tmp/ccjBtVhA.s:1058 .text.HAL_FLASH_OB_Launch:0000000000000018 $d .debug_frame:0000000000000010 $d UNDEFINED SYMBOLS FLASH_Erase_Sector FLASH_FlushCaches ARM GAS /tmp/ccjBtVhA.s page 36 HAL_GetTick