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