ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 1 1 .cpu cortex-m4 2 .arch armv7e-m 3 .fpu fpv4-sp-d16 4 .eabi_attribute 27, 1 5 .eabi_attribute 28, 1 6 .eabi_attribute 20, 1 7 .eabi_attribute 21, 1 8 .eabi_attribute 23, 3 9 .eabi_attribute 24, 1 10 .eabi_attribute 25, 1 11 .eabi_attribute 26, 1 12 .eabi_attribute 30, 6 13 .eabi_attribute 34, 1 14 .eabi_attribute 18, 4 15 .file "stm32f4xx_hal_flash.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .global pFlash 20 .section .bss.pFlash,"aw",%nobits 21 .align 2 24 pFlash: 25 0000 00000000 .space 32 25 00000000 25 00000000 25 00000000 25 00000000 26 .section .text.HAL_FLASH_Program,"ax",%progbits 27 .align 1 28 .global HAL_FLASH_Program 29 .syntax unified 30 .thumb 31 .thumb_func 33 HAL_FLASH_Program: 34 .LFB235: 35 .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 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 2 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 **** 33:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### How to use this driver ##### 34:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ============================================================================== 35:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 36:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This driver provides functions and macros to configure and program the FLASH 37:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory of all STM32F4xx devices. 38:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 39:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) FLASH Memory IO Programming functions: 40:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Lock and Unlock the FLASH interface using HAL_FLASH_Unlock() and 41:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_Lock() functions 42:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Program functions: byte, half word, word and double word 43:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) There Two modes of programming : 44:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Polling mode using HAL_FLASH_Program() function 45:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+++) Interrupt mode using HAL_FLASH_Program_IT() function 46:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 47:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (#) Interrupts and flags management functions : 48:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Handle FLASH interrupts by calling HAL_FLASH_IRQHandler() 49:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Wait for last FLASH operation according to its status 50:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (++) Get error flag status by calling HAL_SetErrorCode() 51:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 52:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 53:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** In addition to these functions, this driver includes a set of macros allowing 54:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** to handle the following operations: 55:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Set the latency 56:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the prefetch buffer 57:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the Instruction cache and the Data cache 58:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Reset the Instruction cache and the Data cache 59:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Enable/Disable the FLASH interrupts 60:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (+) Monitor the FLASH flags status 61:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 62:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 63:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 64:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @attention 65:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 66:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Copyright (c) 2017 STMicroelectronics. 67:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * All rights reserved. 68:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 69:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This software is licensed under terms that can be found in the LICENSE file in 70:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the root directory of this software component. 71:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 72:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ****************************************************************************** 73:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 74:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 75:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Includes ------------------------------------------------------------------*/ 76:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #include "stm32f4xx_hal.h" 77:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 78:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup STM32F4xx_HAL_Driver ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 3 79:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 80:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 81:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 82:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH FLASH 83:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief FLASH HAL module driver 84:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 85:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 86:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 87:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #ifdef HAL_FLASH_MODULE_ENABLED 88:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 89:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private typedef -----------------------------------------------------------*/ 90:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private define ------------------------------------------------------------*/ 91:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Constants 92:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 93:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 94:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #define FLASH_TIMEOUT_VALUE 50000U /* 50 s */ 95:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 96:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 97:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 98:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private macro -------------------------------------------------------------*/ 99:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Private variables ---------------------------------------------------------*/ 100:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Variables 101:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 102:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 103:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Variable used for Erase sectors under interruption */ 104:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_ProcessTypeDef pFlash; 105:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 106:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 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 **** /* Private function prototypes -----------------------------------------------*/ 110:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @addtogroup FLASH_Private_Functions 111:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 112:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 113:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program operations */ 114:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data); 115:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data); 116:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data); 117:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data); 118:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void); 119:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 120:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout); 121:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 122:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 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 **** /* Exported functions --------------------------------------------------------*/ 126:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions FLASH Exported Functions 127:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 128:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 129:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 130:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** @defgroup FLASH_Exported_Functions_Group1 Programming operation functions 131:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Programming operation functions 132:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 133:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 134:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 135:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Programming operation functions ##### ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 4 136:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 137:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 138:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to manage the FLASH 139:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** program operations. 140:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 141:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 142:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 143:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 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 **** * @brief Program byte, halfword, word or double word at a specified address 147:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 148:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 149:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 150:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 151:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 152:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL_StatusTypeDef HAL Status 153:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 154:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 155:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 36 .loc 1 155 1 37 .cfi_startproc 38 @ args = 0, pretend = 0, frame = 24 39 @ frame_needed = 1, uses_anonymous_args = 0 40 0000 80B5 push {r7, lr} 41 .LCFI0: 42 .cfi_def_cfa_offset 8 43 .cfi_offset 7, -8 44 .cfi_offset 14, -4 45 0002 86B0 sub sp, sp, #24 46 .LCFI1: 47 .cfi_def_cfa_offset 32 48 0004 00AF add r7, sp, #0 49 .LCFI2: 50 .cfi_def_cfa_register 7 51 0006 F860 str r0, [r7, #12] 52 0008 B960 str r1, [r7, #8] 53 000a C7E90023 strd r2, [r7] 156:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_ERROR; 54 .loc 1 156 21 55 000e 0123 movs r3, #1 56 0010 FB75 strb r3, [r7, #23] 157:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 158:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Locked */ 159:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_LOCK(&pFlash); 57 .loc 1 159 3 58 0012 234B ldr r3, .L9 59 0014 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 60 0016 012B cmp r3, #1 61 0018 01D1 bne .L2 62 .loc 1 159 3 is_stmt 0 discriminator 1 63 001a 0223 movs r3, #2 64 001c 3BE0 b .L3 65 .L2: 66 .loc 1 159 3 discriminator 2 67 001e 204B ldr r3, .L9 68 0020 0122 movs r2, #1 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 5 69 0022 1A76 strb r2, [r3, #24] 160:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 161:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 162:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 163:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 164:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 165:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 70 .loc 1 165 12 is_stmt 1 discriminator 2 71 0024 4CF25030 movw r0, #50000 72 0028 FFF7FEFF bl FLASH_WaitForLastOperation 73 002c 0346 mov r3, r0 74 002e FB75 strb r3, [r7, #23] 166:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 167:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(status == HAL_OK) 75 .loc 1 167 5 discriminator 2 76 0030 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 77 0032 002B cmp r3, #0 78 0034 2BD1 bne .L4 168:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 169:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_BYTE) 79 .loc 1 169 7 80 0036 FB68 ldr r3, [r7, #12] 81 0038 002B cmp r3, #0 82 003a 05D1 bne .L5 170:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 171:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 172:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 83 .loc 1 172 7 84 003c 3B78 ldrb r3, [r7] @ zero_extendqisi2 85 003e 1946 mov r1, r3 86 0040 B868 ldr r0, [r7, #8] 87 0042 FFF7FEFF bl FLASH_Program_Byte 88 0046 16E0 b .L6 89 .L5: 173:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 174:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 90 .loc 1 174 12 91 0048 FB68 ldr r3, [r7, #12] 92 004a 012B cmp r3, #1 93 004c 05D1 bne .L7 175:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 176:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 177:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 94 .loc 1 177 7 95 004e 3B88 ldrh r3, [r7] 96 0050 1946 mov r1, r3 97 0052 B868 ldr r0, [r7, #8] 98 0054 FFF7FEFF bl FLASH_Program_HalfWord 99 0058 0DE0 b .L6 100 .L7: 178:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 179:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 101 .loc 1 179 12 102 005a FB68 ldr r3, [r7, #12] 103 005c 022B cmp r3, #2 104 005e 05D1 bne .L8 180:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 6 181:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 182:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 105 .loc 1 182 7 106 0060 3B68 ldr r3, [r7] 107 0062 1946 mov r1, r3 108 0064 B868 ldr r0, [r7, #8] 109 0066 FFF7FEFF bl FLASH_Program_Word 110 006a 04E0 b .L6 111 .L8: 183:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 184:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 185:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 186:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 187:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 112 .loc 1 187 7 113 006c D7E90023 ldrd r2, [r7] 114 0070 B868 ldr r0, [r7, #8] 115 0072 FFF7FEFF bl FLASH_Program_DoubleWord 116 .L6: 188:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 189:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 190:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 191:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 117 .loc 1 191 14 118 0076 4CF25030 movw r0, #50000 119 007a FFF7FEFF bl FLASH_WaitForLastOperation 120 007e 0346 mov r3, r0 121 0080 FB75 strb r3, [r7, #23] 192:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 193:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the program operation is completed, disable the PG Bit */ 194:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR &= (~FLASH_CR_PG); 122 .loc 1 194 15 123 0082 084B ldr r3, .L9+4 124 0084 1B69 ldr r3, [r3, #16] 125 0086 074A ldr r2, .L9+4 126 0088 23F00103 bic r3, r3, #1 127 008c 1361 str r3, [r2, #16] 128 .L4: 195:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 196:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 197:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Unlocked */ 198:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 129 .loc 1 198 3 130 008e 044B ldr r3, .L9 131 0090 0022 movs r2, #0 132 0092 1A76 strb r2, [r3, #24] 199:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 200:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 133 .loc 1 200 10 134 0094 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 135 .L3: 201:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 136 .loc 1 201 1 137 0096 1846 mov r0, r3 138 0098 1837 adds r7, r7, #24 139 .LCFI3: 140 .cfi_def_cfa_offset 8 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 7 141 009a BD46 mov sp, r7 142 .LCFI4: 143 .cfi_def_cfa_register 13 144 @ sp needed 145 009c 80BD pop {r7, pc} 146 .L10: 147 009e 00BF .align 2 148 .L9: 149 00a0 00000000 .word pFlash 150 00a4 003C0240 .word 1073888256 151 .cfi_endproc 152 .LFE235: 154 .section .text.HAL_FLASH_Program_IT,"ax",%progbits 155 .align 1 156 .global HAL_FLASH_Program_IT 157 .syntax unified 158 .thumb 159 .thumb_func 161 HAL_FLASH_Program_IT: 162 .LFB236: 202:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 203:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 204:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte, halfword, word or double word at a specified address with interrupt ena 205:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param TypeProgram Indicate the way to program at a specified address. 206:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * This parameter can be a value of @ref FLASH_Type_Program 207:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 208:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed 209:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 210:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 211:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 212:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Program_IT(uint32_t TypeProgram, uint32_t Address, uint64_t Data) 213:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 163 .loc 1 213 1 164 .cfi_startproc 165 @ args = 0, pretend = 0, frame = 24 166 @ frame_needed = 1, uses_anonymous_args = 0 167 0000 80B5 push {r7, lr} 168 .LCFI5: 169 .cfi_def_cfa_offset 8 170 .cfi_offset 7, -8 171 .cfi_offset 14, -4 172 0002 86B0 sub sp, sp, #24 173 .LCFI6: 174 .cfi_def_cfa_offset 32 175 0004 00AF add r7, sp, #0 176 .LCFI7: 177 .cfi_def_cfa_register 7 178 0006 F860 str r0, [r7, #12] 179 0008 B960 str r1, [r7, #8] 180 000a C7E90023 strd r2, [r7] 214:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 181 .loc 1 214 21 182 000e 0023 movs r3, #0 183 0010 FB75 strb r3, [r7, #23] 215:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 216:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Locked */ 217:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_LOCK(&pFlash); ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 8 184 .loc 1 217 3 185 0012 204B ldr r3, .L18 186 0014 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 187 0016 012B cmp r3, #1 188 0018 01D1 bne .L12 189 .loc 1 217 3 is_stmt 0 discriminator 1 190 001a 0223 movs r3, #2 191 001c 35E0 b .L13 192 .L12: 193 .loc 1 217 3 discriminator 2 194 001e 1D4B ldr r3, .L18 195 0020 0122 movs r2, #1 196 0022 1A76 strb r2, [r3, #24] 218:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 219:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 220:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_TYPEPROGRAM(TypeProgram)); 221:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 222:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable End of FLASH Operation interrupt */ 223:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP); 197 .loc 1 223 3 is_stmt 1 discriminator 2 198 0024 1C4B ldr r3, .L18+4 199 0026 1B69 ldr r3, [r3, #16] 200 0028 1B4A ldr r2, .L18+4 201 002a 43F08073 orr r3, r3, #16777216 202 002e 1361 str r3, [r2, #16] 224:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 225:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Enable Error source interrupt */ 226:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_ERR); 203 .loc 1 226 3 discriminator 2 204 0030 194B ldr r3, .L18+4 205 0032 1B69 ldr r3, [r3, #16] 206 0034 184A ldr r2, .L18+4 207 0036 43F00073 orr r3, r3, #33554432 208 003a 1361 str r3, [r2, #16] 227:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 228:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PROGRAM; 209 .loc 1 228 27 discriminator 2 210 003c 154B ldr r3, .L18 211 003e 0322 movs r2, #3 212 0040 1A70 strb r2, [r3] 229:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Address = Address; 213 .loc 1 229 18 discriminator 2 214 0042 144A ldr r2, .L18 215 0044 BB68 ldr r3, [r7, #8] 216 0046 5361 str r3, [r2, #20] 230:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 231:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(TypeProgram == FLASH_TYPEPROGRAM_BYTE) 217 .loc 1 231 5 discriminator 2 218 0048 FB68 ldr r3, [r7, #12] 219 004a 002B cmp r3, #0 220 004c 05D1 bne .L14 232:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 233:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program byte (8-bit) at a specified address.*/ 234:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Byte(Address, (uint8_t) Data); 221 .loc 1 234 7 222 004e 3B78 ldrb r3, [r7] @ zero_extendqisi2 223 0050 1946 mov r1, r3 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 9 224 0052 B868 ldr r0, [r7, #8] 225 0054 FFF7FEFF bl FLASH_Program_Byte 226 0058 16E0 b .L15 227 .L14: 235:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 236:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_HALFWORD) 228 .loc 1 236 10 229 005a FB68 ldr r3, [r7, #12] 230 005c 012B cmp r3, #1 231 005e 05D1 bne .L16 237:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 238:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program halfword (16-bit) at a specified address.*/ 239:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_HalfWord(Address, (uint16_t) Data); 232 .loc 1 239 5 233 0060 3B88 ldrh r3, [r7] 234 0062 1946 mov r1, r3 235 0064 B868 ldr r0, [r7, #8] 236 0066 FFF7FEFF bl FLASH_Program_HalfWord 237 006a 0DE0 b .L15 238 .L16: 240:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 241:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(TypeProgram == FLASH_TYPEPROGRAM_WORD) 239 .loc 1 241 10 240 006c FB68 ldr r3, [r7, #12] 241 006e 022B cmp r3, #2 242 0070 05D1 bne .L17 242:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 243:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program word (32-bit) at a specified address.*/ 244:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_Word(Address, (uint32_t) Data); 243 .loc 1 244 5 244 0072 3B68 ldr r3, [r7] 245 0074 1946 mov r1, r3 246 0076 B868 ldr r0, [r7, #8] 247 0078 FFF7FEFF bl FLASH_Program_Word 248 007c 04E0 b .L15 249 .L17: 245:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 246:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 247:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 248:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program double word (64-bit) at a specified address.*/ 249:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Program_DoubleWord(Address, Data); 250 .loc 1 249 5 251 007e D7E90023 ldrd r2, [r7] 252 0082 B868 ldr r0, [r7, #8] 253 0084 FFF7FEFF bl FLASH_Program_DoubleWord 254 .L15: 250:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 251:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 252:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 255 .loc 1 252 10 256 0088 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 257 .L13: 253:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 258 .loc 1 253 1 259 008a 1846 mov r0, r3 260 008c 1837 adds r7, r7, #24 261 .LCFI8: ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 10 262 .cfi_def_cfa_offset 8 263 008e BD46 mov sp, r7 264 .LCFI9: 265 .cfi_def_cfa_register 13 266 @ sp needed 267 0090 80BD pop {r7, pc} 268 .L19: 269 0092 00BF .align 2 270 .L18: 271 0094 00000000 .word pFlash 272 0098 003C0240 .word 1073888256 273 .cfi_endproc 274 .LFE236: 276 .section .text.HAL_FLASH_IRQHandler,"ax",%progbits 277 .align 1 278 .global HAL_FLASH_IRQHandler 279 .syntax unified 280 .thumb 281 .thumb_func 283 HAL_FLASH_IRQHandler: 284 .LFB237: 254:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 255:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 256:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief This function handles FLASH interrupt request. 257:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 258:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 259:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** void HAL_FLASH_IRQHandler(void) 260:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 285 .loc 1 260 1 286 .cfi_startproc 287 @ args = 0, pretend = 0, frame = 8 288 @ frame_needed = 1, uses_anonymous_args = 0 289 0000 80B5 push {r7, lr} 290 .LCFI10: 291 .cfi_def_cfa_offset 8 292 .cfi_offset 7, -8 293 .cfi_offset 14, -4 294 0002 82B0 sub sp, sp, #8 295 .LCFI11: 296 .cfi_def_cfa_offset 16 297 0004 00AF add r7, sp, #0 298 .LCFI12: 299 .cfi_def_cfa_register 7 261:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t addresstmp = 0U; 300 .loc 1 261 12 301 0006 0023 movs r3, #0 302 0008 7B60 str r3, [r7, #4] 262:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 263:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH operation error flags */ 264:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 265:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 266:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 267:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 268:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 303 .loc 1 268 6 304 000a 4B4B ldr r3, .L32 305 000c DB68 ldr r3, [r3, #12] ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 11 306 000e 03F0F203 and r3, r3, #242 307 .loc 1 268 5 308 0012 002B cmp r3, #0 309 0014 20D0 beq .L21 269:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 270:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 271:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 272:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 310 .loc 1 272 14 311 0016 494B ldr r3, .L32+4 312 0018 1B78 ldrb r3, [r3] 313 001a DBB2 uxtb r3, r3 314 .loc 1 272 7 315 001c 012B cmp r3, #1 316 001e 07D1 bne .L22 273:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 274:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty sector*/ 275:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 317 .loc 1 275 18 318 0020 464B ldr r3, .L32+4 319 0022 DB68 ldr r3, [r3, #12] 320 0024 7B60 str r3, [r7, #4] 276:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = 0xFFFFFFFFU; 321 .loc 1 276 21 322 0026 454B ldr r3, .L32+4 323 0028 4FF0FF32 mov r2, #-1 324 002c DA60 str r2, [r3, #12] 325 002e 0BE0 b .L23 326 .L22: 277:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 278:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 327 .loc 1 278 19 328 0030 424B ldr r3, .L32+4 329 0032 1B78 ldrb r3, [r3] 330 0034 DBB2 uxtb r3, r3 331 .loc 1 278 12 332 0036 022B cmp r3, #2 333 0038 03D1 bne .L24 279:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 280:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty bank*/ 281:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Bank; 334 .loc 1 281 18 335 003a 404B ldr r3, .L32+4 336 003c 1B69 ldr r3, [r3, #16] 337 003e 7B60 str r3, [r7, #4] 338 0040 02E0 b .L23 339 .L24: 282:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 283:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 284:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 285:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*return the faulty address*/ 286:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Address; 340 .loc 1 286 18 341 0042 3E4B ldr r3, .L32+4 342 0044 5B69 ldr r3, [r3, #20] 343 0046 7B60 str r3, [r7, #4] 344 .L23: ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 12 287:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 288:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 289:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the Error code*/ 290:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 345 .loc 1 290 5 346 0048 FFF7FEFF bl FLASH_SetErrorCode 291:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 292:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH error interrupt user callback */ 293:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_OperationErrorCallback(addresstmp); 347 .loc 1 293 5 348 004c 7868 ldr r0, [r7, #4] 349 004e FFF7FEFF bl HAL_FLASH_OperationErrorCallback 294:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 295:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Stop the procedure ongoing*/ 296:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 350 .loc 1 296 29 351 0052 3A4B ldr r3, .L32+4 352 0054 0022 movs r2, #0 353 0056 1A70 strb r2, [r3] 354 .L21: 297:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 298:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 299:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 300:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 355 .loc 1 300 6 356 0058 374B ldr r3, .L32 357 005a DB68 ldr r3, [r3, #12] 358 005c 03F00103 and r3, r3, #1 359 .loc 1 300 5 360 0060 002B cmp r3, #0 361 0062 4AD0 beq .L25 301:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 302:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 303:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 362 .loc 1 303 5 363 0064 344B ldr r3, .L32 364 0066 0122 movs r2, #1 365 0068 DA60 str r2, [r3, #12] 304:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 305:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_SECTERASE) 366 .loc 1 305 14 367 006a 344B ldr r3, .L32+4 368 006c 1B78 ldrb r3, [r3] 369 006e DBB2 uxtb r3, r3 370 .loc 1 305 7 371 0070 012B cmp r3, #1 372 0072 2DD1 bne .L26 306:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 307:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Nb of sector to erased can be decreased*/ 308:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.NbSectorsToErase--; 373 .loc 1 308 13 374 0074 314B ldr r3, .L32+4 375 0076 5B68 ldr r3, [r3, #4] 376 .loc 1 308 30 377 0078 013B subs r3, r3, #1 378 007a 304A ldr r2, .L32+4 379 007c 5360 str r3, [r2, #4] ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 13 309:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 310:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check if there are still sectors to erase*/ 311:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.NbSectorsToErase != 0U) 380 .loc 1 311 16 381 007e 2F4B ldr r3, .L32+4 382 0080 5B68 ldr r3, [r3, #4] 383 .loc 1 311 9 384 0082 002B cmp r3, #0 385 0084 15D0 beq .L27 312:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 313:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 386 .loc 1 313 20 387 0086 2D4B ldr r3, .L32+4 388 0088 DB68 ldr r3, [r3, #12] 389 008a 7B60 str r3, [r7, #4] 314:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Indicate user which sector has been erased*/ 315:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 390 .loc 1 315 9 391 008c 7868 ldr r0, [r7, #4] 392 008e FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 316:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 317:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Increment sector number*/ 318:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector++; 393 .loc 1 318 15 394 0092 2A4B ldr r3, .L32+4 395 0094 DB68 ldr r3, [r3, #12] 396 .loc 1 318 22 397 0096 0133 adds r3, r3, #1 398 0098 284A ldr r2, .L32+4 399 009a D360 str r3, [r2, #12] 319:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** addresstmp = pFlash.Sector; 400 .loc 1 319 20 401 009c 274B ldr r3, .L32+4 402 009e DB68 ldr r3, [r3, #12] 403 00a0 7B60 str r3, [r7, #4] 320:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_Erase_Sector(addresstmp, pFlash.VoltageForErase); 404 .loc 1 320 9 405 00a2 264B ldr r3, .L32+4 406 00a4 1B7A ldrb r3, [r3, #8] 407 00a6 DBB2 uxtb r3, r3 408 00a8 1946 mov r1, r3 409 00aa 7868 ldr r0, [r7, #4] 410 00ac FFF7FEFF bl FLASH_Erase_Sector 411 00b0 23E0 b .L25 412 .L27: 321:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 322:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 323:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 324:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*No more sectors to Erase, user callback can be called.*/ 325:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Reset Sector and stop Erase sectors procedure*/ 326:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.Sector = addresstmp = 0xFFFFFFFFU; 413 .loc 1 326 36 414 00b2 4FF0FF33 mov r3, #-1 415 00b6 7B60 str r3, [r7, #4] 416 .loc 1 326 23 417 00b8 204A ldr r2, .L32+4 418 00ba 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 14 419 00bc D360 str r3, [r2, #12] 327:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 420 .loc 1 327 33 421 00be 1F4B ldr r3, .L32+4 422 00c0 0022 movs r2, #0 423 00c2 1A70 strb r2, [r3] 328:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 329:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 330:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches() ; 424 .loc 1 330 9 425 00c4 FFF7FEFF bl FLASH_FlushCaches 331:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 332:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 333:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(addresstmp); 426 .loc 1 333 9 427 00c8 7868 ldr r0, [r7, #4] 428 00ca FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 429 00ce 14E0 b .L25 430 .L26: 334:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 335:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 336:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 337:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 338:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_MASSERASE) 431 .loc 1 338 16 432 00d0 1A4B ldr r3, .L32+4 433 00d2 1B78 ldrb r3, [r3] 434 00d4 DBB2 uxtb r3, r3 435 .loc 1 338 9 436 00d6 022B cmp r3, #2 437 00d8 07D1 bne .L28 339:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 340:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* MassErase ended. Return the selected bank */ 341:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Flush the caches to be sure of the data consistency */ 342:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FlushCaches() ; 438 .loc 1 342 9 439 00da FFF7FEFF bl FLASH_FlushCaches 343:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 344:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 345:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Bank); 440 .loc 1 345 9 441 00de 174B ldr r3, .L32+4 442 00e0 1B69 ldr r3, [r3, #16] 443 00e2 1846 mov r0, r3 444 00e4 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 445 00e8 04E0 b .L29 446 .L28: 346:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 347:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 348:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 349:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Program ended. Return the selected address*/ 350:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* FLASH EOP interrupt user callback */ 351:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_FLASH_EndOfOperationCallback(pFlash.Address); 447 .loc 1 351 9 448 00ea 144B ldr r3, .L32+4 449 00ec 5B69 ldr r3, [r3, #20] 450 00ee 1846 mov r0, r3 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 15 451 00f0 FFF7FEFF bl HAL_FLASH_EndOfOperationCallback 452 .L29: 352:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 353:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ProcedureOnGoing = FLASH_PROC_NONE; 453 .loc 1 353 31 454 00f4 114B ldr r3, .L32+4 455 00f6 0022 movs r2, #0 456 00f8 1A70 strb r2, [r3] 457 .L25: 354:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 355:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 356:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 357:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(pFlash.ProcedureOnGoing == FLASH_PROC_NONE) 458 .loc 1 357 12 459 00fa 104B ldr r3, .L32+4 460 00fc 1B78 ldrb r3, [r3] 461 00fe DBB2 uxtb r3, r3 462 .loc 1 357 5 463 0100 002B cmp r3, #0 464 0102 14D1 bne .L31 358:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 359:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Operation is completed, disable the PG, SER, SNB and MER Bits */ 360: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)); 465 .loc 1 360 5 466 0104 0C4B ldr r3, .L32 467 0106 1B69 ldr r3, [r3, #16] 468 0108 0B4A ldr r2, .L32 469 010a 23F0FF03 bic r3, r3, #255 470 010e 1361 str r3, [r2, #16] 361:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 362:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable End of FLASH Operation interrupt */ 363:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_EOP); 471 .loc 1 363 5 472 0110 094B ldr r3, .L32 473 0112 1B69 ldr r3, [r3, #16] 474 0114 084A ldr r2, .L32 475 0116 23F08073 bic r3, r3, #16777216 476 011a 1361 str r3, [r2, #16] 364:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 365:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Disable Error source interrupt */ 366:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_DISABLE_IT(FLASH_IT_ERR); 477 .loc 1 366 5 478 011c 064B ldr r3, .L32 479 011e 1B69 ldr r3, [r3, #16] 480 0120 054A ldr r2, .L32 481 0122 23F00073 bic r3, r3, #33554432 482 0126 1361 str r3, [r2, #16] 367:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 368:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Process Unlocked */ 369:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_UNLOCK(&pFlash); 483 .loc 1 369 5 484 0128 044B ldr r3, .L32+4 485 012a 0022 movs r2, #0 486 012c 1A76 strb r2, [r3, #24] 487 .L31: 370:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 371:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 16 488 .loc 1 371 1 489 012e 00BF nop 490 0130 0837 adds r7, r7, #8 491 .LCFI13: 492 .cfi_def_cfa_offset 8 493 0132 BD46 mov sp, r7 494 .LCFI14: 495 .cfi_def_cfa_register 13 496 @ sp needed 497 0134 80BD pop {r7, pc} 498 .L33: 499 0136 00BF .align 2 500 .L32: 501 0138 003C0240 .word 1073888256 502 013c 00000000 .word pFlash 503 .cfi_endproc 504 .LFE237: 506 .section .text.HAL_FLASH_EndOfOperationCallback,"ax",%progbits 507 .align 1 508 .weak HAL_FLASH_EndOfOperationCallback 509 .syntax unified 510 .thumb 511 .thumb_func 513 HAL_FLASH_EndOfOperationCallback: 514 .LFB238: 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 **** * @brief FLASH end of operation interrupt callback 375:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 376:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 377:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector which has been erased 378:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * (if 0xFFFFFFFFU, it means that all the selected sectors have been erased) 379:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 380:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 381:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 382:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_EndOfOperationCallback(uint32_t ReturnValue) 383:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 515 .loc 1 383 1 516 .cfi_startproc 517 @ args = 0, pretend = 0, frame = 8 518 @ frame_needed = 1, uses_anonymous_args = 0 519 @ link register save eliminated. 520 0000 80B4 push {r7} 521 .LCFI15: 522 .cfi_def_cfa_offset 4 523 .cfi_offset 7, -4 524 0002 83B0 sub sp, sp, #12 525 .LCFI16: 526 .cfi_def_cfa_offset 16 527 0004 00AF add r7, sp, #0 528 .LCFI17: 529 .cfi_def_cfa_register 7 530 0006 7860 str r0, [r7, #4] 384:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 385:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 386:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 387:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_EndOfOperationCallback could be implemented in the user file ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 17 388:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 389:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 531 .loc 1 389 1 532 0008 00BF nop 533 000a 0C37 adds r7, r7, #12 534 .LCFI18: 535 .cfi_def_cfa_offset 4 536 000c BD46 mov sp, r7 537 .LCFI19: 538 .cfi_def_cfa_register 13 539 @ sp needed 540 000e 5DF8047B ldr r7, [sp], #4 541 .LCFI20: 542 .cfi_restore 7 543 .cfi_def_cfa_offset 0 544 0012 7047 bx lr 545 .cfi_endproc 546 .LFE238: 548 .section .text.HAL_FLASH_OperationErrorCallback,"ax",%progbits 549 .align 1 550 .weak HAL_FLASH_OperationErrorCallback 551 .syntax unified 552 .thumb 553 .thumb_func 555 HAL_FLASH_OperationErrorCallback: 556 .LFB239: 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 **** * @brief FLASH operation error interrupt callback 393:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param ReturnValue The value saved in this parameter depends on the ongoing procedure 394:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Mass Erase: Bank number which has been requested to erase 395:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Sectors Erase: Sector number which returned an error 396:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * Program: Address which was selected for data program 397:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 398:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 399:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __weak void HAL_FLASH_OperationErrorCallback(uint32_t ReturnValue) 400:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 557 .loc 1 400 1 558 .cfi_startproc 559 @ args = 0, pretend = 0, frame = 8 560 @ frame_needed = 1, uses_anonymous_args = 0 561 @ link register save eliminated. 562 0000 80B4 push {r7} 563 .LCFI21: 564 .cfi_def_cfa_offset 4 565 .cfi_offset 7, -4 566 0002 83B0 sub sp, sp, #12 567 .LCFI22: 568 .cfi_def_cfa_offset 16 569 0004 00AF add r7, sp, #0 570 .LCFI23: 571 .cfi_def_cfa_register 7 572 0006 7860 str r0, [r7, #4] 401:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Prevent unused argument(s) compilation warning */ 402:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** UNUSED(ReturnValue); 403:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* NOTE : This function Should not be modified, when the callback is needed, 404:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** the HAL_FLASH_OperationErrorCallback could be implemented in the user file ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 18 405:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 406:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 573 .loc 1 406 1 574 0008 00BF nop 575 000a 0C37 adds r7, r7, #12 576 .LCFI24: 577 .cfi_def_cfa_offset 4 578 000c BD46 mov sp, r7 579 .LCFI25: 580 .cfi_def_cfa_register 13 581 @ sp needed 582 000e 5DF8047B ldr r7, [sp], #4 583 .LCFI26: 584 .cfi_restore 7 585 .cfi_def_cfa_offset 0 586 0012 7047 bx lr 587 .cfi_endproc 588 .LFE239: 590 .section .text.HAL_FLASH_Unlock,"ax",%progbits 591 .align 1 592 .global HAL_FLASH_Unlock 593 .syntax unified 594 .thumb 595 .thumb_func 597 HAL_FLASH_Unlock: 598 .LFB240: 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 **** /** @defgroup FLASH_Exported_Functions_Group2 Peripheral Control functions 413:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief management functions 414:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 415:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 416:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 417:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Control functions ##### 418:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 419:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 420:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection provides a set of functions allowing to control the FLASH 421:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** memory operations. 422:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 423:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 424:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 425:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 426:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 427:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 428:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Unlock the FLASH control register access 429:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 430:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 431:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Unlock(void) 432:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 599 .loc 1 432 1 600 .cfi_startproc 601 @ args = 0, pretend = 0, frame = 8 602 @ frame_needed = 1, uses_anonymous_args = 0 603 @ link register save eliminated. ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 19 604 0000 80B4 push {r7} 605 .LCFI27: 606 .cfi_def_cfa_offset 4 607 .cfi_offset 7, -4 608 0002 83B0 sub sp, sp, #12 609 .LCFI28: 610 .cfi_def_cfa_offset 16 611 0004 00AF add r7, sp, #0 612 .LCFI29: 613 .cfi_def_cfa_register 7 433:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef status = HAL_OK; 614 .loc 1 433 21 615 0006 0023 movs r3, #0 616 0008 FB71 strb r3, [r7, #7] 434:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 435:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 617 .loc 1 435 6 618 000a 0B4B ldr r3, .L39 619 000c 1B69 ldr r3, [r3, #16] 620 .loc 1 435 5 621 000e 002B cmp r3, #0 622 0010 0BDA bge .L37 436:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 437:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorize the FLASH Registers access */ 438:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY1); 623 .loc 1 438 5 624 0012 094B ldr r3, .L39 625 0014 094A ldr r2, .L39+4 626 0016 5A60 str r2, [r3, #4] 439:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** WRITE_REG(FLASH->KEYR, FLASH_KEY2); 627 .loc 1 439 5 628 0018 074B ldr r3, .L39 629 001a 094A ldr r2, .L39+8 630 001c 5A60 str r2, [r3, #4] 440:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 441:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Verify Flash is unlocked */ 442:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(READ_BIT(FLASH->CR, FLASH_CR_LOCK) != RESET) 631 .loc 1 442 8 632 001e 064B ldr r3, .L39 633 0020 1B69 ldr r3, [r3, #16] 634 .loc 1 442 7 635 0022 002B cmp r3, #0 636 0024 01DA bge .L37 443:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 444:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** status = HAL_ERROR; 637 .loc 1 444 14 638 0026 0123 movs r3, #1 639 0028 FB71 strb r3, [r7, #7] 640 .L37: 445:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 446:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 447:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 448:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return status; 641 .loc 1 448 10 642 002a FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 449:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 643 .loc 1 449 1 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 20 644 002c 1846 mov r0, r3 645 002e 0C37 adds r7, r7, #12 646 .LCFI30: 647 .cfi_def_cfa_offset 4 648 0030 BD46 mov sp, r7 649 .LCFI31: 650 .cfi_def_cfa_register 13 651 @ sp needed 652 0032 5DF8047B ldr r7, [sp], #4 653 .LCFI32: 654 .cfi_restore 7 655 .cfi_def_cfa_offset 0 656 0036 7047 bx lr 657 .L40: 658 .align 2 659 .L39: 660 0038 003C0240 .word 1073888256 661 003c 23016745 .word 1164378403 662 0040 AB89EFCD .word -839939669 663 .cfi_endproc 664 .LFE240: 666 .section .text.HAL_FLASH_Lock,"ax",%progbits 667 .align 1 668 .global HAL_FLASH_Lock 669 .syntax unified 670 .thumb 671 .thumb_func 673 HAL_FLASH_Lock: 674 .LFB241: 450:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 451:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 452:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Locks the FLASH control register access 453:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 454:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 455:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_Lock(void) 456:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 675 .loc 1 456 1 676 .cfi_startproc 677 @ args = 0, pretend = 0, frame = 0 678 @ frame_needed = 1, uses_anonymous_args = 0 679 @ link register save eliminated. 680 0000 80B4 push {r7} 681 .LCFI33: 682 .cfi_def_cfa_offset 4 683 .cfi_offset 7, -4 684 0002 00AF add r7, sp, #0 685 .LCFI34: 686 .cfi_def_cfa_register 7 457:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the LOCK Bit to lock the FLASH Registers access */ 458:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_LOCK; 687 .loc 1 458 13 688 0004 054B ldr r3, .L43 689 0006 1B69 ldr r3, [r3, #16] 690 0008 044A ldr r2, .L43 691 000a 43F00043 orr r3, r3, #-2147483648 692 000e 1361 str r3, [r2, #16] 459:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 21 460:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 693 .loc 1 460 10 694 0010 0023 movs r3, #0 461:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 695 .loc 1 461 1 696 0012 1846 mov r0, r3 697 0014 BD46 mov sp, r7 698 .LCFI35: 699 .cfi_def_cfa_register 13 700 @ sp needed 701 0016 5DF8047B ldr r7, [sp], #4 702 .LCFI36: 703 .cfi_restore 7 704 .cfi_def_cfa_offset 0 705 001a 7047 bx lr 706 .L44: 707 .align 2 708 .L43: 709 001c 003C0240 .word 1073888256 710 .cfi_endproc 711 .LFE241: 713 .section .text.HAL_FLASH_OB_Unlock,"ax",%progbits 714 .align 1 715 .global HAL_FLASH_OB_Unlock 716 .syntax unified 717 .thumb 718 .thumb_func 720 HAL_FLASH_OB_Unlock: 721 .LFB242: 462:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 463:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 464:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Unlock the FLASH Option Control Registers access. 465:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 466:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 467:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Unlock(void) 468:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 722 .loc 1 468 1 723 .cfi_startproc 724 @ args = 0, pretend = 0, frame = 0 725 @ frame_needed = 1, uses_anonymous_args = 0 726 @ link register save eliminated. 727 0000 80B4 push {r7} 728 .LCFI37: 729 .cfi_def_cfa_offset 4 730 .cfi_offset 7, -4 731 0002 00AF add r7, sp, #0 732 .LCFI38: 733 .cfi_def_cfa_register 7 469:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if((FLASH->OPTCR & FLASH_OPTCR_OPTLOCK) != RESET) 734 .loc 1 469 12 735 0004 094B ldr r3, .L49 736 0006 5B69 ldr r3, [r3, #20] 737 .loc 1 469 20 738 0008 03F00103 and r3, r3, #1 739 .loc 1 469 5 740 000c 002B cmp r3, #0 741 000e 07D0 beq .L46 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 22 470:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 471:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Authorizes the Option Byte register programming */ 472:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY1; 742 .loc 1 472 10 743 0010 064B ldr r3, .L49 744 .loc 1 472 20 745 0012 074A ldr r2, .L49+4 746 0014 9A60 str r2, [r3, #8] 473:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTKEYR = FLASH_OPT_KEY2; 747 .loc 1 473 10 748 0016 054B ldr r3, .L49 749 .loc 1 473 20 750 0018 064A ldr r2, .L49+8 751 001a 9A60 str r2, [r3, #8] 474:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 475:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** else 476:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 477:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 478:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 479:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 480:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 752 .loc 1 480 10 753 001c 0023 movs r3, #0 754 001e 00E0 b .L48 755 .L46: 477:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 756 .loc 1 477 12 757 0020 0123 movs r3, #1 758 .L48: 481:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 759 .loc 1 481 1 760 0022 1846 mov r0, r3 761 0024 BD46 mov sp, r7 762 .LCFI39: 763 .cfi_def_cfa_register 13 764 @ sp needed 765 0026 5DF8047B ldr r7, [sp], #4 766 .LCFI40: 767 .cfi_restore 7 768 .cfi_def_cfa_offset 0 769 002a 7047 bx lr 770 .L50: 771 .align 2 772 .L49: 773 002c 003C0240 .word 1073888256 774 0030 3B2A1908 .word 135866939 775 0034 7F6E5D4C .word 1281191551 776 .cfi_endproc 777 .LFE242: 779 .section .text.HAL_FLASH_OB_Lock,"ax",%progbits 780 .align 1 781 .global HAL_FLASH_OB_Lock 782 .syntax unified 783 .thumb 784 .thumb_func 786 HAL_FLASH_OB_Lock: 787 .LFB243: ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 23 482:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 483:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 484:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Lock the FLASH Option Control Registers access. 485:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 486:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 487:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Lock(void) 488:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 788 .loc 1 488 1 789 .cfi_startproc 790 @ args = 0, pretend = 0, frame = 0 791 @ frame_needed = 1, uses_anonymous_args = 0 792 @ link register save eliminated. 793 0000 80B4 push {r7} 794 .LCFI41: 795 .cfi_def_cfa_offset 4 796 .cfi_offset 7, -4 797 0002 00AF add r7, sp, #0 798 .LCFI42: 799 .cfi_def_cfa_register 7 489:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTLOCK Bit to lock the FLASH Option Byte Registers access */ 490:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->OPTCR |= FLASH_OPTCR_OPTLOCK; 800 .loc 1 490 16 801 0004 054B ldr r3, .L53 802 0006 5B69 ldr r3, [r3, #20] 803 0008 044A ldr r2, .L53 804 000a 43F00103 orr r3, r3, #1 805 000e 5361 str r3, [r2, #20] 491:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 492:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 806 .loc 1 492 10 807 0010 0023 movs r3, #0 493:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 808 .loc 1 493 1 809 0012 1846 mov r0, r3 810 0014 BD46 mov sp, r7 811 .LCFI43: 812 .cfi_def_cfa_register 13 813 @ sp needed 814 0016 5DF8047B ldr r7, [sp], #4 815 .LCFI44: 816 .cfi_restore 7 817 .cfi_def_cfa_offset 0 818 001a 7047 bx lr 819 .L54: 820 .align 2 821 .L53: 822 001c 003C0240 .word 1073888256 823 .cfi_endproc 824 .LFE243: 826 .section .text.HAL_FLASH_OB_Launch,"ax",%progbits 827 .align 1 828 .global HAL_FLASH_OB_Launch 829 .syntax unified 830 .thumb 831 .thumb_func 833 HAL_FLASH_OB_Launch: 834 .LFB244: ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 24 494:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 495:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 496:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Launch the option byte loading. 497:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 498:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 499:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef HAL_FLASH_OB_Launch(void) 500:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 835 .loc 1 500 1 836 .cfi_startproc 837 @ args = 0, pretend = 0, frame = 0 838 @ frame_needed = 1, uses_anonymous_args = 0 839 0000 80B5 push {r7, lr} 840 .LCFI45: 841 .cfi_def_cfa_offset 8 842 .cfi_offset 7, -8 843 .cfi_offset 14, -4 844 0002 00AF add r7, sp, #0 845 .LCFI46: 846 .cfi_def_cfa_register 7 501:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Set the OPTSTRT bit in OPTCR register */ 502:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t *)OPTCR_BYTE0_ADDRESS |= FLASH_OPTCR_OPTSTRT; 847 .loc 1 502 40 848 0004 074B ldr r3, .L57 849 0006 1B78 ldrb r3, [r3] 850 0008 DBB2 uxtb r3, r3 851 000a 064A ldr r2, .L57 852 000c 43F00203 orr r3, r3, #2 853 0010 DBB2 uxtb r3, r3 854 0012 1370 strb r3, [r2] 503:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 504:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for last operation to be completed */ 505:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return(FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE)); 855 .loc 1 505 10 856 0014 4CF25030 movw r0, #50000 857 0018 FFF7FEFF bl FLASH_WaitForLastOperation 858 001c 0346 mov r3, r0 506:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 859 .loc 1 506 1 860 001e 1846 mov r0, r3 861 0020 80BD pop {r7, pc} 862 .L58: 863 0022 00BF .align 2 864 .L57: 865 0024 143C0240 .word 1073888276 866 .cfi_endproc 867 .LFE244: 869 .section .text.HAL_FLASH_GetError,"ax",%progbits 870 .align 1 871 .global HAL_FLASH_GetError 872 .syntax unified 873 .thumb 874 .thumb_func 876 HAL_FLASH_GetError: 877 .LFB245: 507:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 508:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 509:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 25 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 **** /** @defgroup FLASH_Exported_Functions_Group3 Peripheral State and Errors functions 513:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Peripheral Errors functions 514:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 515:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @verbatim 516:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 517:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** ##### Peripheral Errors functions ##### 518:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** =============================================================================== 519:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** [..] 520:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** This subsection permits to get in run-time Errors of the FLASH peripheral. 521:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 522:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** @endverbatim 523:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @{ 524:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 525:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 526:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 527:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Get the specific FLASH error flag. 528:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval FLASH_ErrorCode: The returned value can be a combination of: 529:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_RD: FLASH Read Protection error flag (PCROP) 530:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGS: FLASH Programming Sequence error flag 531:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGP: FLASH Programming Parallelism error flag 532:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_PGA: FLASH Programming Alignment error flag 533:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_WRP: FLASH Write protected error flag 534:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @arg HAL_FLASH_ERROR_OPERATION: FLASH operation Error flag 535:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 536:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t HAL_FLASH_GetError(void) 537:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 878 .loc 1 537 1 879 .cfi_startproc 880 @ args = 0, pretend = 0, frame = 0 881 @ frame_needed = 1, uses_anonymous_args = 0 882 @ link register save eliminated. 883 0000 80B4 push {r7} 884 .LCFI47: 885 .cfi_def_cfa_offset 4 886 .cfi_offset 7, -4 887 0002 00AF add r7, sp, #0 888 .LCFI48: 889 .cfi_def_cfa_register 7 538:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return pFlash.ErrorCode; 890 .loc 1 538 17 891 0004 034B ldr r3, .L61 892 0006 DB69 ldr r3, [r3, #28] 539:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 893 .loc 1 539 1 894 0008 1846 mov r0, r3 895 000a BD46 mov sp, r7 896 .LCFI49: 897 .cfi_def_cfa_register 13 898 @ sp needed 899 000c 5DF8047B ldr r7, [sp], #4 900 .LCFI50: 901 .cfi_restore 7 902 .cfi_def_cfa_offset 0 903 0010 7047 bx lr 904 .L62: ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 26 905 0012 00BF .align 2 906 .L61: 907 0014 00000000 .word pFlash 908 .cfi_endproc 909 .LFE245: 911 .section .text.FLASH_WaitForLastOperation,"ax",%progbits 912 .align 1 913 .global FLASH_WaitForLastOperation 914 .syntax unified 915 .thumb 916 .thumb_func 918 FLASH_WaitForLastOperation: 919 .LFB246: 540:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 541:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 542:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @} 543:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 544:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 545:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 546:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Wait for a FLASH operation to complete. 547:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Timeout maximum flash operationtimeout 548:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval HAL Status 549:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 550:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** HAL_StatusTypeDef FLASH_WaitForLastOperation(uint32_t Timeout) 551:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 920 .loc 1 551 1 921 .cfi_startproc 922 @ args = 0, pretend = 0, frame = 16 923 @ frame_needed = 1, uses_anonymous_args = 0 924 0000 80B5 push {r7, lr} 925 .LCFI51: 926 .cfi_def_cfa_offset 8 927 .cfi_offset 7, -8 928 .cfi_offset 14, -4 929 0002 84B0 sub sp, sp, #16 930 .LCFI52: 931 .cfi_def_cfa_offset 24 932 0004 00AF add r7, sp, #0 933 .LCFI53: 934 .cfi_def_cfa_register 7 935 0006 7860 str r0, [r7, #4] 552:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** uint32_t tickstart = 0U; 936 .loc 1 552 12 937 0008 0023 movs r3, #0 938 000a FB60 str r3, [r7, #12] 553:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 554:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear Error Code */ 555:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 939 .loc 1 555 20 940 000c 1A4B ldr r3, .L70 941 000e 0022 movs r2, #0 942 0010 DA61 str r2, [r3, #28] 556:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 557:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Wait for the FLASH operation to complete by polling on BUSY flag to be reset. 558:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** Even if the FLASH operation fails, the BUSY flag will be reset and an error 559:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** flag will be set */ 560:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Get tick */ ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 27 561:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** tickstart = HAL_GetTick(); 943 .loc 1 561 15 944 0012 FFF7FEFF bl HAL_GetTick 945 0016 F860 str r0, [r7, #12] 562:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** while(__HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) != RESET) 946 .loc 1 563 8 947 0018 10E0 b .L64 948 .L67: 564:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 565:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(Timeout != HAL_MAX_DELAY) 949 .loc 1 565 7 950 001a 7B68 ldr r3, [r7, #4] 951 001c B3F1FF3F cmp r3, #-1 952 0020 0CD0 beq .L64 566:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 567:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if((Timeout == 0U)||((HAL_GetTick() - tickstart ) > Timeout)) 953 .loc 1 567 9 954 0022 7B68 ldr r3, [r7, #4] 955 0024 002B cmp r3, #0 956 0026 07D0 beq .L65 957 .loc 1 567 29 discriminator 1 958 0028 FFF7FEFF bl HAL_GetTick 959 002c 0246 mov r2, r0 960 .loc 1 567 43 discriminator 1 961 002e FB68 ldr r3, [r7, #12] 962 0030 D31A subs r3, r2, r3 963 .loc 1 567 25 discriminator 1 964 0032 7A68 ldr r2, [r7, #4] 965 0034 9A42 cmp r2, r3 966 0036 01D2 bcs .L64 967 .L65: 568:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 569:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_TIMEOUT; 968 .loc 1 569 16 969 0038 0323 movs r3, #3 970 003a 19E0 b .L66 971 .L64: 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 972 .loc 1 563 9 973 003c 0F4B ldr r3, .L70+4 974 003e DB68 ldr r3, [r3, #12] 975 0040 03F48033 and r3, r3, #65536 563:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 976 .loc 1 563 8 977 0044 002B cmp r3, #0 978 0046 E8D1 bne .L67 570:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 571:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 572:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 573:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 574:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check FLASH End of Operation flag */ 575:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if (__HAL_FLASH_GET_FLAG(FLASH_FLAG_EOP) != RESET) 979 .loc 1 575 7 980 0048 0C4B ldr r3, .L70+4 981 004a DB68 ldr r3, [r3, #12] 982 004c 03F00103 and r3, r3, #1 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 28 983 .loc 1 575 6 984 0050 002B cmp r3, #0 985 0052 02D0 beq .L68 576:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 577:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH End of Operation pending bit */ 578:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP); 986 .loc 1 578 5 987 0054 094B ldr r3, .L70+4 988 0056 0122 movs r2, #1 989 0058 DA60 str r2, [r3, #12] 990 .L68: 579:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 580:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 581:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 582:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR | FLASH_FLAG_RDERR)) != RESET) 583:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #else 584:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG((FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | \ 991 .loc 1 584 6 992 005a 084B ldr r3, .L70+4 993 005c DB68 ldr r3, [r3, #12] 994 005e 03F0F203 and r3, r3, #242 995 .loc 1 584 5 996 0062 002B cmp r3, #0 997 0064 03D0 beq .L69 585:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR)) != RESET) 586:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 587:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 588:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /*Save the error code*/ 589:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH_SetErrorCode(); 998 .loc 1 589 5 999 0066 FFF7FEFF bl FLASH_SetErrorCode 590:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_ERROR; 1000 .loc 1 590 12 1001 006a 0123 movs r3, #1 1002 006c 00E0 b .L66 1003 .L69: 591:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 592:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 593:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If there is no error flag set */ 594:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** return HAL_OK; 1004 .loc 1 594 10 1005 006e 0023 movs r3, #0 1006 .L66: 595:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 596:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1007 .loc 1 596 1 1008 0070 1846 mov r0, r3 1009 0072 1037 adds r7, r7, #16 1010 .LCFI54: 1011 .cfi_def_cfa_offset 8 1012 0074 BD46 mov sp, r7 1013 .LCFI55: 1014 .cfi_def_cfa_register 13 1015 @ sp needed 1016 0076 80BD pop {r7, pc} 1017 .L71: 1018 .align 2 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 29 1019 .L70: 1020 0078 00000000 .word pFlash 1021 007c 003C0240 .word 1073888256 1022 .cfi_endproc 1023 .LFE246: 1025 .section .text.FLASH_Program_DoubleWord,"ax",%progbits 1026 .align 1 1027 .syntax unified 1028 .thumb 1029 .thumb_func 1031 FLASH_Program_DoubleWord: 1032 .LFB247: 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 **** * @brief Program a double word (64-bit) at a specified address. 600:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 601:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V and Vpp in the range 7V to 9V. 602:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 603:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 604:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 605:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 606:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 607:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 608:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 609:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 610:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_DoubleWord(uint32_t Address, uint64_t Data) 611:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1033 .loc 1 611 1 1034 .cfi_startproc 1035 @ args = 0, pretend = 0, frame = 16 1036 @ frame_needed = 1, uses_anonymous_args = 0 1037 @ link register save eliminated. 1038 0000 80B4 push {r7} 1039 .LCFI56: 1040 .cfi_def_cfa_offset 4 1041 .cfi_offset 7, -4 1042 0002 85B0 sub sp, sp, #20 1043 .LCFI57: 1044 .cfi_def_cfa_offset 24 1045 0004 00AF add r7, sp, #0 1046 .LCFI58: 1047 .cfi_def_cfa_register 7 1048 0006 F860 str r0, [r7, #12] 1049 0008 C7E90023 strd r2, [r7] 612:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 613:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 614:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 615:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 616:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 1050 .loc 1 616 3 1051 000c 144B ldr r3, .L73 1052 000e 1B69 ldr r3, [r3, #16] 1053 0010 134A ldr r2, .L73 1054 0012 23F44073 bic r3, r3, #768 1055 0016 1361 str r3, [r2, #16] 617:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_DOUBLE_WORD; 1056 .loc 1 617 13 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 30 1057 0018 114B ldr r3, .L73 1058 001a 1B69 ldr r3, [r3, #16] 1059 001c 104A ldr r2, .L73 1060 001e 43F44073 orr r3, r3, #768 1061 0022 1361 str r3, [r2, #16] 618:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 1062 .loc 1 618 13 1063 0024 0E4B ldr r3, .L73 1064 0026 1B69 ldr r3, [r3, #16] 1065 0028 0D4A ldr r2, .L73 1066 002a 43F00103 orr r3, r3, #1 1067 002e 1361 str r3, [r2, #16] 619:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 620:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program first word */ 621:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)Address = (uint32_t)Data; 1068 .loc 1 621 4 1069 0030 FB68 ldr r3, [r7, #12] 1070 .loc 1 621 30 1071 0032 3A68 ldr r2, [r7] 1072 .loc 1 621 28 1073 0034 1A60 str r2, [r3] 1074 .LBB4: 1075 .LBB5: 1076 .file 2 "Drivers/CMSIS/Include/cmsis_gcc.h" 1:Drivers/CMSIS/Include/cmsis_gcc.h **** /**************************************************************************//** 2:Drivers/CMSIS/Include/cmsis_gcc.h **** * @file cmsis_gcc.h 3:Drivers/CMSIS/Include/cmsis_gcc.h **** * @brief CMSIS compiler GCC header file 4:Drivers/CMSIS/Include/cmsis_gcc.h **** * @version V5.0.4 5:Drivers/CMSIS/Include/cmsis_gcc.h **** * @date 09. April 2018 6:Drivers/CMSIS/Include/cmsis_gcc.h **** ******************************************************************************/ 7:Drivers/CMSIS/Include/cmsis_gcc.h **** /* 8:Drivers/CMSIS/Include/cmsis_gcc.h **** * Copyright (c) 2009-2018 Arm Limited. All rights reserved. 9:Drivers/CMSIS/Include/cmsis_gcc.h **** * 10:Drivers/CMSIS/Include/cmsis_gcc.h **** * SPDX-License-Identifier: Apache-2.0 11:Drivers/CMSIS/Include/cmsis_gcc.h **** * 12:Drivers/CMSIS/Include/cmsis_gcc.h **** * Licensed under the Apache License, Version 2.0 (the License); you may 13:Drivers/CMSIS/Include/cmsis_gcc.h **** * not use this file except in compliance with the License. 14:Drivers/CMSIS/Include/cmsis_gcc.h **** * You may obtain a copy of the License at 15:Drivers/CMSIS/Include/cmsis_gcc.h **** * 16:Drivers/CMSIS/Include/cmsis_gcc.h **** * www.apache.org/licenses/LICENSE-2.0 17:Drivers/CMSIS/Include/cmsis_gcc.h **** * 18:Drivers/CMSIS/Include/cmsis_gcc.h **** * Unless required by applicable law or agreed to in writing, software 19:Drivers/CMSIS/Include/cmsis_gcc.h **** * distributed under the License is distributed on an AS IS BASIS, WITHOUT 20:Drivers/CMSIS/Include/cmsis_gcc.h **** * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21:Drivers/CMSIS/Include/cmsis_gcc.h **** * See the License for the specific language governing permissions and 22:Drivers/CMSIS/Include/cmsis_gcc.h **** * limitations under the License. 23:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 24:Drivers/CMSIS/Include/cmsis_gcc.h **** 25:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __CMSIS_GCC_H 26:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_H 27:Drivers/CMSIS/Include/cmsis_gcc.h **** 28:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ignore some GCC warnings */ 29:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 30:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wsign-conversion" 31:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wconversion" 32:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wunused-parameter" 33:Drivers/CMSIS/Include/cmsis_gcc.h **** ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 31 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 38:Drivers/CMSIS/Include/cmsis_gcc.h **** 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) 54:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 55:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __USED 56:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __USED __attribute__((used)) 57:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 58:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __WEAK 59:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WEAK __attribute__((weak)) 60:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 61:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED 62:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED __attribute__((packed, aligned(1))) 63:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 64:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_STRUCT 65:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) 66:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 67:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __PACKED_UNION 68:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __PACKED_UNION union __attribute__((packed, aligned(1))) 69:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 70:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32 /* deprecated */ 71:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 72:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 73:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 74:Drivers/CMSIS/Include/cmsis_gcc.h **** struct __attribute__((packed)) T_UINT32 { uint32_t v; }; 75:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 76:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) 77:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 78:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_WRITE 79:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 80:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 81:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 82:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; 83:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 84:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))- 85:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 86:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT16_READ 87:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 88:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 89:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 32 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED 111:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ALIGNED(x) __attribute__((aligned(x))) 112:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 113:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __RESTRICT 114:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __RESTRICT __restrict 115:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 116:Drivers/CMSIS/Include/cmsis_gcc.h **** 117:Drivers/CMSIS/Include/cmsis_gcc.h **** 118:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################### Core Function Access ########################### */ 119:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \ingroup CMSIS_Core_FunctionInterface 120:Drivers/CMSIS/Include/cmsis_gcc.h **** \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions 121:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ 122:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 123:Drivers/CMSIS/Include/cmsis_gcc.h **** 124:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 125:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable IRQ Interrupts 126:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables IRQ interrupts by clearing the I-bit in the CPSR. 127:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 128:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 129:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_irq(void) 130:Drivers/CMSIS/Include/cmsis_gcc.h **** { 131:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie i" : : : "memory"); 132:Drivers/CMSIS/Include/cmsis_gcc.h **** } 133:Drivers/CMSIS/Include/cmsis_gcc.h **** 134:Drivers/CMSIS/Include/cmsis_gcc.h **** 135:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 136:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable IRQ Interrupts 137:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables IRQ interrupts by setting the I-bit in the CPSR. 138:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 139:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 140:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_irq(void) 141:Drivers/CMSIS/Include/cmsis_gcc.h **** { 142:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid i" : : : "memory"); 143:Drivers/CMSIS/Include/cmsis_gcc.h **** } 144:Drivers/CMSIS/Include/cmsis_gcc.h **** 145:Drivers/CMSIS/Include/cmsis_gcc.h **** 146:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 33 148:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the Control Register. 149:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Control Register value 150:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 151:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_CONTROL(void) 152:Drivers/CMSIS/Include/cmsis_gcc.h **** { 153:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 154:Drivers/CMSIS/Include/cmsis_gcc.h **** 155:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control" : "=r" (result) ); 156:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 157:Drivers/CMSIS/Include/cmsis_gcc.h **** } 158:Drivers/CMSIS/Include/cmsis_gcc.h **** 159:Drivers/CMSIS/Include/cmsis_gcc.h **** 160:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 161:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 162:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register (non-secure) 163:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the non-secure Control Register when in secure mode. 164:Drivers/CMSIS/Include/cmsis_gcc.h **** \return non-secure Control Register value 165:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 166:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_CONTROL_NS(void) 167:Drivers/CMSIS/Include/cmsis_gcc.h **** { 168:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 169:Drivers/CMSIS/Include/cmsis_gcc.h **** 170:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, control_ns" : "=r" (result) ); 171:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 172:Drivers/CMSIS/Include/cmsis_gcc.h **** } 173:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 174:Drivers/CMSIS/Include/cmsis_gcc.h **** 175:Drivers/CMSIS/Include/cmsis_gcc.h **** 176:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 177:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register 178:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the Control Register. 179:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set 180:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 181:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_CONTROL(uint32_t control) 182:Drivers/CMSIS/Include/cmsis_gcc.h **** { 183:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control, %0" : : "r" (control) : "memory"); 184:Drivers/CMSIS/Include/cmsis_gcc.h **** } 185:Drivers/CMSIS/Include/cmsis_gcc.h **** 186:Drivers/CMSIS/Include/cmsis_gcc.h **** 187:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 188:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 189:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Control Register (non-secure) 190:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Writes the given value to the non-secure Control Register when in secure state. 191:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] control Control Register value to set 192:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 193:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_CONTROL_NS(uint32_t control) 194:Drivers/CMSIS/Include/cmsis_gcc.h **** { 195:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR control_ns, %0" : : "r" (control) : "memory"); 196:Drivers/CMSIS/Include/cmsis_gcc.h **** } 197:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 198:Drivers/CMSIS/Include/cmsis_gcc.h **** 199:Drivers/CMSIS/Include/cmsis_gcc.h **** 200:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 201:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get IPSR Register 202:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the IPSR Register. 203:Drivers/CMSIS/Include/cmsis_gcc.h **** \return IPSR Register value 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 34 205:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_IPSR(void) 206:Drivers/CMSIS/Include/cmsis_gcc.h **** { 207:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 208:Drivers/CMSIS/Include/cmsis_gcc.h **** 209:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, ipsr" : "=r" (result) ); 210:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 211:Drivers/CMSIS/Include/cmsis_gcc.h **** } 212:Drivers/CMSIS/Include/cmsis_gcc.h **** 213:Drivers/CMSIS/Include/cmsis_gcc.h **** 214:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 215:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get APSR Register 216:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the APSR Register. 217:Drivers/CMSIS/Include/cmsis_gcc.h **** \return APSR Register value 218:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 219:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_APSR(void) 220:Drivers/CMSIS/Include/cmsis_gcc.h **** { 221:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 222:Drivers/CMSIS/Include/cmsis_gcc.h **** 223:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, apsr" : "=r" (result) ); 224:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 225:Drivers/CMSIS/Include/cmsis_gcc.h **** } 226:Drivers/CMSIS/Include/cmsis_gcc.h **** 227:Drivers/CMSIS/Include/cmsis_gcc.h **** 228:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 229:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get xPSR Register 230:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the content of the xPSR Register. 231:Drivers/CMSIS/Include/cmsis_gcc.h **** \return xPSR Register value 232:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 233:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_xPSR(void) 234:Drivers/CMSIS/Include/cmsis_gcc.h **** { 235:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 236:Drivers/CMSIS/Include/cmsis_gcc.h **** 237:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, xpsr" : "=r" (result) ); 238:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 239:Drivers/CMSIS/Include/cmsis_gcc.h **** } 240:Drivers/CMSIS/Include/cmsis_gcc.h **** 241:Drivers/CMSIS/Include/cmsis_gcc.h **** 242:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 243:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer 244:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer (PSP). 245:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value 246:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 247:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSP(void) 248:Drivers/CMSIS/Include/cmsis_gcc.h **** { 249:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 250:Drivers/CMSIS/Include/cmsis_gcc.h **** 251:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp" : "=r" (result) ); 252:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 253:Drivers/CMSIS/Include/cmsis_gcc.h **** } 254:Drivers/CMSIS/Include/cmsis_gcc.h **** 255:Drivers/CMSIS/Include/cmsis_gcc.h **** 256:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 257:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 258:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer (non-secure) 259:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer (PSP) when in secure s 260:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSP Register value 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 35 262:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSP_NS(void) 263:Drivers/CMSIS/Include/cmsis_gcc.h **** { 264:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 265:Drivers/CMSIS/Include/cmsis_gcc.h **** 266:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psp_ns" : "=r" (result) ); 267:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 268:Drivers/CMSIS/Include/cmsis_gcc.h **** } 269:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 270:Drivers/CMSIS/Include/cmsis_gcc.h **** 271:Drivers/CMSIS/Include/cmsis_gcc.h **** 272:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 273:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer 274:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer (PSP). 275:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set 276:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 277:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSP(uint32_t topOfProcStack) 278:Drivers/CMSIS/Include/cmsis_gcc.h **** { 279:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp, %0" : : "r" (topOfProcStack) : ); 280:Drivers/CMSIS/Include/cmsis_gcc.h **** } 281:Drivers/CMSIS/Include/cmsis_gcc.h **** 282:Drivers/CMSIS/Include/cmsis_gcc.h **** 283:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 284:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 285:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) 286:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer (PSP) when in secure sta 287:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfProcStack Process Stack Pointer value to set 288:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 289:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSP_NS(uint32_t topOfProcStack) 290:Drivers/CMSIS/Include/cmsis_gcc.h **** { 291:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psp_ns, %0" : : "r" (topOfProcStack) : ); 292:Drivers/CMSIS/Include/cmsis_gcc.h **** } 293:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 294:Drivers/CMSIS/Include/cmsis_gcc.h **** 295:Drivers/CMSIS/Include/cmsis_gcc.h **** 296:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 297:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer 298:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer (MSP). 299:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value 300:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 301:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSP(void) 302:Drivers/CMSIS/Include/cmsis_gcc.h **** { 303:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 304:Drivers/CMSIS/Include/cmsis_gcc.h **** 305:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp" : "=r" (result) ); 306:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 307:Drivers/CMSIS/Include/cmsis_gcc.h **** } 308:Drivers/CMSIS/Include/cmsis_gcc.h **** 309:Drivers/CMSIS/Include/cmsis_gcc.h **** 310:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 311:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 312:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer (non-secure) 313:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer (MSP) when in secure stat 314:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSP Register value 315:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 316:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSP_NS(void) 317:Drivers/CMSIS/Include/cmsis_gcc.h **** { 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 36 319:Drivers/CMSIS/Include/cmsis_gcc.h **** 320:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msp_ns" : "=r" (result) ); 321:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 322:Drivers/CMSIS/Include/cmsis_gcc.h **** } 323:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 324:Drivers/CMSIS/Include/cmsis_gcc.h **** 325:Drivers/CMSIS/Include/cmsis_gcc.h **** 326:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 327:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer 328:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer (MSP). 329:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set 330:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 331:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSP(uint32_t topOfMainStack) 332:Drivers/CMSIS/Include/cmsis_gcc.h **** { 333:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp, %0" : : "r" (topOfMainStack) : ); 334:Drivers/CMSIS/Include/cmsis_gcc.h **** } 335:Drivers/CMSIS/Include/cmsis_gcc.h **** 336:Drivers/CMSIS/Include/cmsis_gcc.h **** 337:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 338:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 339:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer (non-secure) 340:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer (MSP) when in secure state. 341:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfMainStack Main Stack Pointer value to set 342:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 343:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSP_NS(uint32_t topOfMainStack) 344:Drivers/CMSIS/Include/cmsis_gcc.h **** { 345:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msp_ns, %0" : : "r" (topOfMainStack) : ); 346:Drivers/CMSIS/Include/cmsis_gcc.h **** } 347:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 348:Drivers/CMSIS/Include/cmsis_gcc.h **** 349:Drivers/CMSIS/Include/cmsis_gcc.h **** 350:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 351:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 352:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Stack Pointer (non-secure) 353:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Stack Pointer (SP) when in secure state. 354:Drivers/CMSIS/Include/cmsis_gcc.h **** \return SP Register value 355:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 356:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_SP_NS(void) 357:Drivers/CMSIS/Include/cmsis_gcc.h **** { 358:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 359:Drivers/CMSIS/Include/cmsis_gcc.h **** 360:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, sp_ns" : "=r" (result) ); 361:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 362:Drivers/CMSIS/Include/cmsis_gcc.h **** } 363:Drivers/CMSIS/Include/cmsis_gcc.h **** 364:Drivers/CMSIS/Include/cmsis_gcc.h **** 365:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 366:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Stack Pointer (non-secure) 367:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Stack Pointer (SP) when in secure state. 368:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] topOfStack Stack Pointer value to set 369:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 370:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_SP_NS(uint32_t topOfStack) 371:Drivers/CMSIS/Include/cmsis_gcc.h **** { 372:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR sp_ns, %0" : : "r" (topOfStack) : ); 373:Drivers/CMSIS/Include/cmsis_gcc.h **** } 374:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 375:Drivers/CMSIS/Include/cmsis_gcc.h **** ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 37 376:Drivers/CMSIS/Include/cmsis_gcc.h **** 377:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 378:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask 379:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the priority mask bit from the Priority Mask Register. 380:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value 381:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 382:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PRIMASK(void) 383:Drivers/CMSIS/Include/cmsis_gcc.h **** { 384:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 385:Drivers/CMSIS/Include/cmsis_gcc.h **** 386:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask" : "=r" (result) :: "memory"); 387:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 388:Drivers/CMSIS/Include/cmsis_gcc.h **** } 389:Drivers/CMSIS/Include/cmsis_gcc.h **** 390:Drivers/CMSIS/Include/cmsis_gcc.h **** 391:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 392:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 393:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Priority Mask (non-secure) 394:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current state of the non-secure priority mask bit from the Priority Mask Reg 395:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Priority Mask value 396:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 397:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PRIMASK_NS(void) 398:Drivers/CMSIS/Include/cmsis_gcc.h **** { 399:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 400:Drivers/CMSIS/Include/cmsis_gcc.h **** 401:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, primask_ns" : "=r" (result) :: "memory"); 402:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 403:Drivers/CMSIS/Include/cmsis_gcc.h **** } 404:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 405:Drivers/CMSIS/Include/cmsis_gcc.h **** 406:Drivers/CMSIS/Include/cmsis_gcc.h **** 407:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 408:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask 409:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Priority Mask Register. 410:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask 411:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 412:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PRIMASK(uint32_t priMask) 413:Drivers/CMSIS/Include/cmsis_gcc.h **** { 414:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory"); 415:Drivers/CMSIS/Include/cmsis_gcc.h **** } 416:Drivers/CMSIS/Include/cmsis_gcc.h **** 417:Drivers/CMSIS/Include/cmsis_gcc.h **** 418:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 419:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 420:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Priority Mask (non-secure) 421:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Priority Mask Register when in secure state. 422:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] priMask Priority Mask 423:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 424:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PRIMASK_NS(uint32_t priMask) 425:Drivers/CMSIS/Include/cmsis_gcc.h **** { 426:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR primask_ns, %0" : : "r" (priMask) : "memory"); 427:Drivers/CMSIS/Include/cmsis_gcc.h **** } 428:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 429:Drivers/CMSIS/Include/cmsis_gcc.h **** 430:Drivers/CMSIS/Include/cmsis_gcc.h **** 431:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 38 433:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) 434:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 435:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Enable FIQ 436:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Enables FIQ interrupts by clearing the F-bit in the CPSR. 437:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 438:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 439:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __enable_fault_irq(void) 440:Drivers/CMSIS/Include/cmsis_gcc.h **** { 441:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsie f" : : : "memory"); 442:Drivers/CMSIS/Include/cmsis_gcc.h **** } 443:Drivers/CMSIS/Include/cmsis_gcc.h **** 444:Drivers/CMSIS/Include/cmsis_gcc.h **** 445:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 446:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Disable FIQ 447:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Disables FIQ interrupts by setting the F-bit in the CPSR. 448:Drivers/CMSIS/Include/cmsis_gcc.h **** Can only be executed in Privileged modes. 449:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 450:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __disable_fault_irq(void) 451:Drivers/CMSIS/Include/cmsis_gcc.h **** { 452:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("cpsid f" : : : "memory"); 453:Drivers/CMSIS/Include/cmsis_gcc.h **** } 454:Drivers/CMSIS/Include/cmsis_gcc.h **** 455:Drivers/CMSIS/Include/cmsis_gcc.h **** 456:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 457:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority 458:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Base Priority register. 459:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value 460:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 461:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_BASEPRI(void) 462:Drivers/CMSIS/Include/cmsis_gcc.h **** { 463:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 464:Drivers/CMSIS/Include/cmsis_gcc.h **** 465:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri" : "=r" (result) ); 466:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 467:Drivers/CMSIS/Include/cmsis_gcc.h **** } 468:Drivers/CMSIS/Include/cmsis_gcc.h **** 469:Drivers/CMSIS/Include/cmsis_gcc.h **** 470:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 471:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 472:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Base Priority (non-secure) 473:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Base Priority register when in secure state. 474:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Base Priority register value 475:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 476:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_BASEPRI_NS(void) 477:Drivers/CMSIS/Include/cmsis_gcc.h **** { 478:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 479:Drivers/CMSIS/Include/cmsis_gcc.h **** 480:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, basepri_ns" : "=r" (result) ); 481:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 482:Drivers/CMSIS/Include/cmsis_gcc.h **** } 483:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 484:Drivers/CMSIS/Include/cmsis_gcc.h **** 485:Drivers/CMSIS/Include/cmsis_gcc.h **** 486:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 487:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority 488:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register. 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 39 490:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 491:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI(uint32_t basePri) 492:Drivers/CMSIS/Include/cmsis_gcc.h **** { 493:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri, %0" : : "r" (basePri) : "memory"); 494:Drivers/CMSIS/Include/cmsis_gcc.h **** } 495:Drivers/CMSIS/Include/cmsis_gcc.h **** 496:Drivers/CMSIS/Include/cmsis_gcc.h **** 497:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 498:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 499:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority (non-secure) 500:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Base Priority register when in secure state. 501:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set 502:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 503:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_BASEPRI_NS(uint32_t basePri) 504:Drivers/CMSIS/Include/cmsis_gcc.h **** { 505:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_ns, %0" : : "r" (basePri) : "memory"); 506:Drivers/CMSIS/Include/cmsis_gcc.h **** } 507:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 508:Drivers/CMSIS/Include/cmsis_gcc.h **** 509:Drivers/CMSIS/Include/cmsis_gcc.h **** 510:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 511:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Base Priority with condition 512:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Base Priority register only if BASEPRI masking is disable 513:Drivers/CMSIS/Include/cmsis_gcc.h **** or the new value increases the BASEPRI priority level. 514:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set 515:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 516:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_BASEPRI_MAX(uint32_t basePri) 517:Drivers/CMSIS/Include/cmsis_gcc.h **** { 518:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR basepri_max, %0" : : "r" (basePri) : "memory"); 519:Drivers/CMSIS/Include/cmsis_gcc.h **** } 520:Drivers/CMSIS/Include/cmsis_gcc.h **** 521:Drivers/CMSIS/Include/cmsis_gcc.h **** 522:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 523:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask 524:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Fault Mask register. 525:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value 526:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 527:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FAULTMASK(void) 528:Drivers/CMSIS/Include/cmsis_gcc.h **** { 529:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 530:Drivers/CMSIS/Include/cmsis_gcc.h **** 531:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask" : "=r" (result) ); 532:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 533:Drivers/CMSIS/Include/cmsis_gcc.h **** } 534:Drivers/CMSIS/Include/cmsis_gcc.h **** 535:Drivers/CMSIS/Include/cmsis_gcc.h **** 536:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 537:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 538:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Fault Mask (non-secure) 539:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Fault Mask register when in secure state. 540:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Fault Mask register value 541:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 542:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_FAULTMASK_NS(void) 543:Drivers/CMSIS/Include/cmsis_gcc.h **** { 544:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 545:Drivers/CMSIS/Include/cmsis_gcc.h **** 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 40 547:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 548:Drivers/CMSIS/Include/cmsis_gcc.h **** } 549:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 550:Drivers/CMSIS/Include/cmsis_gcc.h **** 551:Drivers/CMSIS/Include/cmsis_gcc.h **** 552:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 553:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask 554:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Fault Mask register. 555:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set 556:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 557:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FAULTMASK(uint32_t faultMask) 558:Drivers/CMSIS/Include/cmsis_gcc.h **** { 559:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory"); 560:Drivers/CMSIS/Include/cmsis_gcc.h **** } 561:Drivers/CMSIS/Include/cmsis_gcc.h **** 562:Drivers/CMSIS/Include/cmsis_gcc.h **** 563:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 564:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 565:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Fault Mask (non-secure) 566:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Fault Mask register when in secure state. 567:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] faultMask Fault Mask value to set 568:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 569:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_FAULTMASK_NS(uint32_t faultMask) 570:Drivers/CMSIS/Include/cmsis_gcc.h **** { 571:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR faultmask_ns, %0" : : "r" (faultMask) : "memory"); 572:Drivers/CMSIS/Include/cmsis_gcc.h **** } 573:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 574:Drivers/CMSIS/Include/cmsis_gcc.h **** 575:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ 576:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ 577:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) */ 578:Drivers/CMSIS/Include/cmsis_gcc.h **** 579:Drivers/CMSIS/Include/cmsis_gcc.h **** 580:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ 581:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) 582:Drivers/CMSIS/Include/cmsis_gcc.h **** 583:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 584:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit 585:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 586:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure 587:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. 588:Drivers/CMSIS/Include/cmsis_gcc.h **** 589:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Process Stack Pointer Limit (PSPLIM). 590:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value 591:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 592:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_PSPLIM(void) 593:Drivers/CMSIS/Include/cmsis_gcc.h **** { 594:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ 595:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) 596:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI 597:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; 598:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 599:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 600:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim" : "=r" (result) ); 601:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 602:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 41 604:Drivers/CMSIS/Include/cmsis_gcc.h **** 605:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3)) 606:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 607:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Process Stack Pointer Limit (non-secure) 608:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 609:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. 610:Drivers/CMSIS/Include/cmsis_gcc.h **** 611:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Process Stack Pointer Limit (PSPLIM) when in 612:Drivers/CMSIS/Include/cmsis_gcc.h **** \return PSPLIM Register value 613:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 614:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_PSPLIM_NS(void) 615:Drivers/CMSIS/Include/cmsis_gcc.h **** { 616:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) 617:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI 618:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; 619:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 620:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 621:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, psplim_ns" : "=r" (result) ); 622:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 623:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 624:Drivers/CMSIS/Include/cmsis_gcc.h **** } 625:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 626:Drivers/CMSIS/Include/cmsis_gcc.h **** 627:Drivers/CMSIS/Include/cmsis_gcc.h **** 628:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 629:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer Limit 630:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 631:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure 632:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. 633:Drivers/CMSIS/Include/cmsis_gcc.h **** 634:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Process Stack Pointer Limit (PSPLIM). 635:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set 636:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 637:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_PSPLIM(uint32_t ProcStackPtrLimit) 638:Drivers/CMSIS/Include/cmsis_gcc.h **** { 639:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ 640:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) 641:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI 642:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; 643:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 644:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim, %0" : : "r" (ProcStackPtrLimit)); 645:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 646:Drivers/CMSIS/Include/cmsis_gcc.h **** } 647:Drivers/CMSIS/Include/cmsis_gcc.h **** 648:Drivers/CMSIS/Include/cmsis_gcc.h **** 649:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 650:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 651:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Process Stack Pointer (non-secure) 652:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 653:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. 654:Drivers/CMSIS/Include/cmsis_gcc.h **** 655:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Process Stack Pointer Limit (PSPLIM) when in s 656:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] ProcStackPtrLimit Process Stack Pointer Limit value to set 657:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 658:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_PSPLIM_NS(uint32_t ProcStackPtrLimit) 659:Drivers/CMSIS/Include/cmsis_gcc.h **** { 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 42 661:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure PSPLIM is RAZ/WI 662:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)ProcStackPtrLimit; 663:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 664:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR psplim_ns, %0\n" : : "r" (ProcStackPtrLimit)); 665:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 666:Drivers/CMSIS/Include/cmsis_gcc.h **** } 667:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 668:Drivers/CMSIS/Include/cmsis_gcc.h **** 669:Drivers/CMSIS/Include/cmsis_gcc.h **** 670:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 671:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit 672:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 673:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always in non-secure 674:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. 675:Drivers/CMSIS/Include/cmsis_gcc.h **** 676:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Main Stack Pointer Limit (MSPLIM). 677:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value 678:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 679:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_MSPLIM(void) 680:Drivers/CMSIS/Include/cmsis_gcc.h **** { 681:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ 682:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) 683:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI 684:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; 685:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 686:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 687:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim" : "=r" (result) ); 688:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 689:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 690:Drivers/CMSIS/Include/cmsis_gcc.h **** } 691:Drivers/CMSIS/Include/cmsis_gcc.h **** 692:Drivers/CMSIS/Include/cmsis_gcc.h **** 693:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 694:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 695:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Main Stack Pointer Limit (non-secure) 696:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 697:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence zero is returned always. 698:Drivers/CMSIS/Include/cmsis_gcc.h **** 699:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the non-secure Main Stack Pointer Limit(MSPLIM) when in sec 700:Drivers/CMSIS/Include/cmsis_gcc.h **** \return MSPLIM Register value 701:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 702:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __TZ_get_MSPLIM_NS(void) 703:Drivers/CMSIS/Include/cmsis_gcc.h **** { 704:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) 705:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI 706:Drivers/CMSIS/Include/cmsis_gcc.h **** return 0U; 707:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 708:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 709:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, msplim_ns" : "=r" (result) ); 710:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 711:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 712:Drivers/CMSIS/Include/cmsis_gcc.h **** } 713:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 714:Drivers/CMSIS/Include/cmsis_gcc.h **** 715:Drivers/CMSIS/Include/cmsis_gcc.h **** 716:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 43 718:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 719:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored in non-secure 720:Drivers/CMSIS/Include/cmsis_gcc.h **** mode. 721:Drivers/CMSIS/Include/cmsis_gcc.h **** 722:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Main Stack Pointer Limit (MSPLIM). 723:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer Limit value to set 724:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 725:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_MSPLIM(uint32_t MainStackPtrLimit) 726:Drivers/CMSIS/Include/cmsis_gcc.h **** { 727:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \ 728:Drivers/CMSIS/Include/cmsis_gcc.h **** (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3))) 729:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI 730:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; 731:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 732:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim, %0" : : "r" (MainStackPtrLimit)); 733:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 734:Drivers/CMSIS/Include/cmsis_gcc.h **** } 735:Drivers/CMSIS/Include/cmsis_gcc.h **** 736:Drivers/CMSIS/Include/cmsis_gcc.h **** 737:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3)) 738:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 739:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit (non-secure) 740:Drivers/CMSIS/Include/cmsis_gcc.h **** Devices without ARMv8-M Main Extensions (i.e. Cortex-M23) lack the non-secure 741:Drivers/CMSIS/Include/cmsis_gcc.h **** Stack Pointer Limit register hence the write is silently ignored. 742:Drivers/CMSIS/Include/cmsis_gcc.h **** 743:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the non-secure Main Stack Pointer Limit (MSPLIM) when in secu 744:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] MainStackPtrLimit Main Stack Pointer value to set 745:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 746:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __TZ_set_MSPLIM_NS(uint32_t MainStackPtrLimit) 747:Drivers/CMSIS/Include/cmsis_gcc.h **** { 748:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) 749:Drivers/CMSIS/Include/cmsis_gcc.h **** // without main extensions, the non-secure MSPLIM is RAZ/WI 750:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)MainStackPtrLimit; 751:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 752:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MSR msplim_ns, %0" : : "r" (MainStackPtrLimit)); 753:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 754:Drivers/CMSIS/Include/cmsis_gcc.h **** } 755:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 756:Drivers/CMSIS/Include/cmsis_gcc.h **** 757:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif /* ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ 758:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) */ 759:Drivers/CMSIS/Include/cmsis_gcc.h **** 760:Drivers/CMSIS/Include/cmsis_gcc.h **** 761:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 762:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get FPSCR 763:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Returns the current value of the Floating Point Status/Control register. 764:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Floating Point Status/Control register value 765:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 766:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __get_FPSCR(void) 767:Drivers/CMSIS/Include/cmsis_gcc.h **** { 768:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ 769:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) 770:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_get_fpscr) 771:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed 772:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) 773:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 44 775:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 776:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 777:Drivers/CMSIS/Include/cmsis_gcc.h **** 778:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMRS %0, fpscr" : "=r" (result) ); 779:Drivers/CMSIS/Include/cmsis_gcc.h **** return(result); 780:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 781:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 782:Drivers/CMSIS/Include/cmsis_gcc.h **** return(0U); 783:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 784:Drivers/CMSIS/Include/cmsis_gcc.h **** } 785:Drivers/CMSIS/Include/cmsis_gcc.h **** 786:Drivers/CMSIS/Include/cmsis_gcc.h **** 787:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 788:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set FPSCR 789:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Assigns the given value to the Floating Point Status/Control register. 790:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] fpscr Floating Point Status/Control value to set 791:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 792:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __set_FPSCR(uint32_t fpscr) 793:Drivers/CMSIS/Include/cmsis_gcc.h **** { 794:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ 795:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) 796:Drivers/CMSIS/Include/cmsis_gcc.h **** #if __has_builtin(__builtin_arm_set_fpscr) 797:Drivers/CMSIS/Include/cmsis_gcc.h **** // Re-enable using built-in when GCC has been fixed 798:Drivers/CMSIS/Include/cmsis_gcc.h **** // || (__GNUC__ > 7) || (__GNUC__ == 7 && __GNUC_MINOR__ >= 2) 799:Drivers/CMSIS/Include/cmsis_gcc.h **** /* see https://gcc.gnu.org/ml/gcc-patches/2017-04/msg00443.html */ 800:Drivers/CMSIS/Include/cmsis_gcc.h **** __builtin_arm_set_fpscr(fpscr); 801:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 802:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc", "memory"); 803:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 804:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 805:Drivers/CMSIS/Include/cmsis_gcc.h **** (void)fpscr; 806:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 807:Drivers/CMSIS/Include/cmsis_gcc.h **** } 808:Drivers/CMSIS/Include/cmsis_gcc.h **** 809:Drivers/CMSIS/Include/cmsis_gcc.h **** 810:Drivers/CMSIS/Include/cmsis_gcc.h **** /*@} end of CMSIS_Core_RegAccFunctions */ 811:Drivers/CMSIS/Include/cmsis_gcc.h **** 812:Drivers/CMSIS/Include/cmsis_gcc.h **** 813:Drivers/CMSIS/Include/cmsis_gcc.h **** /* ########################## Core Instruction Access ######################### */ 814:Drivers/CMSIS/Include/cmsis_gcc.h **** /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface 815:Drivers/CMSIS/Include/cmsis_gcc.h **** Access to dedicated instructions 816:Drivers/CMSIS/Include/cmsis_gcc.h **** @{ 817:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 818:Drivers/CMSIS/Include/cmsis_gcc.h **** 819:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Define macros for porting to both thumb1 and thumb2. 820:Drivers/CMSIS/Include/cmsis_gcc.h **** * For thumb1, use low register (r0-r7), specified by constraint "l" 821:Drivers/CMSIS/Include/cmsis_gcc.h **** * Otherwise, use general registers, specified by constraint "r" */ 822:Drivers/CMSIS/Include/cmsis_gcc.h **** #if defined (__thumb__) && !defined (__thumb2__) 823:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=l" (r) 824:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+l" (r) 825:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "l" (r) 826:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 827:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_OUT_REG(r) "=r" (r) 828:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_RW_REG(r) "+r" (r) 829:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __CMSIS_GCC_USE_REG(r) "r" (r) 830:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 831:Drivers/CMSIS/Include/cmsis_gcc.h **** ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 45 832:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 833:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief No Operation 834:Drivers/CMSIS/Include/cmsis_gcc.h **** \details No Operation does nothing. This instruction can be used for code alignment purposes. 835:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 836:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NOP() __ASM volatile ("nop") 837:Drivers/CMSIS/Include/cmsis_gcc.h **** 838:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 839:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Interrupt 840:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Interrupt is a hint instruction that suspends execution until one of a number o 841:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 842:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFI() __ASM volatile ("wfi") 843:Drivers/CMSIS/Include/cmsis_gcc.h **** 844:Drivers/CMSIS/Include/cmsis_gcc.h **** 845:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 846:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Wait For Event 847:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Wait For Event is a hint instruction that permits the processor to enter 848:Drivers/CMSIS/Include/cmsis_gcc.h **** a low-power state until one of a number of events occurs. 849:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 850:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __WFE() __ASM volatile ("wfe") 851:Drivers/CMSIS/Include/cmsis_gcc.h **** 852:Drivers/CMSIS/Include/cmsis_gcc.h **** 853:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 854:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Send Event 855:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. 856:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 857:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __SEV() __ASM volatile ("sev") 858:Drivers/CMSIS/Include/cmsis_gcc.h **** 859:Drivers/CMSIS/Include/cmsis_gcc.h **** 860:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 861:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Instruction Synchronization Barrier 862:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Instruction Synchronization Barrier flushes the pipeline in the processor, 863:Drivers/CMSIS/Include/cmsis_gcc.h **** so that all instructions following the ISB are fetched from cache or memory, 864:Drivers/CMSIS/Include/cmsis_gcc.h **** after the instruction has been completed. 865:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 866:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __ISB(void) 867:Drivers/CMSIS/Include/cmsis_gcc.h **** { 868:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("isb 0xF":::"memory"); 1077 .loc 2 868 3 1078 .syntax unified 1079 @ 868 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 1080 0036 BFF36F8F isb 0xF 1081 @ 0 "" 2 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } 1082 .loc 2 869 1 1083 .thumb 1084 .syntax unified 1085 003a 00BF nop 1086 .LBE5: 1087 .LBE4: 622:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 623:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Barrier to ensure programming is performed in 2 steps, in right order 624:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** (independently of compiler optimization behavior) */ 625:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __ISB(); 626:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 627:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Program second word */ 628:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)(Address+4) = (uint32_t)(Data >> 32); 1088 .loc 1 628 50 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 46 1089 003c D7E90001 ldrd r0, [r7] 1090 0040 4FF00002 mov r2, #0 1091 0044 4FF00003 mov r3, #0 1092 0048 0A00 movs r2, r1 1093 004a 0023 movs r3, #0 1094 .loc 1 628 28 1095 004c F968 ldr r1, [r7, #12] 1096 004e 0431 adds r1, r1, #4 1097 .loc 1 628 34 1098 0050 1346 mov r3, r2 1099 .loc 1 628 32 1100 0052 0B60 str r3, [r1] 629:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1101 .loc 1 629 1 1102 0054 00BF nop 1103 0056 1437 adds r7, r7, #20 1104 .LCFI59: 1105 .cfi_def_cfa_offset 4 1106 0058 BD46 mov sp, r7 1107 .LCFI60: 1108 .cfi_def_cfa_register 13 1109 @ sp needed 1110 005a 5DF8047B ldr r7, [sp], #4 1111 .LCFI61: 1112 .cfi_restore 7 1113 .cfi_def_cfa_offset 0 1114 005e 7047 bx lr 1115 .L74: 1116 .align 2 1117 .L73: 1118 0060 003C0240 .word 1073888256 1119 .cfi_endproc 1120 .LFE247: 1122 .section .text.FLASH_Program_Word,"ax",%progbits 1123 .align 1 1124 .syntax unified 1125 .thumb 1126 .thumb_func 1128 FLASH_Program_Word: 1129 .LFB248: 630:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 631:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 632:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 633:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program word (32-bit) at a specified address. 634:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 635:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.7V to 3.6V. 636:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 637:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 638:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 639:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 640:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 641:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 642:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 643:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 644:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Word(uint32_t Address, uint32_t Data) 645:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1130 .loc 1 645 1 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 47 1131 .cfi_startproc 1132 @ args = 0, pretend = 0, frame = 8 1133 @ frame_needed = 1, uses_anonymous_args = 0 1134 @ link register save eliminated. 1135 0000 80B4 push {r7} 1136 .LCFI62: 1137 .cfi_def_cfa_offset 4 1138 .cfi_offset 7, -4 1139 0002 83B0 sub sp, sp, #12 1140 .LCFI63: 1141 .cfi_def_cfa_offset 16 1142 0004 00AF add r7, sp, #0 1143 .LCFI64: 1144 .cfi_def_cfa_register 7 1145 0006 7860 str r0, [r7, #4] 1146 0008 3960 str r1, [r7] 646:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 647:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 648:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 649:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 650:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 1147 .loc 1 650 3 1148 000a 0D4B ldr r3, .L76 1149 000c 1B69 ldr r3, [r3, #16] 1150 000e 0C4A ldr r2, .L76 1151 0010 23F44073 bic r3, r3, #768 1152 0014 1361 str r3, [r2, #16] 651:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_WORD; 1153 .loc 1 651 13 1154 0016 0A4B ldr r3, .L76 1155 0018 1B69 ldr r3, [r3, #16] 1156 001a 094A ldr r2, .L76 1157 001c 43F40073 orr r3, r3, #512 1158 0020 1361 str r3, [r2, #16] 652:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 1159 .loc 1 652 13 1160 0022 074B ldr r3, .L76 1161 0024 1B69 ldr r3, [r3, #16] 1162 0026 064A ldr r2, .L76 1163 0028 43F00103 orr r3, r3, #1 1164 002c 1361 str r3, [r2, #16] 653:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 654:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint32_t*)Address = Data; 1165 .loc 1 654 4 1166 002e 7B68 ldr r3, [r7, #4] 1167 .loc 1 654 28 1168 0030 3A68 ldr r2, [r7] 1169 0032 1A60 str r2, [r3] 655:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1170 .loc 1 655 1 1171 0034 00BF nop 1172 0036 0C37 adds r7, r7, #12 1173 .LCFI65: 1174 .cfi_def_cfa_offset 4 1175 0038 BD46 mov sp, r7 1176 .LCFI66: 1177 .cfi_def_cfa_register 13 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 48 1178 @ sp needed 1179 003a 5DF8047B ldr r7, [sp], #4 1180 .LCFI67: 1181 .cfi_restore 7 1182 .cfi_def_cfa_offset 0 1183 003e 7047 bx lr 1184 .L77: 1185 .align 2 1186 .L76: 1187 0040 003C0240 .word 1073888256 1188 .cfi_endproc 1189 .LFE248: 1191 .section .text.FLASH_Program_HalfWord,"ax",%progbits 1192 .align 1 1193 .syntax unified 1194 .thumb 1195 .thumb_func 1197 FLASH_Program_HalfWord: 1198 .LFB249: 656:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 657:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 658:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program a half-word (16-bit) at a specified address. 659:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 660:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 2.1V to 3.6V. 661:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 662:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 663:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 664:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 665:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 666:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 667:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 668:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 669:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_HalfWord(uint32_t Address, uint16_t Data) 670:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1199 .loc 1 670 1 1200 .cfi_startproc 1201 @ args = 0, pretend = 0, frame = 8 1202 @ frame_needed = 1, uses_anonymous_args = 0 1203 @ link register save eliminated. 1204 0000 80B4 push {r7} 1205 .LCFI68: 1206 .cfi_def_cfa_offset 4 1207 .cfi_offset 7, -4 1208 0002 83B0 sub sp, sp, #12 1209 .LCFI69: 1210 .cfi_def_cfa_offset 16 1211 0004 00AF add r7, sp, #0 1212 .LCFI70: 1213 .cfi_def_cfa_register 7 1214 0006 7860 str r0, [r7, #4] 1215 0008 0B46 mov r3, r1 1216 000a 7B80 strh r3, [r7, #2] @ movhi 671:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 672:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 673:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 674:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 675:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 49 1217 .loc 1 675 3 1218 000c 0D4B ldr r3, .L79 1219 000e 1B69 ldr r3, [r3, #16] 1220 0010 0C4A ldr r2, .L79 1221 0012 23F44073 bic r3, r3, #768 1222 0016 1361 str r3, [r2, #16] 676:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_HALF_WORD; 1223 .loc 1 676 13 1224 0018 0A4B ldr r3, .L79 1225 001a 1B69 ldr r3, [r3, #16] 1226 001c 094A ldr r2, .L79 1227 001e 43F48073 orr r3, r3, #256 1228 0022 1361 str r3, [r2, #16] 677:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 1229 .loc 1 677 13 1230 0024 074B ldr r3, .L79 1231 0026 1B69 ldr r3, [r3, #16] 1232 0028 064A ldr r2, .L79 1233 002a 43F00103 orr r3, r3, #1 1234 002e 1361 str r3, [r2, #16] 678:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 679:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint16_t*)Address = Data; 1235 .loc 1 679 4 1236 0030 7B68 ldr r3, [r7, #4] 1237 .loc 1 679 28 1238 0032 7A88 ldrh r2, [r7, #2] @ movhi 1239 0034 1A80 strh r2, [r3] @ movhi 680:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1240 .loc 1 680 1 1241 0036 00BF nop 1242 0038 0C37 adds r7, r7, #12 1243 .LCFI71: 1244 .cfi_def_cfa_offset 4 1245 003a BD46 mov sp, r7 1246 .LCFI72: 1247 .cfi_def_cfa_register 13 1248 @ sp needed 1249 003c 5DF8047B ldr r7, [sp], #4 1250 .LCFI73: 1251 .cfi_restore 7 1252 .cfi_def_cfa_offset 0 1253 0040 7047 bx lr 1254 .L80: 1255 0042 00BF .align 2 1256 .L79: 1257 0044 003C0240 .word 1073888256 1258 .cfi_endproc 1259 .LFE249: 1261 .section .text.FLASH_Program_Byte,"ax",%progbits 1262 .align 1 1263 .syntax unified 1264 .thumb 1265 .thumb_func 1267 FLASH_Program_Byte: 1268 .LFB250: 681:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 682:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 50 683:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Program byte (8-bit) at a specified address. 684:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note This function must be used when the device voltage range is from 685:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 1.8V to 3.6V. 686:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 687:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @note If an erase and a program operations are requested simultaneously, 688:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * the erase operation is performed before the program one. 689:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * 690:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Address specifies the address to be programmed. 691:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @param Data specifies the data to be programmed. 692:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 693:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 694:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_Program_Byte(uint32_t Address, uint8_t Data) 695:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1269 .loc 1 695 1 1270 .cfi_startproc 1271 @ args = 0, pretend = 0, frame = 8 1272 @ frame_needed = 1, uses_anonymous_args = 0 1273 @ link register save eliminated. 1274 0000 80B4 push {r7} 1275 .LCFI74: 1276 .cfi_def_cfa_offset 4 1277 .cfi_offset 7, -4 1278 0002 83B0 sub sp, sp, #12 1279 .LCFI75: 1280 .cfi_def_cfa_offset 16 1281 0004 00AF add r7, sp, #0 1282 .LCFI76: 1283 .cfi_def_cfa_register 7 1284 0006 7860 str r0, [r7, #4] 1285 0008 0B46 mov r3, r1 1286 000a FB70 strb r3, [r7, #3] 696:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Check the parameters */ 697:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** assert_param(IS_FLASH_ADDRESS(Address)); 698:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 699:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* If the previous operation is completed, proceed to program the new data */ 700:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PSIZE); 1287 .loc 1 700 3 1288 000c 0C4B ldr r3, .L82 1289 000e 1B69 ldr r3, [r3, #16] 1290 0010 0B4A ldr r2, .L82 1291 0012 23F44073 bic r3, r3, #768 1292 0016 1361 str r3, [r2, #16] 701:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_PSIZE_BYTE; 1293 .loc 1 701 13 1294 0018 094B ldr r3, .L82 1295 001a 094A ldr r2, .L82 1296 001c 1B69 ldr r3, [r3, #16] 1297 001e 1361 str r3, [r2, #16] 702:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** FLASH->CR |= FLASH_CR_PG; 1298 .loc 1 702 13 1299 0020 074B ldr r3, .L82 1300 0022 1B69 ldr r3, [r3, #16] 1301 0024 064A ldr r2, .L82 1302 0026 43F00103 orr r3, r3, #1 1303 002a 1361 str r3, [r2, #16] 703:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 704:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** *(__IO uint8_t*)Address = Data; ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 51 1304 .loc 1 704 4 1305 002c 7B68 ldr r3, [r7, #4] 1306 .loc 1 704 27 1307 002e FA78 ldrb r2, [r7, #3] 1308 0030 1A70 strb r2, [r3] 705:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1309 .loc 1 705 1 1310 0032 00BF nop 1311 0034 0C37 adds r7, r7, #12 1312 .LCFI77: 1313 .cfi_def_cfa_offset 4 1314 0036 BD46 mov sp, r7 1315 .LCFI78: 1316 .cfi_def_cfa_register 13 1317 @ sp needed 1318 0038 5DF8047B ldr r7, [sp], #4 1319 .LCFI79: 1320 .cfi_restore 7 1321 .cfi_def_cfa_offset 0 1322 003c 7047 bx lr 1323 .L83: 1324 003e 00BF .align 2 1325 .L82: 1326 0040 003C0240 .word 1073888256 1327 .cfi_endproc 1328 .LFE250: 1330 .section .text.FLASH_SetErrorCode,"ax",%progbits 1331 .align 1 1332 .syntax unified 1333 .thumb 1334 .thumb_func 1336 FLASH_SetErrorCode: 1337 .LFB251: 706:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 707:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /** 708:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @brief Set the specific FLASH error flag. 709:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** * @retval None 710:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** */ 711:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** static void FLASH_SetErrorCode(void) 712:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 1338 .loc 1 712 1 1339 .cfi_startproc 1340 @ args = 0, pretend = 0, frame = 0 1341 @ frame_needed = 1, uses_anonymous_args = 0 1342 @ link register save eliminated. 1343 0000 80B4 push {r7} 1344 .LCFI80: 1345 .cfi_def_cfa_offset 4 1346 .cfi_offset 7, -4 1347 0002 00AF add r7, sp, #0 1348 .LCFI81: 1349 .cfi_def_cfa_register 7 713:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_WRPERR) != RESET) 1350 .loc 1 713 6 1351 0004 274B ldr r3, .L91 1352 0006 DB68 ldr r3, [r3, #12] 1353 0008 03F01003 and r3, r3, #16 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 52 1354 .loc 1 713 5 1355 000c 002B cmp r3, #0 1356 000e 08D0 beq .L85 714:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 715:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_WRP; 1357 .loc 1 715 21 1358 0010 254B ldr r3, .L91+4 1359 0012 DB69 ldr r3, [r3, #28] 1360 0014 43F01003 orr r3, r3, #16 1361 0018 234A ldr r2, .L91+4 1362 001a D361 str r3, [r2, #28] 716:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 717:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH write protection error pending bit */ 718:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_WRPERR); 1363 .loc 1 718 4 1364 001c 214B ldr r3, .L91 1365 001e 1022 movs r2, #16 1366 0020 DA60 str r2, [r3, #12] 1367 .L85: 719:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 720:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 721:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGAERR) != RESET) 1368 .loc 1 721 6 1369 0022 204B ldr r3, .L91 1370 0024 DB68 ldr r3, [r3, #12] 1371 0026 03F02003 and r3, r3, #32 1372 .loc 1 721 5 1373 002a 002B cmp r3, #0 1374 002c 08D0 beq .L86 722:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 723:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGA; 1375 .loc 1 723 21 1376 002e 1E4B ldr r3, .L91+4 1377 0030 DB69 ldr r3, [r3, #28] 1378 0032 43F00803 orr r3, r3, #8 1379 0036 1C4A ldr r2, .L91+4 1380 0038 D361 str r3, [r2, #28] 724:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 725:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming alignment error pending bit */ 726:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGAERR); 1381 .loc 1 726 4 1382 003a 1A4B ldr r3, .L91 1383 003c 2022 movs r2, #32 1384 003e DA60 str r2, [r3, #12] 1385 .L86: 727:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 728:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 729:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGPERR) != RESET) 1386 .loc 1 729 6 1387 0040 184B ldr r3, .L91 1388 0042 DB68 ldr r3, [r3, #12] 1389 0044 03F04003 and r3, r3, #64 1390 .loc 1 729 5 1391 0048 002B cmp r3, #0 1392 004a 08D0 beq .L87 730:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 731:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGP; ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 53 1393 .loc 1 731 22 1394 004c 164B ldr r3, .L91+4 1395 004e DB69 ldr r3, [r3, #28] 1396 0050 43F00403 orr r3, r3, #4 1397 0054 144A ldr r2, .L91+4 1398 0056 D361 str r3, [r2, #28] 732:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 733:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming parallelism error pending bit */ 734:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGPERR); 1399 .loc 1 734 5 1400 0058 124B ldr r3, .L91 1401 005a 4022 movs r2, #64 1402 005c DA60 str r2, [r3, #12] 1403 .L87: 735:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 736:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 737:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_PGSERR) != RESET) 1404 .loc 1 737 6 1405 005e 114B ldr r3, .L91 1406 0060 DB68 ldr r3, [r3, #12] 1407 0062 03F08003 and r3, r3, #128 1408 .loc 1 737 5 1409 0066 002B cmp r3, #0 1410 0068 08D0 beq .L88 738:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 739:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_PGS; 1411 .loc 1 739 22 1412 006a 0F4B ldr r3, .L91+4 1413 006c DB69 ldr r3, [r3, #28] 1414 006e 43F00203 orr r3, r3, #2 1415 0072 0D4A ldr r2, .L91+4 1416 0074 D361 str r3, [r2, #28] 740:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 741:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Programming sequence error pending bit */ 742:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_PGSERR); 1417 .loc 1 742 5 1418 0076 0B4B ldr r3, .L91 1419 0078 8022 movs r2, #128 1420 007a DA60 str r2, [r3, #12] 1421 .L88: 743:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 744:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #if defined(FLASH_SR_RDERR) 745:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_RDERR) != RESET) 746:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 747:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_RD; 748:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 749:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Proprietary readout protection error pending bit */ 750:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_RDERR); 751:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 752:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** #endif /* FLASH_SR_RDERR */ 753:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** if(__HAL_FLASH_GET_FLAG(FLASH_FLAG_OPERR) != RESET) 1422 .loc 1 753 6 1423 007c 094B ldr r3, .L91 1424 007e DB68 ldr r3, [r3, #12] 1425 0080 03F00203 and r3, r3, #2 1426 .loc 1 753 5 1427 0084 002B cmp r3, #0 ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 54 1428 0086 08D0 beq .L90 754:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** { 755:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** pFlash.ErrorCode |= HAL_FLASH_ERROR_OPERATION; 1429 .loc 1 755 22 1430 0088 074B ldr r3, .L91+4 1431 008a DB69 ldr r3, [r3, #28] 1432 008c 43F02003 orr r3, r3, #32 1433 0090 054A ldr r2, .L91+4 1434 0092 D361 str r3, [r2, #28] 756:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** 757:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** /* Clear FLASH Operation error pending bit */ 758:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_OPERR); 1435 .loc 1 758 5 1436 0094 034B ldr r3, .L91 1437 0096 0222 movs r2, #2 1438 0098 DA60 str r2, [r3, #12] 1439 .L90: 759:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 760:Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c **** } 1440 .loc 1 760 1 1441 009a 00BF nop 1442 009c BD46 mov sp, r7 1443 .LCFI82: 1444 .cfi_def_cfa_register 13 1445 @ sp needed 1446 009e 5DF8047B ldr r7, [sp], #4 1447 .LCFI83: 1448 .cfi_restore 7 1449 .cfi_def_cfa_offset 0 1450 00a2 7047 bx lr 1451 .L92: 1452 .align 2 1453 .L91: 1454 00a4 003C0240 .word 1073888256 1455 00a8 00000000 .word pFlash 1456 .cfi_endproc 1457 .LFE251: 1459 .text 1460 .Letext0: 1461 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" 1462 .file 4 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 1463 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h" 1464 .file 6 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h" 1465 .file 7 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h" 1466 .file 8 "Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h" ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 55 DEFINED SYMBOLS *ABS*:00000000 stm32f4xx_hal_flash.c C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:24 .bss.pFlash:00000000 pFlash C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:21 .bss.pFlash:00000000 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:27 .text.HAL_FLASH_Program:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:33 .text.HAL_FLASH_Program:00000000 HAL_FLASH_Program C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:918 .text.FLASH_WaitForLastOperation:00000000 FLASH_WaitForLastOperation C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1267 .text.FLASH_Program_Byte:00000000 FLASH_Program_Byte C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1197 .text.FLASH_Program_HalfWord:00000000 FLASH_Program_HalfWord C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1128 .text.FLASH_Program_Word:00000000 FLASH_Program_Word C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1031 .text.FLASH_Program_DoubleWord:00000000 FLASH_Program_DoubleWord C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:149 .text.HAL_FLASH_Program:000000a0 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:155 .text.HAL_FLASH_Program_IT:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:161 .text.HAL_FLASH_Program_IT:00000000 HAL_FLASH_Program_IT C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:271 .text.HAL_FLASH_Program_IT:00000094 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:277 .text.HAL_FLASH_IRQHandler:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:283 .text.HAL_FLASH_IRQHandler:00000000 HAL_FLASH_IRQHandler C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1336 .text.FLASH_SetErrorCode:00000000 FLASH_SetErrorCode C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:555 .text.HAL_FLASH_OperationErrorCallback:00000000 HAL_FLASH_OperationErrorCallback C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:513 .text.HAL_FLASH_EndOfOperationCallback:00000000 HAL_FLASH_EndOfOperationCallback C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:501 .text.HAL_FLASH_IRQHandler:00000138 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:507 .text.HAL_FLASH_EndOfOperationCallback:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:549 .text.HAL_FLASH_OperationErrorCallback:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:591 .text.HAL_FLASH_Unlock:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:597 .text.HAL_FLASH_Unlock:00000000 HAL_FLASH_Unlock C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:660 .text.HAL_FLASH_Unlock:00000038 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:667 .text.HAL_FLASH_Lock:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:673 .text.HAL_FLASH_Lock:00000000 HAL_FLASH_Lock C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:709 .text.HAL_FLASH_Lock:0000001c $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:714 .text.HAL_FLASH_OB_Unlock:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:720 .text.HAL_FLASH_OB_Unlock:00000000 HAL_FLASH_OB_Unlock C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:773 .text.HAL_FLASH_OB_Unlock:0000002c $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:780 .text.HAL_FLASH_OB_Lock:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:786 .text.HAL_FLASH_OB_Lock:00000000 HAL_FLASH_OB_Lock C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:822 .text.HAL_FLASH_OB_Lock:0000001c $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:827 .text.HAL_FLASH_OB_Launch:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:833 .text.HAL_FLASH_OB_Launch:00000000 HAL_FLASH_OB_Launch C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:865 .text.HAL_FLASH_OB_Launch:00000024 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:870 .text.HAL_FLASH_GetError:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:876 .text.HAL_FLASH_GetError:00000000 HAL_FLASH_GetError C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:907 .text.HAL_FLASH_GetError:00000014 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:912 .text.FLASH_WaitForLastOperation:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1020 .text.FLASH_WaitForLastOperation:00000078 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1026 .text.FLASH_Program_DoubleWord:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1118 .text.FLASH_Program_DoubleWord:00000060 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1123 .text.FLASH_Program_Word:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1187 .text.FLASH_Program_Word:00000040 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1192 .text.FLASH_Program_HalfWord:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1257 .text.FLASH_Program_HalfWord:00000044 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1262 .text.FLASH_Program_Byte:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1326 .text.FLASH_Program_Byte:00000040 $d C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1331 .text.FLASH_SetErrorCode:00000000 $t C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s:1454 .text.FLASH_SetErrorCode:000000a4 $d UNDEFINED SYMBOLS FLASH_Erase_Sector FLASH_FlushCaches ARM GAS C:\Users\10728\AppData\Local\Temp\cc8cvT6F.s page 56 HAL_GetTick