ARM GAS /tmp/ccot7YtA.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 1 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "stm32f4xx_hal_flash.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c" 20 .section .text.FLASH_Program_DoubleWord,"ax",%progbits 21 .align 1 22 .syntax unified 23 .thumb 24 .thumb_func 26 FLASH_Program_DoubleWord: 27 .LVL0: 28 .LFB251: 1:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 2:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 3:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @file stm32f4xx_hal_flash.c 4:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @author MCD Application Team 5:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver. 6:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This file provides firmware functions to manage the following 7:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * functionalities of the internal FLASH memory: 8:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Program operations functions 9:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Memory Control functions 10:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * + Peripheral Errors functions 11:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 12:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 13:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 14:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### FLASH peripheral features ##### 15:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 16:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 17:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The Flash memory interface manages CPU AHB I-Code and D-Code accesses 18:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to the Flash memory. It implements the erase and program Flash memory operations 19:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** and the read and write protection mechanisms. 20:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 21:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The Flash memory interface accelerates code execution with a system of instruction 22:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** prefetch and cache lines. 23:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 24:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] The FLASH main features are: 25:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Flash memory read operations 26:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Flash memory program/erase operations 27:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Read / write protections 28:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Prefetch on I-Code 29:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) 64 cache lines of 128 bits on I-Code 30:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) 8 cache lines of 128 bits on D-Code ARM GAS /tmp/ccot7YtA.s page 2 31:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 32:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 33:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### How to use this driver ##### 34:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 35:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 36:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH 37:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory of all STM32F4xx devices. 38:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 39:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) FLASH Memory IO Programming functions: 40:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and 41:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_Lock() functions 42:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Program functions: byte, half word, word and double word 43:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) There Two modes of programming : 44:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function 45:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function 46:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 47:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) Interrupts and flags management functions : 48:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() 49:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status 50:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Get error flag status by calling HAL_SetErrorCode() 51:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 52:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 53:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing 54:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to handle the following operations: 55:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Set the latency 56:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer 57:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache 58:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache 59:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts 60:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Monitor the FLASH flags status 61:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 62:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 63:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 64:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @attention 65:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 66:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Copyright (c) 2017 STMicroelectronics. 67:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * All rights reserved. 68:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 69:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in 70:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the root directory of this software component. 71:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 72:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 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 **** /* Includes ------------------------------------------------------------------*/ 76:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #include "stm32f4xx_hal.h" 77:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 78:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup STM32F4xx_HAL_Driver 79:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 80:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 81:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 82:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH FLASH 83:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver 84:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 85:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 86:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 87:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED ARM GAS /tmp/ccot7YtA.s page 3 88:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 89:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ 90:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ 91:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants 92:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 93:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 94:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE 50000U /* 50 s */ 95:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 96:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 97:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 98:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/ 99:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ 100:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Variables 101:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 102:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 103:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Variable used for Erase sectors under interruption */ 104:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash = {.ProcedureOnGoing = FLASH_PROC_NONE, 105:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .NbSectorsToErase = 0U, 106:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .VoltageForErase= FLASH_VOLTAGE_RANGE_1, 107:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .Sector = 0U, 108:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .Bank = FLASH_BANK_1, 109:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .Address = 0U, 110:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .Lock = HAL_UNLOCKED, 111:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** .ErrorCode = HAL_FLASH_ERROR_NONE}; 112:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 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 **** 116:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private function prototypes -----------------------------------------------*/ 117:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions 118:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 119:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 120:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program operations */ 121:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); 122:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data); 123:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); 124:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data); 125:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void); 126:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 127:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); 128:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 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 **** /* Exported functions --------------------------------------------------------*/ 133:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions 134:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 135:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 136:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 137:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 138:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Programming operation functions 139:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 140:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 141:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 142:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Programming operation functions ##### 143:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 144:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] ARM GAS /tmp/ccot7YtA.s page 4 145:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH 146:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** program operations. 147:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 148:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 149:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 150:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 151:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 152:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 153:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address 154:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 156:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 158:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 160:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 163:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status; 164:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Locked */ 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_LOCK(&pFlash); 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 168:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 170:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 173:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (status == HAL_OK) 175:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_BYTE) 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_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_HALFWORD) 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 183:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 185:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_WORD) 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 188:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 190:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 192:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 195:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 197:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 199:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG); ARM GAS /tmp/ccot7YtA.s page 5 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 204:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Unlocked */ 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 206:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 207:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 208:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 209:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 210:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 211:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address with interrupt ena 212:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 214:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 218:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 221:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 222:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 223:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 224:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable End of FLASH Operation interrupt */ 227:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 229:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable Error source interrupt */ 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 234:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (TypeProgram == FLASH_TYPEPROGRAM_BYTE) 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 237:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 239:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 242:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 244:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (TypeProgram == FLASH_TYPEPROGRAM_WORD) 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 247:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 249:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 250:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 252:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 253:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 256:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 258:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccot7YtA.s page 6 259:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 260:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. 261:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 263:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) 264:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 265:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 266:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 267:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH operation error flags */ 268:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 271:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty sector*/ 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 281:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if (pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 284:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty bank*/ 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Bank; 286:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 287:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 289:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty address*/ 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Address; 291:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the Error code*/ 294:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 296:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH error interrupt user callback */ 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(addresstmp); 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 299:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Stop the procedure ongoing*/ 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 301:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 303:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 306:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 311:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Nb of sector to erased can be decreased*/ 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.NbSectorsToErase--; 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 314:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check if there are still sectors to erase*/ 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.NbSectorsToErase != 0U) ARM GAS /tmp/ccot7YtA.s page 7 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 318:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 319:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Increment sector number*/ 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector++; 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 325:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 326:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 327:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*No more sectors to Erase, user callback can be called.*/ 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Reset Sector and stop Erase sectors procedure*/ 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = addresstmp = 0xFFFFFFFFU; 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 333:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 334:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches(); 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 336:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 337:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 338:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 339:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 341:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 343:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* MassErase ended. Return the selected bank */ 345:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 346:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches(); 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 348:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Bank); 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 351:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 352:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program ended. Return the selected address*/ 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); 356:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 358:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 360:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (pFlash.ProcedureOnGoing == FLASH_PROC_NONE) 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 363:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Operation is completed, disable the PG, SER, SNB and MER Bits */ 364: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)); 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable End of FLASH Operation interrupt */ 367:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP); 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 369:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable Error source interrupt */ 370:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR); 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 372:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccot7YtA.s page 8 373:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 374:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 375:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH end of operation interrupt callback 376:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 377:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 378:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector which has been erased 379:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * (if 0xFFFFFFFFU, it means that all the selected sectors have been erased) 380:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 381:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 382:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 383:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) 384:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 386:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 387:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 388:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file 389:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 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 **** * @brief FLASH operation error interrupt callback 394:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 395:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 396:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector number which returned an error 397:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 398:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 399:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 400:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) 401:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 403:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 404:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 405:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file 406:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 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 **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions 414:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief management functions 415:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 416:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 417:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 418:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Control functions ##### 419:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 420:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 421:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH 422:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory operations. 423:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 424:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 425:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 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 **** * @brief Unlock the FLASH control register access ARM GAS /tmp/ccot7YtA.s page 9 430:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 431:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 432:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) 433:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 438:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorize the FLASH Registers access */ 439:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1); 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 441:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 442:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Verify Flash is unlocked */ 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 445:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = HAL_ERROR; 446:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** return status; 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** * @brief Locks the FLASH control register access 454:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 455:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 456:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) 457:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 458:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_LOCK; 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 461:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** * @brief Unlock the FLASH Option Control Registers access. 466:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 467:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 468:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) 469:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if ((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 472:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorizes the Option Byte register programming */ 473:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY1; 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 476:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 477:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 478:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 479:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 480:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 481:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** * @brief Lock the FLASH Option Control Registers access. 486:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status ARM GAS /tmp/ccot7YtA.s page 10 487:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 488:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) 489:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 490:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK; 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 493:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** * @brief Launch the option byte loading. 498:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 499:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 500:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) 501:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 502:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 503:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t *)OPTCR_BYTE0_ADDRESS |= FLASH_OPTCR_OPTSTRT; 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 505:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 506:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions 514:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Peripheral Errors functions 515:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 516:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 517:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 518:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Errors functions ##### 519:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 520:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 521:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral. 522:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 523:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 524:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 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 **** * @brief Get the specific FLASH error flag. 529:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval FLASH_ErrorCode: The returned value can be a combination of: 530:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH Read Protection error flag (PCROP) 531:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming Sequence error flag 532:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGP: FLASH Programming Parallelism error flag 533:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag 534:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag 535:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag 536:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 537:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) 538:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 541:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 542:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 543:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} ARM GAS /tmp/ccot7YtA.s page 11 544:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 546:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 547:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. 548:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Timeout maximum flash operationtimeout 549:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 550:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 551:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) 552:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 554:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear Error Code */ 556:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 558:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 559:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 560:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** flag will be set */ 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Get tick */ 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** tickstart = HAL_GetTick(); 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** while (__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 566:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (Timeout != HAL_MAX_DELAY) 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if ((Timeout == 0U) || ((HAL_GetTick() - tickstart) > Timeout)) 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 570:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_TIMEOUT; 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 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 **** /* Check FLASH End of Operation flag */ 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 578:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 579:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 580:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 581:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 583:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 584:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 585:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 587:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 588:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 589:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the error code*/ 590:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 593:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 594:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If there is no error flag set */ 595:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 596:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 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 **** * @brief Program a double word (64-bit) at a specified address. ARM GAS /tmp/ccot7YtA.s page 12 601:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 602:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V and Vpp in the range 7V to 9V. 603:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 604:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 605:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 606:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 607:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 608:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 609:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 610:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 611:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) 612:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 29 .loc 1 612 1 view -0 30 .cfi_startproc 31 @ args = 0, pretend = 0, frame = 0 32 @ frame_needed = 0, uses_anonymous_args = 0 33 @ link register save eliminated. 34 .loc 1 612 1 is_stmt 0 view .LVU1 35 0000 10B4 push {r4} 36 .LCFI0: 37 .cfi_def_cfa_offset 4 38 .cfi_offset 4, -4 613:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 614:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 39 .loc 1 614 3 is_stmt 1 view .LVU2 615:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 616:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 617:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 40 .loc 1 617 3 view .LVU3 41 0002 0A49 ldr r1, .L3 42 0004 0C69 ldr r4, [r1, #16] 43 0006 24F44074 bic r4, r4, #768 44 000a 0C61 str r4, [r1, #16] 618:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; 45 .loc 1 618 3 view .LVU4 46 .loc 1 618 8 is_stmt 0 view .LVU5 47 000c 0C69 ldr r4, [r1, #16] 48 .loc 1 618 13 view .LVU6 49 000e 44F44074 orr r4, r4, #768 50 0012 0C61 str r4, [r1, #16] 619:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 51 .loc 1 619 3 is_stmt 1 view .LVU7 52 .loc 1 619 8 is_stmt 0 view .LVU8 53 0014 0C69 ldr r4, [r1, #16] 54 .loc 1 619 13 view .LVU9 55 0016 44F00104 orr r4, r4, #1 56 001a 0C61 str r4, [r1, #16] 620:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 621:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program first word */ 622:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t *)Address = (uint32_t)Data; 57 .loc 1 622 3 is_stmt 1 view .LVU10 58 .loc 1 622 29 is_stmt 0 view .LVU11 59 001c 0260 str r2, [r0] 623:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 624:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order 625:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (independently of compiler optimization behavior) */ 626:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __ISB(); ARM GAS /tmp/ccot7YtA.s page 13 60 .loc 1 626 3 is_stmt 1 view .LVU12 61 .LBB4: 62 .LBI4: 63 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.4.1 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 27. May 2021 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2021 Arm Limited. All rights reserved. 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 24:Drivers/CMSIS/Include/cmsis_gcc.h **** 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H 27:Drivers/CMSIS/Include/cmsis_gcc.h **** 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" 33:Drivers/CMSIS/Include/cmsis_gcc.h **** 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 38:Drivers/CMSIS/Include/cmsis_gcc.h **** 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) ARM GAS /tmp/ccot7YtA.s page 14 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED ARM GAS /tmp/ccot7YtA.s page 15 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 116:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __COMPILER_BARRIER 117:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __COMPILER_BARRIER() __ASM volatile("":::"memory") 118:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 119:Drivers/CMSIS/Include/cmsis_gcc.h **** 120:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ######################### Startup and Lowlevel Init ######################## */ 121:Drivers/CMSIS/Include/cmsis_gcc.h **** 122:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PROGRAM_START 123:Drivers/CMSIS/Include/cmsis_gcc.h **** 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Initializes data and bss sections 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details This default implementations initialized all data and additional bss 127:Drivers/CMSIS/Include/cmsis_gcc.h **** sections relying on .copy.table and .zero.table specified properly 128:Drivers/CMSIS/Include/cmsis_gcc.h **** in the used linker script. 129:Drivers/CMSIS/Include/cmsis_gcc.h **** 130:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void) 132:Drivers/CMSIS/Include/cmsis_gcc.h **** { 133:Drivers/CMSIS/Include/cmsis_gcc.h **** extern void _start(void) __NO_RETURN; 134:Drivers/CMSIS/Include/cmsis_gcc.h **** 135:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct { 136:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t const* src; 137:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest; 138:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen; 139:Drivers/CMSIS/Include/cmsis_gcc.h **** } __copy_table_t; 140:Drivers/CMSIS/Include/cmsis_gcc.h **** 141:Drivers/CMSIS/Include/cmsis_gcc.h **** typedef struct { 142:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t* dest; 143:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t wlen; 144:Drivers/CMSIS/Include/cmsis_gcc.h **** } __zero_table_t; 145:Drivers/CMSIS/Include/cmsis_gcc.h **** 146:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __copy_table_t __copy_table_start__; 147:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __copy_table_t __copy_table_end__; 148:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __zero_table_t __zero_table_start__; 149:Drivers/CMSIS/Include/cmsis_gcc.h **** extern const __zero_table_t __zero_table_end__; 150:Drivers/CMSIS/Include/cmsis_gcc.h **** 151:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__copy_table_t const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable 152:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; iwlen; ++i) { 153:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = pTable->src[i]; 154:Drivers/CMSIS/Include/cmsis_gcc.h **** } 155:Drivers/CMSIS/Include/cmsis_gcc.h **** } 156:Drivers/CMSIS/Include/cmsis_gcc.h **** 157:Drivers/CMSIS/Include/cmsis_gcc.h **** for (__zero_table_t const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable 158:Drivers/CMSIS/Include/cmsis_gcc.h **** for(uint32_t i=0u; iwlen; ++i) { 159:Drivers/CMSIS/Include/cmsis_gcc.h **** pTable->dest[i] = 0u; 160:Drivers/CMSIS/Include/cmsis_gcc.h **** } 161:Drivers/CMSIS/Include/cmsis_gcc.h **** } 162:Drivers/CMSIS/Include/cmsis_gcc.h **** 163:Drivers/CMSIS/Include/cmsis_gcc.h **** _start(); 164:Drivers/CMSIS/Include/cmsis_gcc.h **** } 165:Drivers/CMSIS/Include/cmsis_gcc.h **** 166:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PROGRAM_START __cmsis_start 167:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif ARM GAS /tmp/ccot7YtA.s page 16 168:Drivers/CMSIS/Include/cmsis_gcc.h **** 169:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INITIAL_SP 170:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INITIAL_SP __StackTop 171:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 172:Drivers/CMSIS/Include/cmsis_gcc.h **** 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STACK_LIMIT 174:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STACK_LIMIT __StackLimit 175:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 176:Drivers/CMSIS/Include/cmsis_gcc.h **** 177:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __VECTOR_TABLE 178:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __VECTOR_TABLE __Vectors 179:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 180:Drivers/CMSIS/Include/cmsis_gcc.h **** 181:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __VECTOR_TABLE_ATTRIBUTE 182:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors"))) 183:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 184:Drivers/CMSIS/Include/cmsis_gcc.h **** 185:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) 186:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STACK_SEAL 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STACK_SEAL __StackSeal 188:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 189:Drivers/CMSIS/Include/cmsis_gcc.h **** 190:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __TZ_STACK_SEAL_SIZE 191:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __TZ_STACK_SEAL_SIZE 8U 192:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 193:Drivers/CMSIS/Include/cmsis_gcc.h **** 194:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __TZ_STACK_SEAL_VALUE 195:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL 196:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 197:Drivers/CMSIS/Include/cmsis_gcc.h **** 198:Drivers/CMSIS/Include/cmsis_gcc.h **** 199:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_STACKSEAL_S (uint32_t* stackTop) { 200:Drivers/CMSIS/Include/cmsis_gcc.h **** *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE; 201:Drivers/CMSIS/Include/cmsis_gcc.h **** } 202:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 203:Drivers/CMSIS/Include/cmsis_gcc.h **** 204:Drivers/CMSIS/Include/cmsis_gcc.h **** 205:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ 206:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface 207:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions 208:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ 209:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 210:Drivers/CMSIS/Include/cmsis_gcc.h **** 211:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. 212:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" 213:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ 214:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) 215:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) 216:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) 217:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) 218:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 219:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) 220:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) 221:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) 222:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 223:Drivers/CMSIS/Include/cmsis_gcc.h **** 224:Drivers/CMSIS/Include/cmsis_gcc.h **** /** ARM GAS /tmp/ccot7YtA.s page 17 225:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation 226:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. 227:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 228:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") 229:Drivers/CMSIS/Include/cmsis_gcc.h **** 230:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt 232:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o 233:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 234:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi":::"memory") 235:Drivers/CMSIS/Include/cmsis_gcc.h **** 236:Drivers/CMSIS/Include/cmsis_gcc.h **** 237:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 238:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event 239:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter 240:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. 241:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 242:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe":::"memory") 243:Drivers/CMSIS/Include/cmsis_gcc.h **** 244:Drivers/CMSIS/Include/cmsis_gcc.h **** 245:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 246:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event 247:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. 248:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 249:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") 250:Drivers/CMSIS/Include/cmsis_gcc.h **** 251:Drivers/CMSIS/Include/cmsis_gcc.h **** 252:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 253:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier 254:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, 255:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, 256:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. 257:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 258:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) 64 .loc 2 258 27 view .LVU13 65 .LBB5: 259:Drivers/CMSIS/Include/cmsis_gcc.h **** { 260:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); 66 .loc 2 260 3 view .LVU14 67 .syntax unified 68 @ 260 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 69 001e BFF36F8F isb 0xF 70 @ 0 "" 2 71 .thumb 72 .syntax unified 73 .LBE5: 74 .LBE4: 627:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 628:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program second word */ 629:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t *)(Address + 4) = (uint32_t)(Data >> 32); 75 .loc 1 629 3 view .LVU15 76 .loc 1 629 35 is_stmt 0 view .LVU16 77 0022 4360 str r3, [r0, #4] 630:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 78 .loc 1 630 1 view .LVU17 79 0024 5DF8044B ldr r4, [sp], #4 80 .LCFI1: ARM GAS /tmp/ccot7YtA.s page 18 81 .cfi_restore 4 82 .cfi_def_cfa_offset 0 83 0028 7047 bx lr 84 .L4: 85 002a 00BF .align 2 86 .L3: 87 002c 003C0240 .word 1073888256 88 .cfi_endproc 89 .LFE251: 91 .section .text.FLASH_Program_Word,"ax",%progbits 92 .align 1 93 .syntax unified 94 .thumb 95 .thumb_func 97 FLASH_Program_Word: 98 .LVL1: 99 .LFB252: 631:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 632:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 633:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 634:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program word (32-bit) at a specified address. 635:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 636:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V. 637:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 638:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 639:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 640:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 641:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 642:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 643:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 644:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 645:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data) 646:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 100 .loc 1 646 1 is_stmt 1 view -0 101 .cfi_startproc 102 @ args = 0, pretend = 0, frame = 0 103 @ frame_needed = 0, uses_anonymous_args = 0 104 @ link register save eliminated. 647:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 648:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 105 .loc 1 648 3 view .LVU19 649:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 650:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 651:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 106 .loc 1 651 3 view .LVU20 107 0000 074B ldr r3, .L6 108 0002 1A69 ldr r2, [r3, #16] 109 0004 22F44072 bic r2, r2, #768 110 0008 1A61 str r2, [r3, #16] 652:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD; 111 .loc 1 652 3 view .LVU21 112 .loc 1 652 8 is_stmt 0 view .LVU22 113 000a 1A69 ldr r2, [r3, #16] 114 .loc 1 652 13 view .LVU23 115 000c 42F40072 orr r2, r2, #512 116 0010 1A61 str r2, [r3, #16] 653:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; ARM GAS /tmp/ccot7YtA.s page 19 117 .loc 1 653 3 is_stmt 1 view .LVU24 118 .loc 1 653 8 is_stmt 0 view .LVU25 119 0012 1A69 ldr r2, [r3, #16] 120 .loc 1 653 13 view .LVU26 121 0014 42F00102 orr r2, r2, #1 122 0018 1A61 str r2, [r3, #16] 654:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 655:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t *)Address = Data; 123 .loc 1 655 3 is_stmt 1 view .LVU27 124 .loc 1 655 29 is_stmt 0 view .LVU28 125 001a 0160 str r1, [r0] 656:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 126 .loc 1 656 1 view .LVU29 127 001c 7047 bx lr 128 .L7: 129 001e 00BF .align 2 130 .L6: 131 0020 003C0240 .word 1073888256 132 .cfi_endproc 133 .LFE252: 135 .section .text.FLASH_Program_HalfWord,"ax",%progbits 136 .align 1 137 .syntax unified 138 .thumb 139 .thumb_func 141 FLASH_Program_HalfWord: 142 .LVL2: 143 .LFB253: 657:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 658:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 659:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address. 660:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 661:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.1V to 3.6V. 662:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 663:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 664:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 665:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 666:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 667:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 668:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 669:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 670:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) 671:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 144 .loc 1 671 1 is_stmt 1 view -0 145 .cfi_startproc 146 @ args = 0, pretend = 0, frame = 0 147 @ frame_needed = 0, uses_anonymous_args = 0 148 @ link register save eliminated. 672:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 673:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 149 .loc 1 673 3 view .LVU31 674:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 675:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 676:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 150 .loc 1 676 3 view .LVU32 151 0000 074B ldr r3, .L9 152 0002 1A69 ldr r2, [r3, #16] ARM GAS /tmp/ccot7YtA.s page 20 153 0004 22F44072 bic r2, r2, #768 154 0008 1A61 str r2, [r3, #16] 677:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD; 155 .loc 1 677 3 view .LVU33 156 .loc 1 677 8 is_stmt 0 view .LVU34 157 000a 1A69 ldr r2, [r3, #16] 158 .loc 1 677 13 view .LVU35 159 000c 42F48072 orr r2, r2, #256 160 0010 1A61 str r2, [r3, #16] 678:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 161 .loc 1 678 3 is_stmt 1 view .LVU36 162 .loc 1 678 8 is_stmt 0 view .LVU37 163 0012 1A69 ldr r2, [r3, #16] 164 .loc 1 678 13 view .LVU38 165 0014 42F00102 orr r2, r2, #1 166 0018 1A61 str r2, [r3, #16] 679:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 680:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint16_t *)Address = Data; 167 .loc 1 680 3 is_stmt 1 view .LVU39 168 .loc 1 680 29 is_stmt 0 view .LVU40 169 001a 0180 strh r1, [r0] @ movhi 681:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 170 .loc 1 681 1 view .LVU41 171 001c 7047 bx lr 172 .L10: 173 001e 00BF .align 2 174 .L9: 175 0020 003C0240 .word 1073888256 176 .cfi_endproc 177 .LFE253: 179 .section .text.FLASH_Program_Byte,"ax",%progbits 180 .align 1 181 .syntax unified 182 .thumb 183 .thumb_func 185 FLASH_Program_Byte: 186 .LVL3: 187 .LFB254: 682:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 683:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 684:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte (8-bit) at a specified address. 685:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 686:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 1.8V to 3.6V. 687:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 688:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 689:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 690:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 691:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 692:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 693:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 694:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 695:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) 696:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 188 .loc 1 696 1 is_stmt 1 view -0 189 .cfi_startproc 190 @ args = 0, pretend = 0, frame = 0 191 @ frame_needed = 0, uses_anonymous_args = 0 ARM GAS /tmp/ccot7YtA.s page 21 192 @ link register save eliminated. 697:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 698:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 193 .loc 1 698 3 view .LVU43 699:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 700:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 701:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 194 .loc 1 701 3 view .LVU44 195 0000 064B ldr r3, .L12 196 0002 1A69 ldr r2, [r3, #16] 197 0004 22F44072 bic r2, r2, #768 198 0008 1A61 str r2, [r3, #16] 702:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE; 199 .loc 1 702 3 view .LVU45 200 .loc 1 702 8 is_stmt 0 view .LVU46 201 000a 1A69 ldr r2, [r3, #16] 202 .loc 1 702 13 view .LVU47 203 000c 1A61 str r2, [r3, #16] 703:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 204 .loc 1 703 3 is_stmt 1 view .LVU48 205 .loc 1 703 8 is_stmt 0 view .LVU49 206 000e 1A69 ldr r2, [r3, #16] 207 .loc 1 703 13 view .LVU50 208 0010 42F00102 orr r2, r2, #1 209 0014 1A61 str r2, [r3, #16] 704:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 705:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t *)Address = Data; 210 .loc 1 705 3 is_stmt 1 view .LVU51 211 .loc 1 705 28 is_stmt 0 view .LVU52 212 0016 0170 strb r1, [r0] 706:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 213 .loc 1 706 1 view .LVU53 214 0018 7047 bx lr 215 .L13: 216 001a 00BF .align 2 217 .L12: 218 001c 003C0240 .word 1073888256 219 .cfi_endproc 220 .LFE254: 222 .section .text.FLASH_SetErrorCode,"ax",%progbits 223 .align 1 224 .syntax unified 225 .thumb 226 .thumb_func 228 FLASH_SetErrorCode: 229 .LFB255: 707:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 708:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 709:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Set the specific FLASH error flag. 710:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 711:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 712:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void) 713:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 230 .loc 1 713 1 is_stmt 1 view -0 231 .cfi_startproc 232 @ args = 0, pretend = 0, frame = 0 233 @ frame_needed = 0, uses_anonymous_args = 0 ARM GAS /tmp/ccot7YtA.s page 22 234 @ link register save eliminated. 714:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) 235 .loc 1 714 3 view .LVU55 236 .loc 1 714 7 is_stmt 0 view .LVU56 237 0000 274B ldr r3, .L21 238 0002 DB68 ldr r3, [r3, #12] 239 .loc 1 714 6 view .LVU57 240 0004 13F0100F tst r3, #16 241 0008 07D0 beq .L15 715:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 716:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 242 .loc 1 716 5 is_stmt 1 view .LVU58 243 .loc 1 716 11 is_stmt 0 view .LVU59 244 000a 264A ldr r2, .L21+4 245 000c D369 ldr r3, [r2, #28] 246 .loc 1 716 22 view .LVU60 247 000e 43F01003 orr r3, r3, #16 248 0012 D361 str r3, [r2, #28] 717:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 718:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH write protection error pending bit */ 719:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR); 249 .loc 1 719 5 is_stmt 1 view .LVU61 250 0014 224B ldr r3, .L21 251 0016 1022 movs r2, #16 252 0018 DA60 str r2, [r3, #12] 253 .L15: 720:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 721:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 722:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) 254 .loc 1 722 3 view .LVU62 255 .loc 1 722 7 is_stmt 0 view .LVU63 256 001a 214B ldr r3, .L21 257 001c DB68 ldr r3, [r3, #12] 258 .loc 1 722 6 view .LVU64 259 001e 13F0200F tst r3, #32 260 0022 07D0 beq .L16 723:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 724:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 261 .loc 1 724 5 is_stmt 1 view .LVU65 262 .loc 1 724 11 is_stmt 0 view .LVU66 263 0024 1F4A ldr r2, .L21+4 264 0026 D369 ldr r3, [r2, #28] 265 .loc 1 724 22 view .LVU67 266 0028 43F00803 orr r3, r3, #8 267 002c D361 str r3, [r2, #28] 725:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 726:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming alignment error pending bit */ 727:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGAERR); 268 .loc 1 727 5 is_stmt 1 view .LVU68 269 002e 1C4B ldr r3, .L21 270 0030 2022 movs r2, #32 271 0032 DA60 str r2, [r3, #12] 272 .L16: 728:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 729:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 730:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) 273 .loc 1 730 3 view .LVU69 ARM GAS /tmp/ccot7YtA.s page 23 274 .loc 1 730 7 is_stmt 0 view .LVU70 275 0034 1A4B ldr r3, .L21 276 0036 DB68 ldr r3, [r3, #12] 277 .loc 1 730 6 view .LVU71 278 0038 13F0400F tst r3, #64 279 003c 07D0 beq .L17 731:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 732:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; 280 .loc 1 732 5 is_stmt 1 view .LVU72 281 .loc 1 732 11 is_stmt 0 view .LVU73 282 003e 194A ldr r2, .L21+4 283 0040 D369 ldr r3, [r2, #28] 284 .loc 1 732 22 view .LVU74 285 0042 43F00403 orr r3, r3, #4 286 0046 D361 str r3, [r2, #28] 733:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 734:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming parallelism error pending bit */ 735:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGPERR); 287 .loc 1 735 5 is_stmt 1 view .LVU75 288 0048 154B ldr r3, .L21 289 004a 4022 movs r2, #64 290 004c DA60 str r2, [r3, #12] 291 .L17: 736:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 737:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 738:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGSERR) != RESET) 292 .loc 1 738 3 view .LVU76 293 .loc 1 738 7 is_stmt 0 view .LVU77 294 004e 144B ldr r3, .L21 295 0050 DB68 ldr r3, [r3, #12] 296 .loc 1 738 6 view .LVU78 297 0052 13F0800F tst r3, #128 298 0056 07D0 beq .L18 739:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 740:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGS; 299 .loc 1 740 5 is_stmt 1 view .LVU79 300 .loc 1 740 11 is_stmt 0 view .LVU80 301 0058 124A ldr r2, .L21+4 302 005a D369 ldr r3, [r2, #28] 303 .loc 1 740 22 view .LVU81 304 005c 43F00203 orr r3, r3, #2 305 0060 D361 str r3, [r2, #28] 741:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 742:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming sequence error pending bit */ 743:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR); 306 .loc 1 743 5 is_stmt 1 view .LVU82 307 0062 0F4B ldr r3, .L21 308 0064 8022 movs r2, #128 309 0066 DA60 str r2, [r3, #12] 310 .L18: 744:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 745:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 746:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) 311 .loc 1 746 3 view .LVU83 312 .loc 1 746 7 is_stmt 0 view .LVU84 313 0068 0D4B ldr r3, .L21 314 006a DB68 ldr r3, [r3, #12] ARM GAS /tmp/ccot7YtA.s page 24 315 .loc 1 746 6 view .LVU85 316 006c 13F4807F tst r3, #256 317 0070 08D0 beq .L19 747:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 748:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 318 .loc 1 748 5 is_stmt 1 view .LVU86 319 .loc 1 748 11 is_stmt 0 view .LVU87 320 0072 0C4A ldr r2, .L21+4 321 0074 D369 ldr r3, [r2, #28] 322 .loc 1 748 22 view .LVU88 323 0076 43F00103 orr r3, r3, #1 324 007a D361 str r3, [r2, #28] 749:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 750:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Proprietary readout protection error pending bit */ 751:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_RDERR); 325 .loc 1 751 5 is_stmt 1 view .LVU89 326 007c 084B ldr r3, .L21 327 007e 4FF48072 mov r2, #256 328 0082 DA60 str r2, [r3, #12] 329 .L19: 752:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 753:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 754:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) 330 .loc 1 754 3 view .LVU90 331 .loc 1 754 7 is_stmt 0 view .LVU91 332 0084 064B ldr r3, .L21 333 0086 DB68 ldr r3, [r3, #12] 334 .loc 1 754 6 view .LVU92 335 0088 13F0020F tst r3, #2 336 008c 07D0 beq .L14 755:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 756:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; 337 .loc 1 756 5 is_stmt 1 view .LVU93 338 .loc 1 756 11 is_stmt 0 view .LVU94 339 008e 054A ldr r2, .L21+4 340 0090 D369 ldr r3, [r2, #28] 341 .loc 1 756 22 view .LVU95 342 0092 43F02003 orr r3, r3, #32 343 0096 D361 str r3, [r2, #28] 757:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 758:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Operation error pending bit */ 759:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPERR); 344 .loc 1 759 5 is_stmt 1 view .LVU96 345 0098 014B ldr r3, .L21 346 009a 0222 movs r2, #2 347 009c DA60 str r2, [r3, #12] 348 .L14: 760:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 761:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 349 .loc 1 761 1 is_stmt 0 view .LVU97 350 009e 7047 bx lr 351 .L22: 352 .align 2 353 .L21: 354 00a0 003C0240 .word 1073888256 355 00a4 00000000 .word pFlash 356 .cfi_endproc ARM GAS /tmp/ccot7YtA.s page 25 357 .LFE255: 359 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 360 .align 1 361 .global HAL_FLASH_Program_IT 362 .syntax unified 363 .thumb 364 .thumb_func 366 HAL_FLASH_Program_IT: 367 .LVL4: 368 .LFB240: 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 369 .loc 1 220 1 is_stmt 1 view -0 370 .cfi_startproc 371 @ args = 0, pretend = 0, frame = 0 372 @ frame_needed = 0, uses_anonymous_args = 0 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 373 .loc 1 220 1 is_stmt 0 view .LVU99 374 0000 70B5 push {r4, r5, r6, lr} 375 .LCFI2: 376 .cfi_def_cfa_offset 16 377 .cfi_offset 4, -16 378 .cfi_offset 5, -12 379 .cfi_offset 6, -8 380 .cfi_offset 14, -4 381 0002 0646 mov r6, r0 382 0004 0846 mov r0, r1 383 .LVL5: 221:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 384 .loc 1 221 3 is_stmt 1 view .LVU100 224:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 385 .loc 1 224 3 view .LVU101 227:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 386 .loc 1 227 3 view .LVU102 387 0006 114C ldr r4, .L32 388 0008 2569 ldr r5, [r4, #16] 389 000a 45F08075 orr r5, r5, #16777216 390 000e 2561 str r5, [r4, #16] 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 391 .loc 1 230 3 view .LVU103 392 0010 2569 ldr r5, [r4, #16] 393 0012 45F00075 orr r5, r5, #33554432 394 0016 2561 str r5, [r4, #16] 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 395 .loc 1 232 3 view .LVU104 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 396 .loc 1 232 27 is_stmt 0 view .LVU105 397 0018 0D49 ldr r1, .L32+4 398 .LVL6: 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 399 .loc 1 232 27 view .LVU106 400 001a 0324 movs r4, #3 401 001c 0C70 strb r4, [r1] 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 402 .loc 1 233 3 is_stmt 1 view .LVU107 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 403 .loc 1 233 18 is_stmt 0 view .LVU108 404 001e 4861 str r0, [r1, #20] ARM GAS /tmp/ccot7YtA.s page 26 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 405 .loc 1 235 3 is_stmt 1 view .LVU109 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 406 .loc 1 235 6 is_stmt 0 view .LVU110 407 0020 3EB1 cbz r6, .L29 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 408 .loc 1 240 8 is_stmt 1 view .LVU111 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 409 .loc 1 240 11 is_stmt 0 view .LVU112 410 0022 012E cmp r6, #1 411 0024 09D0 beq .L30 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 412 .loc 1 245 8 is_stmt 1 view .LVU113 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 413 .loc 1 245 11 is_stmt 0 view .LVU114 414 0026 022E cmp r6, #2 415 0028 0BD0 beq .L31 253:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 416 .loc 1 253 5 is_stmt 1 view .LVU115 417 002a FFF7FEFF bl FLASH_Program_DoubleWord 418 .LVL7: 419 .L25: 256:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 420 .loc 1 256 3 view .LVU116 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 421 .loc 1 257 1 is_stmt 0 view .LVU117 422 002e 0020 movs r0, #0 423 0030 70BD pop {r4, r5, r6, pc} 424 .LVL8: 425 .L29: 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 426 .loc 1 238 5 is_stmt 1 view .LVU118 427 0032 D1B2 uxtb r1, r2 428 0034 FFF7FEFF bl FLASH_Program_Byte 429 .LVL9: 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 430 .loc 1 238 5 is_stmt 0 view .LVU119 431 0038 F9E7 b .L25 432 .LVL10: 433 .L30: 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 434 .loc 1 243 5 is_stmt 1 view .LVU120 435 003a 91B2 uxth r1, r2 436 003c FFF7FEFF bl FLASH_Program_HalfWord 437 .LVL11: 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 438 .loc 1 243 5 is_stmt 0 view .LVU121 439 0040 F5E7 b .L25 440 .LVL12: 441 .L31: 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 442 .loc 1 248 5 is_stmt 1 view .LVU122 443 0042 1146 mov r1, r2 444 0044 FFF7FEFF bl FLASH_Program_Word 445 .LVL13: 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 446 .loc 1 248 5 is_stmt 0 view .LVU123 ARM GAS /tmp/ccot7YtA.s page 27 447 0048 F1E7 b .L25 448 .L33: 449 004a 00BF .align 2 450 .L32: 451 004c 003C0240 .word 1073888256 452 0050 00000000 .word pFlash 453 .cfi_endproc 454 .LFE240: 456 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 457 .align 1 458 .weak HAL_FLASH_EndOfOperationCallback 459 .syntax unified 460 .thumb 461 .thumb_func 463 HAL_FLASH_EndOfOperationCallback: 464 .LVL14: 465 .LFB242: 384:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 466 .loc 1 384 1 is_stmt 1 view -0 467 .cfi_startproc 468 @ args = 0, pretend = 0, frame = 0 469 @ frame_needed = 0, uses_anonymous_args = 0 470 @ link register save eliminated. 386:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 471 .loc 1 386 3 view .LVU125 390:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 472 .loc 1 390 1 is_stmt 0 view .LVU126 473 0000 7047 bx lr 474 .cfi_endproc 475 .LFE242: 477 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 478 .align 1 479 .weak HAL_FLASH_OperationErrorCallback 480 .syntax unified 481 .thumb 482 .thumb_func 484 HAL_FLASH_OperationErrorCallback: 485 .LVL15: 486 .LFB243: 401:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 487 .loc 1 401 1 is_stmt 1 view -0 488 .cfi_startproc 489 @ args = 0, pretend = 0, frame = 0 490 @ frame_needed = 0, uses_anonymous_args = 0 491 @ link register save eliminated. 403:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 492 .loc 1 403 3 view .LVU128 407:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 493 .loc 1 407 1 is_stmt 0 view .LVU129 494 0000 7047 bx lr 495 .cfi_endproc 496 .LFE243: 498 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 499 .align 1 500 .global HAL_FLASH_IRQHandler 501 .syntax unified 502 .thumb ARM GAS /tmp/ccot7YtA.s page 28 503 .thumb_func 505 HAL_FLASH_IRQHandler: 506 .LFB241: 264:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 507 .loc 1 264 1 is_stmt 1 view -0 508 .cfi_startproc 509 @ args = 0, pretend = 0, frame = 0 510 @ frame_needed = 0, uses_anonymous_args = 0 511 0000 10B5 push {r4, lr} 512 .LCFI3: 513 .cfi_def_cfa_offset 8 514 .cfi_offset 4, -8 515 .cfi_offset 14, -4 265:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 516 .loc 1 265 3 view .LVU131 517 .LVL16: 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 518 .loc 1 269 3 view .LVU132 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 519 .loc 1 269 7 is_stmt 0 view .LVU133 520 0002 394B ldr r3, .L52 521 0004 DB68 ldr r3, [r3, #12] 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 522 .loc 1 269 6 view .LVU134 523 0006 13F4F97F tst r3, #498 524 000a 13D0 beq .L37 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 525 .loc 1 276 5 is_stmt 1 view .LVU135 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 526 .loc 1 276 15 is_stmt 0 view .LVU136 527 000c 374B ldr r3, .L52+4 528 000e 1B78 ldrb r3, [r3] @ zero_extendqisi2 529 0010 DBB2 uxtb r3, r3 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 530 .loc 1 276 8 view .LVU137 531 0012 012B cmp r3, #1 532 0014 3AD0 beq .L48 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 533 .loc 1 282 10 is_stmt 1 view .LVU138 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 534 .loc 1 282 20 is_stmt 0 view .LVU139 535 0016 354B ldr r3, .L52+4 536 0018 1B78 ldrb r3, [r3] @ zero_extendqisi2 537 001a DBB2 uxtb r3, r3 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 538 .loc 1 282 13 view .LVU140 539 001c 022B cmp r3, #2 540 001e 3BD0 beq .L49 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 541 .loc 1 290 7 is_stmt 1 view .LVU141 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 542 .loc 1 290 18 is_stmt 0 view .LVU142 543 0020 324B ldr r3, .L52+4 544 0022 5C69 ldr r4, [r3, #20] 545 .LVL17: 546 .L39: 294:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS /tmp/ccot7YtA.s page 29 547 .loc 1 294 5 is_stmt 1 view .LVU143 548 0024 FFF7FEFF bl FLASH_SetErrorCode 549 .LVL18: 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 550 .loc 1 297 5 view .LVU144 551 0028 2046 mov r0, r4 552 002a FFF7FEFF bl HAL_FLASH_OperationErrorCallback 553 .LVL19: 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 554 .loc 1 300 5 view .LVU145 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 555 .loc 1 300 29 is_stmt 0 view .LVU146 556 002e 2F4B ldr r3, .L52+4 557 0030 0022 movs r2, #0 558 0032 1A70 strb r2, [r3] 559 .LVL20: 560 .L37: 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 561 .loc 1 304 3 is_stmt 1 view .LVU147 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 562 .loc 1 304 7 is_stmt 0 view .LVU148 563 0034 2C4B ldr r3, .L52 564 0036 DB68 ldr r3, [r3, #12] 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 565 .loc 1 304 6 view .LVU149 566 0038 13F0010F tst r3, #1 567 003c 13D0 beq .L41 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 568 .loc 1 307 5 is_stmt 1 view .LVU150 569 003e 2A4B ldr r3, .L52 570 0040 0122 movs r2, #1 571 0042 DA60 str r2, [r3, #12] 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 572 .loc 1 309 5 view .LVU151 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 573 .loc 1 309 15 is_stmt 0 view .LVU152 574 0044 294B ldr r3, .L52+4 575 0046 1B78 ldrb r3, [r3] @ zero_extendqisi2 576 0048 DBB2 uxtb r3, r3 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 577 .loc 1 309 8 view .LVU153 578 004a 9342 cmp r3, r2 579 004c 27D0 beq .L50 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 580 .loc 1 342 7 is_stmt 1 view .LVU154 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 581 .loc 1 342 17 is_stmt 0 view .LVU155 582 004e 274B ldr r3, .L52+4 583 0050 1B78 ldrb r3, [r3] @ zero_extendqisi2 584 0052 DBB2 uxtb r3, r3 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 585 .loc 1 342 10 view .LVU156 586 0054 022B cmp r3, #2 587 0056 40D0 beq .L51 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 588 .loc 1 355 9 is_stmt 1 view .LVU157 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS /tmp/ccot7YtA.s page 30 589 .loc 1 355 48 is_stmt 0 view .LVU158 590 0058 244B ldr r3, .L52+4 591 005a 5869 ldr r0, [r3, #20] 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 592 .loc 1 355 9 view .LVU159 593 005c FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 594 .LVL21: 595 .L45: 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 596 .loc 1 357 7 is_stmt 1 view .LVU160 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 597 .loc 1 357 31 is_stmt 0 view .LVU161 598 0060 224B ldr r3, .L52+4 599 0062 0022 movs r2, #0 600 0064 1A70 strb r2, [r3] 601 .L41: 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 602 .loc 1 361 3 is_stmt 1 view .LVU162 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 603 .loc 1 361 13 is_stmt 0 view .LVU163 604 0066 214B ldr r3, .L52+4 605 0068 1B78 ldrb r3, [r3] @ zero_extendqisi2 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 606 .loc 1 361 6 view .LVU164 607 006a 73B9 cbnz r3, .L36 364:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 608 .loc 1 364 5 is_stmt 1 view .LVU165 609 006c 1E4B ldr r3, .L52 610 006e 1A69 ldr r2, [r3, #16] 611 0070 22F40042 bic r2, r2, #32768 612 0074 22F0FF02 bic r2, r2, #255 613 0078 1A61 str r2, [r3, #16] 367:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 614 .loc 1 367 5 view .LVU166 615 007a 1A69 ldr r2, [r3, #16] 616 007c 22F08072 bic r2, r2, #16777216 617 0080 1A61 str r2, [r3, #16] 370:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 618 .loc 1 370 5 view .LVU167 619 0082 1A69 ldr r2, [r3, #16] 620 0084 22F00072 bic r2, r2, #33554432 621 0088 1A61 str r2, [r3, #16] 622 .L36: 372:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 623 .loc 1 372 1 is_stmt 0 view .LVU168 624 008a 10BD pop {r4, pc} 625 .LVL22: 626 .L48: 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 627 .loc 1 279 7 is_stmt 1 view .LVU169 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 628 .loc 1 279 18 is_stmt 0 view .LVU170 629 008c 174B ldr r3, .L52+4 630 008e DC68 ldr r4, [r3, #12] 631 .LVL23: 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 632 .loc 1 280 7 is_stmt 1 view .LVU171 ARM GAS /tmp/ccot7YtA.s page 31 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 633 .loc 1 280 21 is_stmt 0 view .LVU172 634 0090 4FF0FF32 mov r2, #-1 635 0094 DA60 str r2, [r3, #12] 636 0096 C5E7 b .L39 637 .LVL24: 638 .L49: 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 639 .loc 1 285 7 is_stmt 1 view .LVU173 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 640 .loc 1 285 18 is_stmt 0 view .LVU174 641 0098 144B ldr r3, .L52+4 642 009a 1C69 ldr r4, [r3, #16] 643 .LVL25: 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 644 .loc 1 285 18 view .LVU175 645 009c C2E7 b .L39 646 .LVL26: 647 .L50: 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 648 .loc 1 312 7 is_stmt 1 view .LVU176 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 649 .loc 1 312 13 is_stmt 0 view .LVU177 650 009e 134B ldr r3, .L52+4 651 00a0 5A68 ldr r2, [r3, #4] 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 652 .loc 1 312 30 view .LVU178 653 00a2 013A subs r2, r2, #1 654 00a4 5A60 str r2, [r3, #4] 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 655 .loc 1 315 7 is_stmt 1 view .LVU179 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 656 .loc 1 315 17 is_stmt 0 view .LVU180 657 00a6 5B68 ldr r3, [r3, #4] 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 658 .loc 1 315 10 view .LVU181 659 00a8 5BB1 cbz r3, .L43 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 660 .loc 1 317 9 is_stmt 1 view .LVU182 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 661 .loc 1 317 20 is_stmt 0 view .LVU183 662 00aa 104C ldr r4, .L52+4 663 00ac E068 ldr r0, [r4, #12] 664 .LVL27: 319:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 665 .loc 1 319 9 is_stmt 1 view .LVU184 666 00ae FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 667 .LVL28: 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 668 .loc 1 322 9 view .LVU185 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 669 .loc 1 322 15 is_stmt 0 view .LVU186 670 00b2 E368 ldr r3, [r4, #12] 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 671 .loc 1 322 22 view .LVU187 672 00b4 0133 adds r3, r3, #1 673 00b6 E360 str r3, [r4, #12] ARM GAS /tmp/ccot7YtA.s page 32 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 674 .loc 1 323 9 is_stmt 1 view .LVU188 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 675 .loc 1 323 20 is_stmt 0 view .LVU189 676 00b8 E068 ldr r0, [r4, #12] 677 .LVL29: 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 678 .loc 1 324 9 is_stmt 1 view .LVU190 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 679 .loc 1 324 46 is_stmt 0 view .LVU191 680 00ba 217A ldrb r1, [r4, #8] @ zero_extendqisi2 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 681 .loc 1 324 9 view .LVU192 682 00bc FFF7FEFF bl FLASH_Erase_Sector 683 .LVL30: 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 684 .loc 1 324 9 view .LVU193 685 00c0 D1E7 b .L41 686 .LVL31: 687 .L43: 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 688 .loc 1 330 9 is_stmt 1 view .LVU194 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 689 .loc 1 330 23 is_stmt 0 view .LVU195 690 00c2 0A4B ldr r3, .L52+4 691 00c4 4FF0FF34 mov r4, #-1 692 00c8 DC60 str r4, [r3, #12] 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 693 .loc 1 331 9 is_stmt 1 view .LVU196 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 694 .loc 1 331 33 is_stmt 0 view .LVU197 695 00ca 0022 movs r2, #0 696 00cc 1A70 strb r2, [r3] 334:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 697 .loc 1 334 9 is_stmt 1 view .LVU198 698 00ce FFF7FEFF bl FLASH_FlushCaches 699 .LVL32: 337:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 700 .loc 1 337 9 view .LVU199 701 00d2 2046 mov r0, r4 702 00d4 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 703 .LVL33: 704 00d8 C5E7 b .L41 705 .LVL34: 706 .L51: 346:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 707 .loc 1 346 9 view .LVU200 708 00da FFF7FEFF bl FLASH_FlushCaches 709 .LVL35: 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 710 .loc 1 349 9 view .LVU201 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 711 .loc 1 349 48 is_stmt 0 view .LVU202 712 00de 034B ldr r3, .L52+4 713 00e0 1869 ldr r0, [r3, #16] 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 714 .loc 1 349 9 view .LVU203 ARM GAS /tmp/ccot7YtA.s page 33 715 00e2 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 716 .LVL36: 717 00e6 BBE7 b .L45 718 .L53: 719 .align 2 720 .L52: 721 00e8 003C0240 .word 1073888256 722 00ec 00000000 .word pFlash 723 .cfi_endproc 724 .LFE241: 726 .section .text.HAL_FLASH_Unlock,"ax",%progbits 727 .align 1 728 .global HAL_FLASH_Unlock 729 .syntax unified 730 .thumb 731 .thumb_func 733 HAL_FLASH_Unlock: 734 .LFB244: 433:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 735 .loc 1 433 1 is_stmt 1 view -0 736 .cfi_startproc 737 @ args = 0, pretend = 0, frame = 0 738 @ frame_needed = 0, uses_anonymous_args = 0 739 @ link register save eliminated. 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 740 .loc 1 434 3 view .LVU205 741 .LVL37: 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 742 .loc 1 436 3 view .LVU206 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 743 .loc 1 436 7 is_stmt 0 view .LVU207 744 0000 094B ldr r3, .L59 745 0002 1B69 ldr r3, [r3, #16] 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 746 .loc 1 436 6 view .LVU208 747 0004 002B cmp r3, #0 748 0006 01DB blt .L58 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 749 .loc 1 434 21 view .LVU209 750 0008 0020 movs r0, #0 751 000a 7047 bx lr 752 .L58: 439:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 753 .loc 1 439 5 is_stmt 1 view .LVU210 754 000c 064B ldr r3, .L59 755 000e 074A ldr r2, .L59+4 756 0010 5A60 str r2, [r3, #4] 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 757 .loc 1 440 5 view .LVU211 758 0012 02F18832 add r2, r2, #-2004318072 759 0016 5A60 str r2, [r3, #4] 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 760 .loc 1 443 5 view .LVU212 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 761 .loc 1 443 9 is_stmt 0 view .LVU213 762 0018 1B69 ldr r3, [r3, #16] 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { ARM GAS /tmp/ccot7YtA.s page 34 763 .loc 1 443 8 view .LVU214 764 001a 002B cmp r3, #0 765 001c 01DB blt .L57 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 766 .loc 1 434 21 view .LVU215 767 001e 0020 movs r0, #0 768 0020 7047 bx lr 769 .L57: 445:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 770 .loc 1 445 14 view .LVU216 771 0022 0120 movs r0, #1 772 .LVL38: 449:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 773 .loc 1 449 3 is_stmt 1 view .LVU217 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 774 .loc 1 450 1 is_stmt 0 view .LVU218 775 0024 7047 bx lr 776 .L60: 777 0026 00BF .align 2 778 .L59: 779 0028 003C0240 .word 1073888256 780 002c 23016745 .word 1164378403 781 .cfi_endproc 782 .LFE244: 784 .section .text.HAL_FLASH_Lock,"ax",%progbits 785 .align 1 786 .global HAL_FLASH_Lock 787 .syntax unified 788 .thumb 789 .thumb_func 791 HAL_FLASH_Lock: 792 .LFB245: 457:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 793 .loc 1 457 1 is_stmt 1 view -0 794 .cfi_startproc 795 @ args = 0, pretend = 0, frame = 0 796 @ frame_needed = 0, uses_anonymous_args = 0 797 @ link register save eliminated. 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 798 .loc 1 459 3 view .LVU220 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 799 .loc 1 459 8 is_stmt 0 view .LVU221 800 0000 034A ldr r2, .L62 801 0002 1369 ldr r3, [r2, #16] 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 802 .loc 1 459 13 view .LVU222 803 0004 43F00043 orr r3, r3, #-2147483648 804 0008 1361 str r3, [r2, #16] 461:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 805 .loc 1 461 3 is_stmt 1 view .LVU223 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 806 .loc 1 462 1 is_stmt 0 view .LVU224 807 000a 0020 movs r0, #0 808 000c 7047 bx lr 809 .L63: 810 000e 00BF .align 2 811 .L62: ARM GAS /tmp/ccot7YtA.s page 35 812 0010 003C0240 .word 1073888256 813 .cfi_endproc 814 .LFE245: 816 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 817 .align 1 818 .global HAL_FLASH_OB_Unlock 819 .syntax unified 820 .thumb 821 .thumb_func 823 HAL_FLASH_OB_Unlock: 824 .LFB246: 469:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if ((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 825 .loc 1 469 1 is_stmt 1 view -0 826 .cfi_startproc 827 @ args = 0, pretend = 0, frame = 0 828 @ frame_needed = 0, uses_anonymous_args = 0 829 @ link register save eliminated. 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 830 .loc 1 470 3 view .LVU226 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 831 .loc 1 470 13 is_stmt 0 view .LVU227 832 0000 074B ldr r3, .L67 833 0002 5B69 ldr r3, [r3, #20] 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 834 .loc 1 470 6 view .LVU228 835 0004 13F0010F tst r3, #1 836 0008 07D0 beq .L66 473:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 837 .loc 1 473 5 is_stmt 1 view .LVU229 473:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 838 .loc 1 473 20 is_stmt 0 view .LVU230 839 000a 054B ldr r3, .L67 840 000c 054A ldr r2, .L67+4 841 000e 9A60 str r2, [r3, #8] 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 842 .loc 1 474 5 is_stmt 1 view .LVU231 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 843 .loc 1 474 20 is_stmt 0 view .LVU232 844 0010 02F14432 add r2, r2, #1145324612 845 0014 9A60 str r2, [r3, #8] 481:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 846 .loc 1 481 3 is_stmt 1 view .LVU233 481:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 847 .loc 1 481 10 is_stmt 0 view .LVU234 848 0016 0020 movs r0, #0 849 0018 7047 bx lr 850 .L66: 478:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 851 .loc 1 478 12 view .LVU235 852 001a 0120 movs r0, #1 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 853 .loc 1 482 1 view .LVU236 854 001c 7047 bx lr 855 .L68: 856 001e 00BF .align 2 857 .L67: 858 0020 003C0240 .word 1073888256 ARM GAS /tmp/ccot7YtA.s page 36 859 0024 3B2A1908 .word 135866939 860 .cfi_endproc 861 .LFE246: 863 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 864 .align 1 865 .global HAL_FLASH_OB_Lock 866 .syntax unified 867 .thumb 868 .thumb_func 870 HAL_FLASH_OB_Lock: 871 .LFB247: 489:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 872 .loc 1 489 1 is_stmt 1 view -0 873 .cfi_startproc 874 @ args = 0, pretend = 0, frame = 0 875 @ frame_needed = 0, uses_anonymous_args = 0 876 @ link register save eliminated. 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 877 .loc 1 491 3 view .LVU238 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 878 .loc 1 491 8 is_stmt 0 view .LVU239 879 0000 034A ldr r2, .L70 880 0002 5369 ldr r3, [r2, #20] 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 881 .loc 1 491 16 view .LVU240 882 0004 43F00103 orr r3, r3, #1 883 0008 5361 str r3, [r2, #20] 493:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 884 .loc 1 493 3 is_stmt 1 view .LVU241 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 885 .loc 1 494 1 is_stmt 0 view .LVU242 886 000a 0020 movs r0, #0 887 000c 7047 bx lr 888 .L71: 889 000e 00BF .align 2 890 .L70: 891 0010 003C0240 .word 1073888256 892 .cfi_endproc 893 .LFE247: 895 .section .text.HAL_FLASH_GetError,"ax",%progbits 896 .align 1 897 .global HAL_FLASH_GetError 898 .syntax unified 899 .thumb 900 .thumb_func 902 HAL_FLASH_GetError: 903 .LFB249: 538:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 904 .loc 1 538 1 is_stmt 1 view -0 905 .cfi_startproc 906 @ args = 0, pretend = 0, frame = 0 907 @ frame_needed = 0, uses_anonymous_args = 0 908 @ link register save eliminated. 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 909 .loc 1 539 3 view .LVU244 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 910 .loc 1 539 16 is_stmt 0 view .LVU245 ARM GAS /tmp/ccot7YtA.s page 37 911 0000 014B ldr r3, .L73 912 0002 D869 ldr r0, [r3, #28] 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 913 .loc 1 540 1 view .LVU246 914 0004 7047 bx lr 915 .L74: 916 0006 00BF .align 2 917 .L73: 918 0008 00000000 .word pFlash 919 .cfi_endproc 920 .LFE249: 922 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 923 .align 1 924 .global FLASH_WaitForLastOperation 925 .syntax unified 926 .thumb 927 .thumb_func 929 FLASH_WaitForLastOperation: 930 .LVL39: 931 .LFB250: 552:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 932 .loc 1 552 1 is_stmt 1 view -0 933 .cfi_startproc 934 @ args = 0, pretend = 0, frame = 0 935 @ frame_needed = 0, uses_anonymous_args = 0 552:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 936 .loc 1 552 1 is_stmt 0 view .LVU248 937 0000 38B5 push {r3, r4, r5, lr} 938 .LCFI4: 939 .cfi_def_cfa_offset 16 940 .cfi_offset 3, -16 941 .cfi_offset 4, -12 942 .cfi_offset 5, -8 943 .cfi_offset 14, -4 944 0002 0446 mov r4, r0 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 945 .loc 1 553 3 is_stmt 1 view .LVU249 946 .LVL40: 556:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 947 .loc 1 556 3 view .LVU250 556:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 948 .loc 1 556 20 is_stmt 0 view .LVU251 949 0004 144B ldr r3, .L86 950 0006 0022 movs r2, #0 951 0008 DA61 str r2, [r3, #28] 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 952 .loc 1 562 3 is_stmt 1 view .LVU252 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 953 .loc 1 562 15 is_stmt 0 view .LVU253 954 000a FFF7FEFF bl HAL_GetTick 955 .LVL41: 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 956 .loc 1 562 15 view .LVU254 957 000e 0546 mov r5, r0 958 .LVL42: 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 959 .loc 1 564 3 is_stmt 1 view .LVU255 ARM GAS /tmp/ccot7YtA.s page 38 960 .L77: 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 961 .loc 1 564 47 view .LVU256 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 962 .loc 1 564 10 is_stmt 0 view .LVU257 963 0010 124B ldr r3, .L86+4 964 0012 DB68 ldr r3, [r3, #12] 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 965 .loc 1 564 47 view .LVU258 966 0014 13F4803F tst r3, #65536 967 0018 0AD0 beq .L84 566:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 968 .loc 1 566 5 is_stmt 1 view .LVU259 566:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 969 .loc 1 566 8 is_stmt 0 view .LVU260 970 001a B4F1FF3F cmp r4, #-1 971 001e F7D0 beq .L77 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 972 .loc 1 568 7 is_stmt 1 view .LVU261 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 973 .loc 1 568 10 is_stmt 0 view .LVU262 974 0020 24B1 cbz r4, .L78 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 975 .loc 1 568 32 discriminator 1 view .LVU263 976 0022 FFF7FEFF bl HAL_GetTick 977 .LVL43: 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 978 .loc 1 568 46 discriminator 1 view .LVU264 979 0026 401B subs r0, r0, r5 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 980 .loc 1 568 27 discriminator 1 view .LVU265 981 0028 A042 cmp r0, r4 982 002a F1D9 bls .L77 983 .L78: 570:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 984 .loc 1 570 9 is_stmt 1 view .LVU266 570:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 985 .loc 1 570 16 is_stmt 0 view .LVU267 986 002c 0320 movs r0, #3 987 002e 0DE0 b .L79 988 .L84: 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 989 .loc 1 576 3 is_stmt 1 view .LVU268 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 990 .loc 1 576 7 is_stmt 0 view .LVU269 991 0030 0A4B ldr r3, .L86+4 992 0032 DB68 ldr r3, [r3, #12] 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 993 .loc 1 576 6 view .LVU270 994 0034 13F0010F tst r3, #1 995 0038 02D0 beq .L81 579:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 996 .loc 1 579 5 is_stmt 1 view .LVU271 997 003a 084B ldr r3, .L86+4 998 003c 0122 movs r2, #1 999 003e DA60 str r2, [r3, #12] 1000 .L81: ARM GAS /tmp/ccot7YtA.s page 39 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 1001 .loc 1 582 3 view .LVU272 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 1002 .loc 1 582 7 is_stmt 0 view .LVU273 1003 0040 064B ldr r3, .L86+4 1004 0042 DB68 ldr r3, [r3, #12] 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 1005 .loc 1 582 6 view .LVU274 1006 0044 13F4F97F tst r3, #498 1007 0048 01D1 bne .L85 595:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1008 .loc 1 595 10 view .LVU275 1009 004a 0020 movs r0, #0 1010 .L79: 597:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1011 .loc 1 597 1 view .LVU276 1012 004c 38BD pop {r3, r4, r5, pc} 1013 .LVL44: 1014 .L85: 590:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 1015 .loc 1 590 5 is_stmt 1 view .LVU277 1016 004e FFF7FEFF bl FLASH_SetErrorCode 1017 .LVL45: 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1018 .loc 1 591 5 view .LVU278 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1019 .loc 1 591 12 is_stmt 0 view .LVU279 1020 0052 0120 movs r0, #1 1021 0054 FAE7 b .L79 1022 .L87: 1023 0056 00BF .align 2 1024 .L86: 1025 0058 00000000 .word pFlash 1026 005c 003C0240 .word 1073888256 1027 .cfi_endproc 1028 .LFE250: 1030 .section .text.HAL_FLASH_Program,"ax",%progbits 1031 .align 1 1032 .global HAL_FLASH_Program 1033 .syntax unified 1034 .thumb 1035 .thumb_func 1037 HAL_FLASH_Program: 1038 .LVL46: 1039 .LFB239: 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status; 1040 .loc 1 162 1 is_stmt 1 view -0 1041 .cfi_startproc 1042 @ args = 0, pretend = 0, frame = 0 1043 @ frame_needed = 0, uses_anonymous_args = 0 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status; 1044 .loc 1 162 1 is_stmt 0 view .LVU281 1045 0000 F8B5 push {r3, r4, r5, r6, r7, lr} 1046 .LCFI5: 1047 .cfi_def_cfa_offset 24 1048 .cfi_offset 3, -24 1049 .cfi_offset 4, -20 ARM GAS /tmp/ccot7YtA.s page 40 1050 .cfi_offset 5, -16 1051 .cfi_offset 6, -12 1052 .cfi_offset 7, -8 1053 .cfi_offset 14, -4 1054 0002 1646 mov r6, r2 163:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1055 .loc 1 163 3 is_stmt 1 view .LVU282 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1056 .loc 1 166 3 view .LVU283 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1057 .loc 1 166 3 view .LVU284 1058 0004 1B4A ldr r2, .L100 1059 .LVL47: 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1060 .loc 1 166 3 is_stmt 0 view .LVU285 1061 0006 127E ldrb r2, [r2, #24] @ zero_extendqisi2 1062 0008 012A cmp r2, #1 1063 000a 30D0 beq .L95 1064 000c 0446 mov r4, r0 1065 000e 0D46 mov r5, r1 1066 0010 1F46 mov r7, r3 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1067 .loc 1 166 3 is_stmt 1 discriminator 2 view .LVU286 1068 0012 184B ldr r3, .L100 1069 0014 0122 movs r2, #1 1070 0016 1A76 strb r2, [r3, #24] 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1071 .loc 1 166 3 discriminator 2 view .LVU287 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1072 .loc 1 169 3 view .LVU288 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1073 .loc 1 172 3 view .LVU289 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1074 .loc 1 172 12 is_stmt 0 view .LVU290 1075 0018 4CF25030 movw r0, #50000 1076 .LVL48: 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1077 .loc 1 172 12 view .LVU291 1078 001c FFF7FEFF bl FLASH_WaitForLastOperation 1079 .LVL49: 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1080 .loc 1 174 3 is_stmt 1 view .LVU292 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1081 .loc 1 174 6 is_stmt 0 view .LVU293 1082 0020 90B9 cbnz r0, .L90 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1083 .loc 1 176 5 is_stmt 1 view .LVU294 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1084 .loc 1 176 8 is_stmt 0 view .LVU295 1085 0022 ACB1 cbz r4, .L97 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1086 .loc 1 181 10 is_stmt 1 view .LVU296 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1087 .loc 1 181 13 is_stmt 0 view .LVU297 1088 0024 012C cmp r4, #1 1089 0026 18D0 beq .L98 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { ARM GAS /tmp/ccot7YtA.s page 41 1090 .loc 1 186 10 is_stmt 1 view .LVU298 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1091 .loc 1 186 13 is_stmt 0 view .LVU299 1092 0028 022C cmp r4, #2 1093 002a 1BD0 beq .L99 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1094 .loc 1 194 7 is_stmt 1 view .LVU300 1095 002c 3246 mov r2, r6 1096 002e 3B46 mov r3, r7 1097 0030 2846 mov r0, r5 1098 .LVL50: 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1099 .loc 1 194 7 is_stmt 0 view .LVU301 1100 0032 FFF7FEFF bl FLASH_Program_DoubleWord 1101 .LVL51: 1102 .L92: 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1103 .loc 1 198 5 is_stmt 1 view .LVU302 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1104 .loc 1 198 14 is_stmt 0 view .LVU303 1105 0036 4CF25030 movw r0, #50000 1106 003a FFF7FEFF bl FLASH_WaitForLastOperation 1107 .LVL52: 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1108 .loc 1 201 5 is_stmt 1 view .LVU304 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1109 .loc 1 201 10 is_stmt 0 view .LVU305 1110 003e 0E4A ldr r2, .L100+4 1111 0040 1369 ldr r3, [r2, #16] 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1112 .loc 1 201 15 view .LVU306 1113 0042 23F00103 bic r3, r3, #1 1114 0046 1361 str r3, [r2, #16] 1115 .L90: 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1116 .loc 1 205 3 is_stmt 1 view .LVU307 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1117 .loc 1 205 3 view .LVU308 1118 0048 0A4B ldr r3, .L100 1119 004a 0022 movs r2, #0 1120 004c 1A76 strb r2, [r3, #24] 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1121 .loc 1 205 3 view .LVU309 207:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1122 .loc 1 207 3 view .LVU310 1123 .LVL53: 1124 .L89: 208:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1125 .loc 1 208 1 is_stmt 0 view .LVU311 1126 004e F8BD pop {r3, r4, r5, r6, r7, pc} 1127 .LVL54: 1128 .L97: 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1129 .loc 1 179 7 is_stmt 1 view .LVU312 1130 0050 F1B2 uxtb r1, r6 1131 0052 2846 mov r0, r5 1132 .LVL55: ARM GAS /tmp/ccot7YtA.s page 42 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1133 .loc 1 179 7 is_stmt 0 view .LVU313 1134 0054 FFF7FEFF bl FLASH_Program_Byte 1135 .LVL56: 1136 0058 EDE7 b .L92 1137 .LVL57: 1138 .L98: 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1139 .loc 1 184 7 is_stmt 1 view .LVU314 1140 005a B1B2 uxth r1, r6 1141 005c 2846 mov r0, r5 1142 .LVL58: 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1143 .loc 1 184 7 is_stmt 0 view .LVU315 1144 005e FFF7FEFF bl FLASH_Program_HalfWord 1145 .LVL59: 1146 0062 E8E7 b .L92 1147 .LVL60: 1148 .L99: 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1149 .loc 1 189 7 is_stmt 1 view .LVU316 1150 0064 3146 mov r1, r6 1151 0066 2846 mov r0, r5 1152 .LVL61: 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1153 .loc 1 189 7 is_stmt 0 view .LVU317 1154 0068 FFF7FEFF bl FLASH_Program_Word 1155 .LVL62: 1156 006c E3E7 b .L92 1157 .LVL63: 1158 .L95: 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1159 .loc 1 166 3 discriminator 1 view .LVU318 1160 006e 0220 movs r0, #2 1161 .LVL64: 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1162 .loc 1 166 3 discriminator 1 view .LVU319 1163 0070 EDE7 b .L89 1164 .L101: 1165 0072 00BF .align 2 1166 .L100: 1167 0074 00000000 .word pFlash 1168 0078 003C0240 .word 1073888256 1169 .cfi_endproc 1170 .LFE239: 1172 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 1173 .align 1 1174 .global HAL_FLASH_OB_Launch 1175 .syntax unified 1176 .thumb 1177 .thumb_func 1179 HAL_FLASH_OB_Launch: 1180 .LFB248: 501:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 1181 .loc 1 501 1 is_stmt 1 view -0 1182 .cfi_startproc 1183 @ args = 0, pretend = 0, frame = 0 ARM GAS /tmp/ccot7YtA.s page 43 1184 @ frame_needed = 0, uses_anonymous_args = 0 1185 0000 08B5 push {r3, lr} 1186 .LCFI6: 1187 .cfi_def_cfa_offset 8 1188 .cfi_offset 3, -8 1189 .cfi_offset 14, -4 503:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1190 .loc 1 503 3 view .LVU321 1191 0002 054A ldr r2, .L104 1192 0004 137D ldrb r3, [r2, #20] @ zero_extendqisi2 503:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1193 .loc 1 503 40 is_stmt 0 view .LVU322 1194 0006 43F00203 orr r3, r3, #2 1195 000a 1375 strb r3, [r2, #20] 506:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1196 .loc 1 506 3 is_stmt 1 view .LVU323 506:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1197 .loc 1 506 11 is_stmt 0 view .LVU324 1198 000c 4CF25030 movw r0, #50000 1199 0010 FFF7FEFF bl FLASH_WaitForLastOperation 1200 .LVL65: 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 1201 .loc 1 507 1 view .LVU325 1202 0014 08BD pop {r3, pc} 1203 .L105: 1204 0016 00BF .align 2 1205 .L104: 1206 0018 003C0240 .word 1073888256 1207 .cfi_endproc 1208 .LFE248: 1210 .global pFlash 1211 .section .data.pFlash,"aw" 1212 .align 2 1215 pFlash: 1216 0000 00 .byte 0 1217 0001 000000 .space 3 1218 0004 00000000 .word 0 1219 0008 00 .byte 0 1220 0009 000000 .space 3 1221 000c 00000000 .word 0 1222 0010 01000000 .word 1 1223 0014 00000000 .word 0 1224 0018 00 .byte 0 1225 0019 000000 .space 3 1226 001c 00000000 .word 0 1227 .text 1228 .Letext0: 1229 .file 3 "/usr/lib/gcc/arm-none-eabi/13.2.1/include/stdint.h" 1230 .file 4 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f429xx.h" 1231 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" 1232 .file 6 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" 1233 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" 1234 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h" 1235 .file 9 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h" ARM GAS /tmp/ccot7YtA.s page 44 DEFINED SYMBOLS *ABS*:00000000 stm32f4xx_hal_flash.c /tmp/ccot7YtA.s:21 .text.FLASH_Program_DoubleWord:00000000 $t /tmp/ccot7YtA.s:26 .text.FLASH_Program_DoubleWord:00000000 FLASH_Program_DoubleWord /tmp/ccot7YtA.s:87 .text.FLASH_Program_DoubleWord:0000002c $d /tmp/ccot7YtA.s:92 .text.FLASH_Program_Word:00000000 $t /tmp/ccot7YtA.s:97 .text.FLASH_Program_Word:00000000 FLASH_Program_Word /tmp/ccot7YtA.s:131 .text.FLASH_Program_Word:00000020 $d /tmp/ccot7YtA.s:136 .text.FLASH_Program_HalfWord:00000000 $t /tmp/ccot7YtA.s:141 .text.FLASH_Program_HalfWord:00000000 FLASH_Program_HalfWord /tmp/ccot7YtA.s:175 .text.FLASH_Program_HalfWord:00000020 $d /tmp/ccot7YtA.s:180 .text.FLASH_Program_Byte:00000000 $t /tmp/ccot7YtA.s:185 .text.FLASH_Program_Byte:00000000 FLASH_Program_Byte /tmp/ccot7YtA.s:218 .text.FLASH_Program_Byte:0000001c $d /tmp/ccot7YtA.s:223 .text.FLASH_SetErrorCode:00000000 $t /tmp/ccot7YtA.s:228 .text.FLASH_SetErrorCode:00000000 FLASH_SetErrorCode /tmp/ccot7YtA.s:354 .text.FLASH_SetErrorCode:000000a0 $d /tmp/ccot7YtA.s:1215 .data.pFlash:00000000 pFlash /tmp/ccot7YtA.s:360 .text.HAL_FLASH_Program_IT:00000000 $t /tmp/ccot7YtA.s:366 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT /tmp/ccot7YtA.s:451 .text.HAL_FLASH_Program_IT:0000004c $d /tmp/ccot7YtA.s:457 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t /tmp/ccot7YtA.s:463 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback /tmp/ccot7YtA.s:478 .text.HAL_FLASH_OperationErrorCallback:00000000 $t /tmp/ccot7YtA.s:484 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback /tmp/ccot7YtA.s:499 .text.HAL_FLASH_IRQHandler:00000000 $t /tmp/ccot7YtA.s:505 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler /tmp/ccot7YtA.s:721 .text.HAL_FLASH_IRQHandler:000000e8 $d /tmp/ccot7YtA.s:727 .text.HAL_FLASH_Unlock:00000000 $t /tmp/ccot7YtA.s:733 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock /tmp/ccot7YtA.s:779 .text.HAL_FLASH_Unlock:00000028 $d /tmp/ccot7YtA.s:785 .text.HAL_FLASH_Lock:00000000 $t /tmp/ccot7YtA.s:791 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock /tmp/ccot7YtA.s:812 .text.HAL_FLASH_Lock:00000010 $d /tmp/ccot7YtA.s:817 .text.HAL_FLASH_OB_Unlock:00000000 $t /tmp/ccot7YtA.s:823 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock /tmp/ccot7YtA.s:858 .text.HAL_FLASH_OB_Unlock:00000020 $d /tmp/ccot7YtA.s:864 .text.HAL_FLASH_OB_Lock:00000000 $t /tmp/ccot7YtA.s:870 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock /tmp/ccot7YtA.s:891 .text.HAL_FLASH_OB_Lock:00000010 $d /tmp/ccot7YtA.s:896 .text.HAL_FLASH_GetError:00000000 $t /tmp/ccot7YtA.s:902 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError /tmp/ccot7YtA.s:918 .text.HAL_FLASH_GetError:00000008 $d /tmp/ccot7YtA.s:923 .text.FLASH_WaitForLastOperation:00000000 $t /tmp/ccot7YtA.s:929 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation /tmp/ccot7YtA.s:1025 .text.FLASH_WaitForLastOperation:00000058 $d /tmp/ccot7YtA.s:1031 .text.HAL_FLASH_Program:00000000 $t /tmp/ccot7YtA.s:1037 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program /tmp/ccot7YtA.s:1167 .text.HAL_FLASH_Program:00000074 $d /tmp/ccot7YtA.s:1173 .text.HAL_FLASH_OB_Launch:00000000 $t /tmp/ccot7YtA.s:1179 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch /tmp/ccot7YtA.s:1206 .text.HAL_FLASH_OB_Launch:00000018 $d /tmp/ccot7YtA.s:1212 .data.pFlash:00000000 $d UNDEFINED SYMBOLS FLASH_Erase_Sector FLASH_FlushCaches ARM GAS /tmp/ccot7YtA.s page 45 HAL_GetTick