ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.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 "stm32f3xx_hal_flash_ex.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .section .rodata 20 .align 2 21 .LC0: 22 0000 44726976 .ascii "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flas" 22 6572732F 22 53544D33 22 32463378 22 785F4841 23 0033 685F6578 .ascii "h_ex.c\000" 23 2E6300 24 .section .text.HAL_FLASHEx_Erase,"ax",%progbits 25 .align 1 26 .global HAL_FLASHEx_Erase 27 .syntax unified 28 .thumb 29 .thumb_func 31 HAL_FLASHEx_Erase: 32 .LFB130: 33 .file 1 "Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c" 1:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 2:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ****************************************************************************** 3:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @file stm32f3xx_hal_flash_ex.c 4:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @author MCD Application Team 5:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Extended FLASH HAL module driver. 6:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 7:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * This file provides firmware functions to manage the following 8:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * functionalities of the FLASH peripheral: 9:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * + Extended Initialization/de-initialization functions 10:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * + Extended I/O operation functions 11:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * + Extended Peripheral Control functions 12:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 13:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** @verbatim 14:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 15:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ##### Flash peripheral extended features ##### 16:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 17:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 18:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ##### How to use this driver ##### 19:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 20:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** [..] This driver provides functions to configure and program the FLASH memory ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 2 21:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** of all STM32F3xxx devices. It includes 22:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 23:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (++) Set/Reset the write protection 24:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (++) Program the user Option Bytes 25:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (++) Get the Read protection Level 26:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 27:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** @endverbatim 28:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ****************************************************************************** 29:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @attention 30:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 31:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * Copyright (c) 2016 STMicroelectronics. 32:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * All rights reserved. 33:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 34:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * This software is licensed under terms that can be found in the LICENSE file in 35:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * the root directory of this software component. 36:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 37:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ****************************************************************************** 38:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 39:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 40:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Includes ------------------------------------------------------------------*/ 41:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #include "stm32f3xx_hal.h" 42:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 43:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @addtogroup STM32F3xx_HAL_Driver 44:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 45:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 46:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #ifdef HAL_FLASH_MODULE_ENABLED 47:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 48:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @addtogroup FLASH 49:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 50:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 51:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @addtogroup FLASH_Private_Variables 52:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 53:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 54:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Variables used for Erase pages under interruption*/ 55:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** extern FLASH_ProcessTypeDef pFlash; 56:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 57:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 58:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 59:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 60:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 61:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 62:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 63:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 64:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx FLASHEx 65:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief FLASH HAL Extension module driver 66:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 67:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 68:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 69:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Private typedef -----------------------------------------------------------*/ 70:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Private define ------------------------------------------------------------*/ 71:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Private_Constants FLASHEx Private Constants 72:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 73:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 74:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #define FLASH_POSITION_IWDGSW_BIT (uint32_t)POSITION_VAL(FLASH_OBR_IWDG_SW) 75:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #define FLASH_POSITION_OB_USERDATA0_BIT (uint32_t)POSITION_VAL(FLASH_OBR_DATA0) 76:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #define FLASH_POSITION_OB_USERDATA1_BIT (uint32_t)POSITION_VAL(FLASH_OBR_DATA1) 77:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 3 78:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 79:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 80:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 81:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Private macro -------------------------------------------------------------*/ 82:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Private_Macros FLASHEx Private Macros 83:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 84:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 85:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 86:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 87:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 88:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 89:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Private variables ---------------------------------------------------------*/ 90:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Private function prototypes -----------------------------------------------*/ 91:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Private_Functions FLASHEx Private Functions 92:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 93:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 94:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Erase operations */ 95:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static void FLASH_MassErase(void); 96:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** void FLASH_PageErase(uint32_t PageAddress); 97:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 98:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Option bytes control */ 99:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WriteProtectPage); 100:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WriteProtectPage); 101:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t ReadProtectLevel); 102:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t UserConfig); 103:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_ProgramData(uint32_t Address, uint8_t Data); 104:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void); 105:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetRDP(void); 106:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetUser(void); 107:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 108:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 109:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 110:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 111:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 112:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Exported functions ---------------------------------------------------------*/ 113:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions FLASHEx Exported Functions 114:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 115:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 116:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 117:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions_Group1 FLASHEx Memory Erasing functions 118:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief FLASH Memory Erasing functions 119:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 120:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** @verbatim 121:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 122:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ##### FLASH Erasing Programming functions ##### 123:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 124:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 125:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** [..] The FLASH Memory Erasing functions, includes the following functions: 126:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (+) HAL_FLASHEx_Erase: return only when erase has been done 127:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (+) HAL_FLASHEx_Erase_IT: end of erase is done when HAL_FLASH_EndOfOperationCallback 128:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** is called with parameter 0xFFFFFFFF 129:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 130:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** [..] Any operation of erase should follow these steps: 131:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (#) Call the HAL_FLASH_Unlock() function to enable the flash control register and 132:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** program memory access. 133:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (#) Call the desired function to erase page. 134:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (#) Call the HAL_FLASH_Lock() to disable the flash program memory access ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 4 135:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** (recommended to protect the FLASH memory against possible unwanted operation). 136:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 137:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** @endverbatim 138:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 139:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 140:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 141:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 142:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 143:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Perform a mass erase or erase the specified FLASH memory pages 144:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function 145:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * must be called before. 146:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 147:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * (recommended to protect the FLASH memory against possible unwanted operation) 148:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param[in] pEraseInit pointer to an FLASH_EraseInitTypeDef structure that 149:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * contains the configuration information for the erasing. 150:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 151:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param[out] PageError pointer to variable that 152:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * contains the configuration information on faulty page in case of error 153:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * (0xFFFFFFFF means that all the pages have been correctly erased) 154:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 155:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 156:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 157:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_Erase(FLASH_EraseInitTypeDef *pEraseInit, uint32_t *PageError) 158:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 34 .loc 1 158 1 35 .cfi_startproc 36 @ args = 0, pretend = 0, frame = 16 37 @ frame_needed = 1, uses_anonymous_args = 0 38 0000 80B5 push {r7, lr} 39 .LCFI0: 40 .cfi_def_cfa_offset 8 41 .cfi_offset 7, -8 42 .cfi_offset 14, -4 43 0002 84B0 sub sp, sp, #16 44 .LCFI1: 45 .cfi_def_cfa_offset 24 46 0004 00AF add r7, sp, #0 47 .LCFI2: 48 .cfi_def_cfa_register 7 49 0006 7860 str r0, [r7, #4] 50 0008 3960 str r1, [r7] 159:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 51 .loc 1 159 21 52 000a 0123 movs r3, #1 53 000c FB73 strb r3, [r7, #15] 160:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint32_t address = 0U; 54 .loc 1 160 12 55 000e 0023 movs r3, #0 56 0010 BB60 str r3, [r7, #8] 161:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 162:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Locked */ 163:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 57 .loc 1 163 3 58 0012 624B ldr r3, .L19 59 0014 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 60 0016 012B cmp r3, #1 61 0018 01D1 bne .L2 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 5 62 .loc 1 163 3 is_stmt 0 discriminator 1 63 001a 0223 movs r3, #2 64 001c BAE0 b .L3 65 .L2: 66 .loc 1 163 3 discriminator 2 67 001e 5F4B ldr r3, .L19 68 0020 0122 movs r2, #1 69 0022 1A76 strb r2, [r3, #24] 164:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 165:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 166:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); 70 .loc 1 166 3 is_stmt 1 discriminator 2 71 0024 7B68 ldr r3, [r7, #4] 72 0026 1B68 ldr r3, [r3] 73 0028 002B cmp r3, #0 74 002a 07D0 beq .L4 75 .loc 1 166 3 is_stmt 0 discriminator 1 76 002c 7B68 ldr r3, [r7, #4] 77 002e 1B68 ldr r3, [r3] 78 0030 012B cmp r3, #1 79 0032 03D0 beq .L4 80 .loc 1 166 3 discriminator 2 81 0034 A621 movs r1, #166 82 0036 5A48 ldr r0, .L19+4 83 0038 FFF7FEFF bl assert_failed 84 .L4: 167:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 168:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) 85 .loc 1 168 17 is_stmt 1 86 003c 7B68 ldr r3, [r7, #4] 87 003e 1B68 ldr r3, [r3] 88 .loc 1 168 6 89 0040 012B cmp r3, #1 90 0042 16D1 bne .L5 169:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 170:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Mass Erase requested for Bank1 */ 171:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 172:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK) 91 .loc 1 172 11 92 0044 4CF25030 movw r0, #50000 93 0048 FFF7FEFF bl FLASH_WaitForLastOperation 94 004c 0346 mov r3, r0 95 .loc 1 172 10 96 004e 002B cmp r3, #0 97 0050 40F09C80 bne .L6 173:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 174:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Mass erase to be done*/ 175:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** FLASH_MassErase(); 98 .loc 1 175 9 99 0054 FFF7FEFF bl FLASH_MassErase 176:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 177:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 178:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 100 .loc 1 178 18 101 0058 4CF25030 movw r0, #50000 102 005c FFF7FEFF bl FLASH_WaitForLastOperation 103 0060 0346 mov r3, r0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 6 104 0062 FB73 strb r3, [r7, #15] 179:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 180:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the erase operation is completed, disable the MER Bit */ 181:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_MER); 105 .loc 1 181 9 106 0064 4F4B ldr r3, .L19+8 107 0066 1B69 ldr r3, [r3, #16] 108 0068 4E4A ldr r2, .L19+8 109 006a 23F00403 bic r3, r3, #4 110 006e 1361 str r3, [r2, #16] 111 0070 8CE0 b .L6 112 .L5: 182:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 183:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 184:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** else 185:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 186:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Page Erase is requested */ 187:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 188:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress)); 113 .loc 1 188 5 114 0072 7B68 ldr r3, [r7, #4] 115 0074 5B68 ldr r3, [r3, #4] 116 0076 B3F1006F cmp r3, #134217728 117 007a 19D3 bcc .L7 118 .loc 1 188 5 is_stmt 0 discriminator 2 119 007c 4A4B ldr r3, .L19+12 120 007e 1B88 ldrh r3, [r3] 121 0080 B3F5807F cmp r3, #256 122 0084 05D1 bne .L8 123 .loc 1 188 5 discriminator 3 124 0086 7B68 ldr r3, [r7, #4] 125 0088 5B68 ldr r3, [r3, #4] 126 008a 484A ldr r2, .L19+16 127 008c 9342 cmp r3, r2 128 008e 0FD8 bhi .L7 129 0090 12E0 b .L9 130 .L8: 131 .loc 1 188 5 discriminator 4 132 0092 454B ldr r3, .L19+12 133 0094 1B88 ldrh r3, [r3] 134 0096 802B cmp r3, #128 135 0098 05D1 bne .L10 136 .loc 1 188 5 discriminator 6 137 009a 7B68 ldr r3, [r7, #4] 138 009c 5B68 ldr r3, [r3, #4] 139 009e 444A ldr r2, .L19+20 140 00a0 9342 cmp r3, r2 141 00a2 05D8 bhi .L7 142 00a4 08E0 b .L9 143 .L10: 144 .loc 1 188 5 discriminator 7 145 00a6 7B68 ldr r3, [r7, #4] 146 00a8 5B68 ldr r3, [r3, #4] 147 00aa 424A ldr r2, .L19+24 148 00ac 9342 cmp r3, r2 149 00ae 03D9 bls .L9 150 .L7: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 7 151 .loc 1 188 5 discriminator 9 152 00b0 BC21 movs r1, #188 153 00b2 3B48 ldr r0, .L19+4 154 00b4 FFF7FEFF bl assert_failed 155 .L9: 189:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_FLASH_NB_PAGES(pEraseInit->PageAddress, pEraseInit->NbPages)); 156 .loc 1 189 5 is_stmt 1 157 00b8 3B4B ldr r3, .L19+12 158 00ba 1B88 ldrh r3, [r3] 159 00bc B3F5807F cmp r3, #256 160 00c0 0DD1 bne .L11 161 .loc 1 189 5 is_stmt 0 discriminator 1 162 00c2 7B68 ldr r3, [r7, #4] 163 00c4 5A68 ldr r2, [r3, #4] 164 00c6 7B68 ldr r3, [r7, #4] 165 00c8 9B68 ldr r3, [r3, #8] 166 00ca DB02 lsls r3, r3, #11 167 00cc 1344 add r3, r3, r2 168 00ce 013B subs r3, r3, #1 169 00d0 364A ldr r2, .L19+16 170 00d2 9342 cmp r3, r2 171 00d4 94BF ite ls 172 00d6 0123 movls r3, #1 173 00d8 0023 movhi r3, #0 174 00da DBB2 uxtb r3, r3 175 00dc 1EE0 b .L12 176 .L11: 177 .loc 1 189 5 discriminator 2 178 00de 324B ldr r3, .L19+12 179 00e0 1B88 ldrh r3, [r3] 180 00e2 802B cmp r3, #128 181 00e4 0DD1 bne .L13 182 .loc 1 189 5 discriminator 4 183 00e6 7B68 ldr r3, [r7, #4] 184 00e8 5A68 ldr r2, [r3, #4] 185 00ea 7B68 ldr r3, [r7, #4] 186 00ec 9B68 ldr r3, [r3, #8] 187 00ee DB02 lsls r3, r3, #11 188 00f0 1344 add r3, r3, r2 189 00f2 013B subs r3, r3, #1 190 00f4 2E4A ldr r2, .L19+20 191 00f6 9342 cmp r3, r2 192 00f8 94BF ite ls 193 00fa 0123 movls r3, #1 194 00fc 0023 movhi r3, #0 195 00fe DBB2 uxtb r3, r3 196 0100 0CE0 b .L12 197 .L13: 198 .loc 1 189 5 discriminator 5 199 0102 7B68 ldr r3, [r7, #4] 200 0104 5A68 ldr r2, [r3, #4] 201 0106 7B68 ldr r3, [r7, #4] 202 0108 9B68 ldr r3, [r3, #8] 203 010a DB02 lsls r3, r3, #11 204 010c 1344 add r3, r3, r2 205 010e 013B subs r3, r3, #1 206 0110 284A ldr r2, .L19+24 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 8 207 0112 9342 cmp r3, r2 208 0114 94BF ite ls 209 0116 0123 movls r3, #1 210 0118 0023 movhi r3, #0 211 011a DBB2 uxtb r3, r3 212 .L12: 213 .loc 1 189 5 discriminator 8 214 011c 002B cmp r3, #0 215 011e 03D1 bne .L15 216 .loc 1 189 5 discriminator 9 217 0120 BD21 movs r1, #189 218 0122 1F48 ldr r0, .L19+4 219 0124 FFF7FEFF bl assert_failed 220 .L15: 190:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 191:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Page Erase requested on address located on bank1 */ 192:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 193:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE) == HAL_OK) 221 .loc 1 193 11 is_stmt 1 222 0128 4CF25030 movw r0, #50000 223 012c FFF7FEFF bl FLASH_WaitForLastOperation 224 0130 0346 mov r3, r0 225 .loc 1 193 10 226 0132 002B cmp r3, #0 227 0134 2AD1 bne .L6 194:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 195:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Initialization of PageError variable*/ 196:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** *PageError = 0xFFFFFFFFU; 228 .loc 1 196 20 229 0136 3B68 ldr r3, [r7] 230 0138 4FF0FF32 mov r2, #-1 231 013c 1A60 str r2, [r3] 197:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 198:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Erase page by page to be done*/ 199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** for(address = pEraseInit->PageAddress; 232 .loc 1 199 21 233 013e 7B68 ldr r3, [r7, #4] 234 0140 5B68 ldr r3, [r3, #4] 235 0142 BB60 str r3, [r7, #8] 236 .loc 1 199 9 237 0144 19E0 b .L16 238 .L18: 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress); 201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 202:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 203:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** FLASH_PageErase(address); 239 .loc 1 203 11 240 0146 B868 ldr r0, [r7, #8] 241 0148 FFF7FEFF bl FLASH_PageErase 204:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 205:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 206:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 242 .loc 1 206 20 243 014c 4CF25030 movw r0, #50000 244 0150 FFF7FEFF bl FLASH_WaitForLastOperation 245 0154 0346 mov r3, r0 246 0156 FB73 strb r3, [r7, #15] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 9 207:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 208:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the erase operation is completed, disable the PER Bit */ 209:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_PER); 247 .loc 1 209 11 248 0158 124B ldr r3, .L19+8 249 015a 1B69 ldr r3, [r3, #16] 250 015c 114A ldr r2, .L19+8 251 015e 23F00203 bic r3, r3, #2 252 0162 1361 str r3, [r2, #16] 210:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 211:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status != HAL_OK) 253 .loc 1 211 14 254 0164 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 255 0166 002B cmp r3, #0 256 0168 03D0 beq .L17 212:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 213:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* In case of error, stop erase procedure and return the faulty address */ 214:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** *PageError = address; 257 .loc 1 214 24 258 016a 3B68 ldr r3, [r7] 259 016c BA68 ldr r2, [r7, #8] 260 016e 1A60 str r2, [r3] 215:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** break; 261 .loc 1 215 13 262 0170 0CE0 b .L6 263 .L17: 201:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 264 .loc 1 201 21 265 0172 BB68 ldr r3, [r7, #8] 266 0174 03F50063 add r3, r3, #2048 267 0178 BB60 str r3, [r7, #8] 268 .L16: 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 269 .loc 1 200 35 discriminator 1 270 017a 7B68 ldr r3, [r7, #4] 271 017c 9B68 ldr r3, [r3, #8] 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 272 .loc 1 200 45 discriminator 1 273 017e DA02 lsls r2, r3, #11 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 274 .loc 1 200 76 discriminator 1 275 0180 7B68 ldr r3, [r7, #4] 276 0182 5B68 ldr r3, [r3, #4] 200:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address += FLASH_PAGE_SIZE) 277 .loc 1 200 64 discriminator 1 278 0184 1344 add r3, r3, r2 199:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** address < ((pEraseInit->NbPages * FLASH_PAGE_SIZE) + pEraseInit->PageAddress); 279 .loc 1 199 9 discriminator 1 280 0186 BA68 ldr r2, [r7, #8] 281 0188 9A42 cmp r2, r3 282 018a DCD3 bcc .L18 283 .L6: 216:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 217:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 218:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 219:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 220:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 10 221:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Unlocked */ 222:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 284 .loc 1 222 3 285 018c 034B ldr r3, .L19 286 018e 0022 movs r2, #0 287 0190 1A76 strb r2, [r3, #24] 223:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 224:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 288 .loc 1 224 10 289 0192 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 290 .L3: 225:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 291 .loc 1 225 1 292 0194 1846 mov r0, r3 293 0196 1037 adds r7, r7, #16 294 .LCFI3: 295 .cfi_def_cfa_offset 8 296 0198 BD46 mov sp, r7 297 .LCFI4: 298 .cfi_def_cfa_register 13 299 @ sp needed 300 019a 80BD pop {r7, pc} 301 .L20: 302 .align 2 303 .L19: 304 019c 00000000 .word pFlash 305 01a0 00000000 .word .LC0 306 01a4 00200240 .word 1073881088 307 01a8 CCF7FF1F .word 536868812 308 01ac FFFF0308 .word 134479871 309 01b0 FFFF0108 .word 134348799 310 01b4 FFFF0008 .word 134283263 311 .cfi_endproc 312 .LFE130: 314 .section .text.HAL_FLASHEx_Erase_IT,"ax",%progbits 315 .align 1 316 .global HAL_FLASHEx_Erase_IT 317 .syntax unified 318 .thumb 319 .thumb_func 321 HAL_FLASHEx_Erase_IT: 322 .LFB131: 226:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 227:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 228:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Perform a mass erase or erase the specified FLASH memory pages with interrupt enabled 229:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note To correctly run this function, the @ref HAL_FLASH_Unlock() function 230:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * must be called before. 231:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * Call the @ref HAL_FLASH_Lock() to disable the flash memory access 232:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * (recommended to protect the FLASH memory against possible unwanted operation) 233:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param pEraseInit pointer to an FLASH_EraseInitTypeDef structure that 234:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * contains the configuration information for the erasing. 235:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 236:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 237:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 238:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_Erase_IT(FLASH_EraseInitTypeDef *pEraseInit) 239:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 323 .loc 1 239 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 11 324 .cfi_startproc 325 @ args = 0, pretend = 0, frame = 16 326 @ frame_needed = 1, uses_anonymous_args = 0 327 0000 80B5 push {r7, lr} 328 .LCFI5: 329 .cfi_def_cfa_offset 8 330 .cfi_offset 7, -8 331 .cfi_offset 14, -4 332 0002 84B0 sub sp, sp, #16 333 .LCFI6: 334 .cfi_def_cfa_offset 24 335 0004 00AF add r7, sp, #0 336 .LCFI7: 337 .cfi_def_cfa_register 7 338 0006 7860 str r0, [r7, #4] 240:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 339 .loc 1 240 21 340 0008 0023 movs r3, #0 341 000a FB73 strb r3, [r7, #15] 241:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 242:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Locked */ 243:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 342 .loc 1 243 3 343 000c 4E4B ldr r3, .L37 344 000e 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 345 0010 012B cmp r3, #1 346 0012 01D1 bne .L22 347 .loc 1 243 3 is_stmt 0 discriminator 1 348 0014 0223 movs r3, #2 349 0016 93E0 b .L23 350 .L22: 351 .loc 1 243 3 discriminator 2 352 0018 4B4B ldr r3, .L37 353 001a 0122 movs r2, #1 354 001c 1A76 strb r2, [r3, #24] 244:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 245:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If procedure already ongoing, reject the next one */ 246:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (pFlash.ProcedureOnGoing != FLASH_PROC_NONE) 355 .loc 1 246 13 is_stmt 1 discriminator 2 356 001e 4A4B ldr r3, .L37 357 0020 1B78 ldrb r3, [r3] 358 0022 DBB2 uxtb r3, r3 359 .loc 1 246 6 discriminator 2 360 0024 002B cmp r3, #0 361 0026 01D0 beq .L24 247:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 248:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return HAL_ERROR; 362 .loc 1 248 12 363 0028 0123 movs r3, #1 364 002a 89E0 b .L23 365 .L24: 249:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 250:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 251:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 252:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_FLASH_TYPEERASE(pEraseInit->TypeErase)); 366 .loc 1 252 3 367 002c 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 12 368 002e 1B68 ldr r3, [r3] 369 0030 002B cmp r3, #0 370 0032 07D0 beq .L25 371 .loc 1 252 3 is_stmt 0 discriminator 1 372 0034 7B68 ldr r3, [r7, #4] 373 0036 1B68 ldr r3, [r3] 374 0038 012B cmp r3, #1 375 003a 03D0 beq .L25 376 .loc 1 252 3 discriminator 2 377 003c FC21 movs r1, #252 378 003e 4348 ldr r0, .L37+4 379 0040 FFF7FEFF bl assert_failed 380 .L25: 253:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 254:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Enable End of FLASH Operation and Error source interrupts */ 255:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_FLASH_ENABLE_IT(FLASH_IT_EOP | FLASH_IT_ERR); 381 .loc 1 255 3 is_stmt 1 382 0044 424B ldr r3, .L37+8 383 0046 1B69 ldr r3, [r3, #16] 384 0048 414A ldr r2, .L37+8 385 004a 43F4A053 orr r3, r3, #5120 386 004e 1361 str r3, [r2, #16] 256:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 257:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (pEraseInit->TypeErase == FLASH_TYPEERASE_MASSERASE) 387 .loc 1 257 17 388 0050 7B68 ldr r3, [r7, #4] 389 0052 1B68 ldr r3, [r3] 390 .loc 1 257 6 391 0054 012B cmp r3, #1 392 0056 05D1 bne .L26 258:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 259:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Mass erase to be done*/ 260:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ProcedureOnGoing = FLASH_PROC_MASSERASE; 393 .loc 1 260 29 394 0058 3B4B ldr r3, .L37 395 005a 0222 movs r2, #2 396 005c 1A70 strb r2, [r3] 261:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** FLASH_MassErase(); 397 .loc 1 261 9 398 005e FFF7FEFF bl FLASH_MassErase 399 0062 6CE0 b .L27 400 .L26: 262:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 263:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** else 264:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 265:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Erase by page to be done*/ 266:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 267:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 268:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_FLASH_PROGRAM_ADDRESS(pEraseInit->PageAddress)); 401 .loc 1 268 5 402 0064 7B68 ldr r3, [r7, #4] 403 0066 5B68 ldr r3, [r3, #4] 404 0068 B3F1006F cmp r3, #134217728 405 006c 19D3 bcc .L28 406 .loc 1 268 5 is_stmt 0 discriminator 2 407 006e 394B ldr r3, .L37+12 408 0070 1B88 ldrh r3, [r3] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 13 409 0072 B3F5807F cmp r3, #256 410 0076 05D1 bne .L29 411 .loc 1 268 5 discriminator 3 412 0078 7B68 ldr r3, [r7, #4] 413 007a 5B68 ldr r3, [r3, #4] 414 007c 364A ldr r2, .L37+16 415 007e 9342 cmp r3, r2 416 0080 0FD8 bhi .L28 417 0082 13E0 b .L30 418 .L29: 419 .loc 1 268 5 discriminator 4 420 0084 334B ldr r3, .L37+12 421 0086 1B88 ldrh r3, [r3] 422 0088 802B cmp r3, #128 423 008a 05D1 bne .L31 424 .loc 1 268 5 discriminator 6 425 008c 7B68 ldr r3, [r7, #4] 426 008e 5B68 ldr r3, [r3, #4] 427 0090 324A ldr r2, .L37+20 428 0092 9342 cmp r3, r2 429 0094 05D8 bhi .L28 430 0096 09E0 b .L30 431 .L31: 432 .loc 1 268 5 discriminator 7 433 0098 7B68 ldr r3, [r7, #4] 434 009a 5B68 ldr r3, [r3, #4] 435 009c 304A ldr r2, .L37+24 436 009e 9342 cmp r3, r2 437 00a0 04D9 bls .L30 438 .L28: 439 .loc 1 268 5 discriminator 9 440 00a2 4FF48671 mov r1, #268 441 00a6 2948 ldr r0, .L37+4 442 00a8 FFF7FEFF bl assert_failed 443 .L30: 269:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_FLASH_NB_PAGES(pEraseInit->PageAddress, pEraseInit->NbPages)); 444 .loc 1 269 5 is_stmt 1 445 00ac 294B ldr r3, .L37+12 446 00ae 1B88 ldrh r3, [r3] 447 00b0 B3F5807F cmp r3, #256 448 00b4 0DD1 bne .L32 449 .loc 1 269 5 is_stmt 0 discriminator 1 450 00b6 7B68 ldr r3, [r7, #4] 451 00b8 5A68 ldr r2, [r3, #4] 452 00ba 7B68 ldr r3, [r7, #4] 453 00bc 9B68 ldr r3, [r3, #8] 454 00be DB02 lsls r3, r3, #11 455 00c0 1344 add r3, r3, r2 456 00c2 013B subs r3, r3, #1 457 00c4 244A ldr r2, .L37+16 458 00c6 9342 cmp r3, r2 459 00c8 94BF ite ls 460 00ca 0123 movls r3, #1 461 00cc 0023 movhi r3, #0 462 00ce DBB2 uxtb r3, r3 463 00d0 1EE0 b .L33 464 .L32: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 14 465 .loc 1 269 5 discriminator 2 466 00d2 204B ldr r3, .L37+12 467 00d4 1B88 ldrh r3, [r3] 468 00d6 802B cmp r3, #128 469 00d8 0DD1 bne .L34 470 .loc 1 269 5 discriminator 4 471 00da 7B68 ldr r3, [r7, #4] 472 00dc 5A68 ldr r2, [r3, #4] 473 00de 7B68 ldr r3, [r7, #4] 474 00e0 9B68 ldr r3, [r3, #8] 475 00e2 DB02 lsls r3, r3, #11 476 00e4 1344 add r3, r3, r2 477 00e6 013B subs r3, r3, #1 478 00e8 1C4A ldr r2, .L37+20 479 00ea 9342 cmp r3, r2 480 00ec 94BF ite ls 481 00ee 0123 movls r3, #1 482 00f0 0023 movhi r3, #0 483 00f2 DBB2 uxtb r3, r3 484 00f4 0CE0 b .L33 485 .L34: 486 .loc 1 269 5 discriminator 5 487 00f6 7B68 ldr r3, [r7, #4] 488 00f8 5A68 ldr r2, [r3, #4] 489 00fa 7B68 ldr r3, [r7, #4] 490 00fc 9B68 ldr r3, [r3, #8] 491 00fe DB02 lsls r3, r3, #11 492 0100 1344 add r3, r3, r2 493 0102 013B subs r3, r3, #1 494 0104 164A ldr r2, .L37+24 495 0106 9342 cmp r3, r2 496 0108 94BF ite ls 497 010a 0123 movls r3, #1 498 010c 0023 movhi r3, #0 499 010e DBB2 uxtb r3, r3 500 .L33: 501 .loc 1 269 5 discriminator 8 502 0110 002B cmp r3, #0 503 0112 04D1 bne .L36 504 .loc 1 269 5 discriminator 9 505 0114 40F20D11 movw r1, #269 506 0118 0C48 ldr r0, .L37+4 507 011a FFF7FEFF bl assert_failed 508 .L36: 270:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 271:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ProcedureOnGoing = FLASH_PROC_PAGEERASE; 509 .loc 1 271 29 is_stmt 1 510 011e 0A4B ldr r3, .L37 511 0120 0122 movs r2, #1 512 0122 1A70 strb r2, [r3] 272:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.DataRemaining = pEraseInit->NbPages; 513 .loc 1 272 38 514 0124 7B68 ldr r3, [r7, #4] 515 0126 9B68 ldr r3, [r3, #8] 516 .loc 1 272 26 517 0128 074A ldr r2, .L37 518 012a 5360 str r3, [r2, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 15 273:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.Address = pEraseInit->PageAddress; 519 .loc 1 273 32 520 012c 7B68 ldr r3, [r7, #4] 521 012e 5B68 ldr r3, [r3, #4] 522 .loc 1 273 20 523 0130 054A ldr r2, .L37 524 0132 9360 str r3, [r2, #8] 274:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 275:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Erase 1st page and wait for IT*/ 276:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** FLASH_PageErase(pEraseInit->PageAddress); 525 .loc 1 276 5 526 0134 7B68 ldr r3, [r7, #4] 527 0136 5B68 ldr r3, [r3, #4] 528 0138 1846 mov r0, r3 529 013a FFF7FEFF bl FLASH_PageErase 530 .L27: 277:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 278:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 279:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 531 .loc 1 279 10 532 013e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 533 .L23: 280:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 534 .loc 1 280 1 535 0140 1846 mov r0, r3 536 0142 1037 adds r7, r7, #16 537 .LCFI8: 538 .cfi_def_cfa_offset 8 539 0144 BD46 mov sp, r7 540 .LCFI9: 541 .cfi_def_cfa_register 13 542 @ sp needed 543 0146 80BD pop {r7, pc} 544 .L38: 545 .align 2 546 .L37: 547 0148 00000000 .word pFlash 548 014c 00000000 .word .LC0 549 0150 00200240 .word 1073881088 550 0154 CCF7FF1F .word 536868812 551 0158 FFFF0308 .word 134479871 552 015c FFFF0108 .word 134348799 553 0160 FFFF0008 .word 134283263 554 .cfi_endproc 555 .LFE131: 557 .section .text.HAL_FLASHEx_OBErase,"ax",%progbits 558 .align 1 559 .global HAL_FLASHEx_OBErase 560 .syntax unified 561 .thumb 562 .thumb_func 564 HAL_FLASHEx_OBErase: 565 .LFB132: 281:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 282:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 283:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 284:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 16 285:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 286:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @defgroup FLASHEx_Exported_Functions_Group2 Option Bytes Programming functions 287:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Option Bytes Programming functions 288:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 289:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** @verbatim 290:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 291:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ##### Option Bytes Programming functions ##### 292:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ============================================================================== 293:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** [..] 294:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** This subsection provides a set of functions allowing to control the FLASH 295:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** option bytes operations. 296:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 297:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** @endverbatim 298:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 299:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 300:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 301:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 302:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Erases the FLASH option bytes. 303:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note This functions erases all option bytes except the Read protection (RDP). 304:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interf 305:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options b 306:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of t 307:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * (system reset will occur) 308:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL status 309:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 310:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 311:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_OBErase(void) 312:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 566 .loc 1 312 1 567 .cfi_startproc 568 @ args = 0, pretend = 0, frame = 8 569 @ frame_needed = 1, uses_anonymous_args = 0 570 0000 80B5 push {r7, lr} 571 .LCFI10: 572 .cfi_def_cfa_offset 8 573 .cfi_offset 7, -8 574 .cfi_offset 14, -4 575 0002 82B0 sub sp, sp, #8 576 .LCFI11: 577 .cfi_def_cfa_offset 16 578 0004 00AF add r7, sp, #0 579 .LCFI12: 580 .cfi_def_cfa_register 7 313:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint8_t rdptmp = OB_RDP_LEVEL_0; 581 .loc 1 313 11 582 0006 AA23 movs r3, #170 583 0008 BB71 strb r3, [r7, #6] 314:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 584 .loc 1 314 21 585 000a 0123 movs r3, #1 586 000c FB71 strb r3, [r7, #7] 315:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 316:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Get the actual read protection Option Byte value */ 317:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** rdptmp = FLASH_OB_GetRDP(); 587 .loc 1 317 12 588 000e FFF7FEFF bl FLASH_OB_GetRDP 589 0012 0346 mov r3, r0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 17 590 .loc 1 317 10 591 0014 BB71 strb r3, [r7, #6] 318:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 319:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 320:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 592 .loc 1 320 12 593 0016 4CF25030 movw r0, #50000 594 001a FFF7FEFF bl FLASH_WaitForLastOperation 595 001e 0346 mov r3, r0 596 0020 FB71 strb r3, [r7, #7] 321:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 322:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 597 .loc 1 322 5 598 0022 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 599 0024 002B cmp r3, #0 600 0026 23D1 bne .L40 323:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 324:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 325:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 601 .loc 1 325 22 602 0028 144B ldr r3, .L42 603 002a 0022 movs r2, #0 604 002c DA61 str r2, [r3, #28] 326:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 327:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the previous operation is completed, proceed to erase the option bytes */ 328:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTER); 605 .loc 1 328 5 606 002e 144B ldr r3, .L42+4 607 0030 1B69 ldr r3, [r3, #16] 608 0032 134A ldr r2, .L42+4 609 0034 43F02003 orr r3, r3, #32 610 0038 1361 str r3, [r2, #16] 329:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_STRT); 611 .loc 1 329 5 612 003a 114B ldr r3, .L42+4 613 003c 1B69 ldr r3, [r3, #16] 614 003e 104A ldr r2, .L42+4 615 0040 43F04003 orr r3, r3, #64 616 0044 1361 str r3, [r2, #16] 330:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 331:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 332:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 617 .loc 1 332 14 618 0046 4CF25030 movw r0, #50000 619 004a FFF7FEFF bl FLASH_WaitForLastOperation 620 004e 0346 mov r3, r0 621 0050 FB71 strb r3, [r7, #7] 333:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 334:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the erase operation is completed, disable the OPTER Bit */ 335:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTER); 622 .loc 1 335 5 623 0052 0B4B ldr r3, .L42+4 624 0054 1B69 ldr r3, [r3, #16] 625 0056 0A4A ldr r2, .L42+4 626 0058 23F02003 bic r3, r3, #32 627 005c 1361 str r3, [r2, #16] 336:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 18 337:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 628 .loc 1 337 7 629 005e FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 630 0060 002B cmp r3, #0 631 0062 05D1 bne .L40 338:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 339:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Restore the last read protection Option Byte value */ 340:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_OB_RDP_LevelConfig(rdptmp); 632 .loc 1 340 16 633 0064 BB79 ldrb r3, [r7, #6] @ zero_extendqisi2 634 0066 1846 mov r0, r3 635 0068 FFF7FEFF bl FLASH_OB_RDP_LevelConfig 636 006c 0346 mov r3, r0 637 006e FB71 strb r3, [r7, #7] 638 .L40: 341:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 342:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 343:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 344:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Return the erase status */ 345:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 639 .loc 1 345 10 640 0070 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 346:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 641 .loc 1 346 1 642 0072 1846 mov r0, r3 643 0074 0837 adds r7, r7, #8 644 .LCFI13: 645 .cfi_def_cfa_offset 8 646 0076 BD46 mov sp, r7 647 .LCFI14: 648 .cfi_def_cfa_register 13 649 @ sp needed 650 0078 80BD pop {r7, pc} 651 .L43: 652 007a 00BF .align 2 653 .L42: 654 007c 00000000 .word pFlash 655 0080 00200240 .word 1073881088 656 .cfi_endproc 657 .LFE132: 659 .section .text.HAL_FLASHEx_OBProgram,"ax",%progbits 660 .align 1 661 .global HAL_FLASHEx_OBProgram 662 .syntax unified 663 .thumb 664 .thumb_func 666 HAL_FLASHEx_OBProgram: 667 .LFB133: 347:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 348:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 349:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Program option bytes 350:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interf 351:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options b 352:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of t 353:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * (system reset will occur) 354:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 355:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param pOBInit pointer to an FLASH_OBInitStruct structure that ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 19 356:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * contains the configuration information for the programming. 357:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 358:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL_StatusTypeDef HAL Status 359:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 360:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef HAL_FLASHEx_OBProgram(FLASH_OBProgramInitTypeDef *pOBInit) 361:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 668 .loc 1 361 1 669 .cfi_startproc 670 @ args = 0, pretend = 0, frame = 16 671 @ frame_needed = 1, uses_anonymous_args = 0 672 0000 80B5 push {r7, lr} 673 .LCFI15: 674 .cfi_def_cfa_offset 8 675 .cfi_offset 7, -8 676 .cfi_offset 14, -4 677 0002 84B0 sub sp, sp, #16 678 .LCFI16: 679 .cfi_def_cfa_offset 24 680 0004 00AF add r7, sp, #0 681 .LCFI17: 682 .cfi_def_cfa_register 7 683 0006 7860 str r0, [r7, #4] 362:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 684 .loc 1 362 21 685 0008 0123 movs r3, #1 686 000a FB73 strb r3, [r7, #15] 363:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 364:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Locked */ 365:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_LOCK(&pFlash); 687 .loc 1 365 3 688 000c 444B ldr r3, .L55 689 000e 1B7E ldrb r3, [r3, #24] @ zero_extendqisi2 690 0010 012B cmp r3, #1 691 0012 01D1 bne .L45 692 .loc 1 365 3 is_stmt 0 discriminator 1 693 0014 0223 movs r3, #2 694 0016 7FE0 b .L46 695 .L45: 696 .loc 1 365 3 discriminator 2 697 0018 414B ldr r3, .L55 698 001a 0122 movs r2, #1 699 001c 1A76 strb r2, [r3, #24] 366:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 367:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 368:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OPTIONBYTE(pOBInit->OptionType)); 700 .loc 1 368 3 is_stmt 1 discriminator 2 701 001e 7B68 ldr r3, [r7, #4] 702 0020 1B68 ldr r3, [r3] 703 0022 0F2B cmp r3, #15 704 0024 04D9 bls .L47 705 .loc 1 368 3 is_stmt 0 discriminator 1 706 0026 4FF4B871 mov r1, #368 707 002a 3E48 ldr r0, .L55+4 708 002c FFF7FEFF bl assert_failed 709 .L47: 369:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 370:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Write protection configuration */ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 20 371:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_WRP) == OPTIONBYTE_WRP) 710 .loc 1 371 14 is_stmt 1 711 0030 7B68 ldr r3, [r7, #4] 712 0032 1B68 ldr r3, [r3] 713 .loc 1 371 27 714 0034 03F00103 and r3, r3, #1 715 .loc 1 371 5 716 0038 002B cmp r3, #0 717 003a 27D0 beq .L48 372:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 373:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_WRPSTATE(pOBInit->WRPState)); 718 .loc 1 373 5 719 003c 7B68 ldr r3, [r7, #4] 720 003e 5B68 ldr r3, [r3, #4] 721 0040 002B cmp r3, #0 722 0042 08D0 beq .L49 723 .loc 1 373 5 is_stmt 0 discriminator 1 724 0044 7B68 ldr r3, [r7, #4] 725 0046 5B68 ldr r3, [r3, #4] 726 0048 012B cmp r3, #1 727 004a 04D0 beq .L49 728 .loc 1 373 5 discriminator 2 729 004c 40F27511 movw r1, #373 730 0050 3448 ldr r0, .L55+4 731 0052 FFF7FEFF bl assert_failed 732 .L49: 374:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (pOBInit->WRPState == OB_WRPSTATE_ENABLE) 733 .loc 1 374 16 is_stmt 1 734 0056 7B68 ldr r3, [r7, #4] 735 0058 5B68 ldr r3, [r3, #4] 736 .loc 1 374 8 737 005a 012B cmp r3, #1 738 005c 07D1 bne .L50 375:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 376:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Enable of Write protection on the selected page */ 377:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_OB_EnableWRP(pOBInit->WRPPage); 739 .loc 1 377 16 740 005e 7B68 ldr r3, [r7, #4] 741 0060 9B68 ldr r3, [r3, #8] 742 0062 1846 mov r0, r3 743 0064 FFF7FEFF bl FLASH_OB_EnableWRP 744 0068 0346 mov r3, r0 745 006a FB73 strb r3, [r7, #15] 746 006c 06E0 b .L51 747 .L50: 378:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 379:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** else 380:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 381:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Disable of Write protection on the selected page */ 382:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_OB_DisableWRP(pOBInit->WRPPage); 748 .loc 1 382 16 749 006e 7B68 ldr r3, [r7, #4] 750 0070 9B68 ldr r3, [r3, #8] 751 0072 1846 mov r0, r3 752 0074 FFF7FEFF bl FLASH_OB_DisableWRP 753 0078 0346 mov r3, r0 754 007a FB73 strb r3, [r7, #15] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 21 755 .L51: 383:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 384:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status != HAL_OK) 756 .loc 1 384 8 757 007c FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 758 007e 002B cmp r3, #0 759 0080 04D0 beq .L48 385:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 386:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Unlocked */ 387:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 760 .loc 1 387 7 761 0082 274B ldr r3, .L55 762 0084 0022 movs r2, #0 763 0086 1A76 strb r2, [r3, #24] 388:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 764 .loc 1 388 14 765 0088 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 766 008a 45E0 b .L46 767 .L48: 389:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 390:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 391:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 392:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Read protection configuration */ 393:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_RDP) == OPTIONBYTE_RDP) 768 .loc 1 393 14 769 008c 7B68 ldr r3, [r7, #4] 770 008e 1B68 ldr r3, [r3] 771 .loc 1 393 27 772 0090 03F00203 and r3, r3, #2 773 .loc 1 393 5 774 0094 002B cmp r3, #0 775 0096 0ED0 beq .L52 394:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 395:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_OB_RDP_LevelConfig(pOBInit->RDPLevel); 776 .loc 1 395 14 777 0098 7B68 ldr r3, [r7, #4] 778 009a 1B7B ldrb r3, [r3, #12] @ zero_extendqisi2 779 009c 1846 mov r0, r3 780 009e FFF7FEFF bl FLASH_OB_RDP_LevelConfig 781 00a2 0346 mov r3, r0 782 00a4 FB73 strb r3, [r7, #15] 396:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status != HAL_OK) 783 .loc 1 396 8 784 00a6 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 785 00a8 002B cmp r3, #0 786 00aa 04D0 beq .L52 397:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 398:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Unlocked */ 399:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 787 .loc 1 399 7 788 00ac 1C4B ldr r3, .L55 789 00ae 0022 movs r2, #0 790 00b0 1A76 strb r2, [r3, #24] 400:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 791 .loc 1 400 14 792 00b2 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 793 00b4 30E0 b .L46 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 22 794 .L52: 401:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 402:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 403:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 404:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* USER configuration */ 405:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_USER) == OPTIONBYTE_USER) 795 .loc 1 405 14 796 00b6 7B68 ldr r3, [r7, #4] 797 00b8 1B68 ldr r3, [r3] 798 .loc 1 405 27 799 00ba 03F00403 and r3, r3, #4 800 .loc 1 405 5 801 00be 002B cmp r3, #0 802 00c0 0ED0 beq .L53 406:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 407:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_OB_UserConfig(pOBInit->USERConfig); 803 .loc 1 407 14 804 00c2 7B68 ldr r3, [r7, #4] 805 00c4 5B7B ldrb r3, [r3, #13] @ zero_extendqisi2 806 00c6 1846 mov r0, r3 807 00c8 FFF7FEFF bl FLASH_OB_UserConfig 808 00cc 0346 mov r3, r0 809 00ce FB73 strb r3, [r7, #15] 408:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status != HAL_OK) 810 .loc 1 408 8 811 00d0 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 812 00d2 002B cmp r3, #0 813 00d4 04D0 beq .L53 409:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 410:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Unlocked */ 411:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 814 .loc 1 411 7 815 00d6 124B ldr r3, .L55 816 00d8 0022 movs r2, #0 817 00da 1A76 strb r2, [r3, #24] 412:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 818 .loc 1 412 14 819 00dc FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 820 00de 1BE0 b .L46 821 .L53: 413:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 414:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 415:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 416:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* DATA configuration*/ 417:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((pOBInit->OptionType & OPTIONBYTE_DATA) == OPTIONBYTE_DATA) 822 .loc 1 417 14 823 00e0 7B68 ldr r3, [r7, #4] 824 00e2 1B68 ldr r3, [r3] 825 .loc 1 417 27 826 00e4 03F00803 and r3, r3, #8 827 .loc 1 417 5 828 00e8 002B cmp r3, #0 829 00ea 11D0 beq .L54 418:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 419:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_OB_ProgramData(pOBInit->DATAAddress, pOBInit->DATAData); 830 .loc 1 419 14 831 00ec 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 23 832 00ee 1A69 ldr r2, [r3, #16] 833 00f0 7B68 ldr r3, [r7, #4] 834 00f2 1B7D ldrb r3, [r3, #20] @ zero_extendqisi2 835 00f4 1946 mov r1, r3 836 00f6 1046 mov r0, r2 837 00f8 FFF7FEFF bl FLASH_OB_ProgramData 838 00fc 0346 mov r3, r0 839 00fe FB73 strb r3, [r7, #15] 420:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status != HAL_OK) 840 .loc 1 420 8 841 0100 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 842 0102 002B cmp r3, #0 843 0104 04D0 beq .L54 421:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 422:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Unlocked */ 423:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 844 .loc 1 423 7 845 0106 064B ldr r3, .L55 846 0108 0022 movs r2, #0 847 010a 1A76 strb r2, [r3, #24] 424:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 848 .loc 1 424 14 849 010c FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 850 010e 03E0 b .L46 851 .L54: 425:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 426:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 427:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 428:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Process Unlocked */ 429:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** __HAL_UNLOCK(&pFlash); 852 .loc 1 429 3 853 0110 034B ldr r3, .L55 854 0112 0022 movs r2, #0 855 0114 1A76 strb r2, [r3, #24] 430:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 431:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 856 .loc 1 431 10 857 0116 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 858 .L46: 432:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 859 .loc 1 432 1 860 0118 1846 mov r0, r3 861 011a 1037 adds r7, r7, #16 862 .LCFI18: 863 .cfi_def_cfa_offset 8 864 011c BD46 mov sp, r7 865 .LCFI19: 866 .cfi_def_cfa_register 13 867 @ sp needed 868 011e 80BD pop {r7, pc} 869 .L56: 870 .align 2 871 .L55: 872 0120 00000000 .word pFlash 873 0124 00000000 .word .LC0 874 .cfi_endproc 875 .LFE133: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 24 877 .section .text.HAL_FLASHEx_OBGetConfig,"ax",%progbits 878 .align 1 879 .global HAL_FLASHEx_OBGetConfig 880 .syntax unified 881 .thumb 882 .thumb_func 884 HAL_FLASHEx_OBGetConfig: 885 .LFB134: 433:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 434:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 435:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Get the Option byte configuration 436:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param pOBInit pointer to an FLASH_OBInitStruct structure that 437:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * contains the configuration information for the programming. 438:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 439:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval None 440:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 441:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** void HAL_FLASHEx_OBGetConfig(FLASH_OBProgramInitTypeDef *pOBInit) 442:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 886 .loc 1 442 1 887 .cfi_startproc 888 @ args = 0, pretend = 0, frame = 8 889 @ frame_needed = 1, uses_anonymous_args = 0 890 0000 80B5 push {r7, lr} 891 .LCFI20: 892 .cfi_def_cfa_offset 8 893 .cfi_offset 7, -8 894 .cfi_offset 14, -4 895 0002 82B0 sub sp, sp, #8 896 .LCFI21: 897 .cfi_def_cfa_offset 16 898 0004 00AF add r7, sp, #0 899 .LCFI22: 900 .cfi_def_cfa_register 7 901 0006 7860 str r0, [r7, #4] 443:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pOBInit->OptionType = OPTIONBYTE_WRP | OPTIONBYTE_RDP | OPTIONBYTE_USER; 902 .loc 1 443 23 903 0008 7B68 ldr r3, [r7, #4] 904 000a 0722 movs r2, #7 905 000c 1A60 str r2, [r3] 444:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 445:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Get WRP*/ 446:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pOBInit->WRPPage = FLASH_OB_GetWRP(); 906 .loc 1 446 22 907 000e FFF7FEFF bl FLASH_OB_GetWRP 908 0012 0246 mov r2, r0 909 .loc 1 446 20 910 0014 7B68 ldr r3, [r7, #4] 911 0016 9A60 str r2, [r3, #8] 447:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 448:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Get RDP Level*/ 449:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pOBInit->RDPLevel = FLASH_OB_GetRDP(); 912 .loc 1 449 23 913 0018 FFF7FEFF bl FLASH_OB_GetRDP 914 001c 0346 mov r3, r0 915 .loc 1 449 21 916 001e DAB2 uxtb r2, r3 917 0020 7B68 ldr r3, [r7, #4] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 25 918 0022 1A73 strb r2, [r3, #12] 450:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 451:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /*Get USER*/ 452:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pOBInit->USERConfig = FLASH_OB_GetUser(); 919 .loc 1 452 25 920 0024 FFF7FEFF bl FLASH_OB_GetUser 921 0028 0346 mov r3, r0 922 002a 1A46 mov r2, r3 923 .loc 1 452 23 924 002c 7B68 ldr r3, [r7, #4] 925 002e 5A73 strb r2, [r3, #13] 453:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 926 .loc 1 453 1 927 0030 00BF nop 928 0032 0837 adds r7, r7, #8 929 .LCFI23: 930 .cfi_def_cfa_offset 8 931 0034 BD46 mov sp, r7 932 .LCFI24: 933 .cfi_def_cfa_register 13 934 @ sp needed 935 0036 80BD pop {r7, pc} 936 .cfi_endproc 937 .LFE134: 939 .section .text.HAL_FLASHEx_OBGetUserData,"ax",%progbits 940 .align 1 941 .global HAL_FLASHEx_OBGetUserData 942 .syntax unified 943 .thumb 944 .thumb_func 946 HAL_FLASHEx_OBGetUserData: 947 .LFB135: 454:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 455:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 456:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Get the Option byte user data 457:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param DATAAdress Address of the option byte DATA 458:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * This parameter can be one of the following values: 459:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_DATA_ADDRESS_DATA0 460:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_DATA_ADDRESS_DATA1 461:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval Value programmed in USER data 462:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 463:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint32_t HAL_FLASHEx_OBGetUserData(uint32_t DATAAdress) 464:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 948 .loc 1 464 1 949 .cfi_startproc 950 @ args = 0, pretend = 0, frame = 32 951 @ frame_needed = 1, uses_anonymous_args = 0 952 @ link register save eliminated. 953 0000 80B4 push {r7} 954 .LCFI25: 955 .cfi_def_cfa_offset 4 956 .cfi_offset 7, -4 957 0002 89B0 sub sp, sp, #36 958 .LCFI26: 959 .cfi_def_cfa_offset 40 960 0004 00AF add r7, sp, #0 961 .LCFI27: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 26 962 .cfi_def_cfa_register 7 963 0006 7860 str r0, [r7, #4] 465:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint32_t value = 0U; 964 .loc 1 465 12 965 0008 0023 movs r3, #0 966 000a FB61 str r3, [r7, #28] 466:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 467:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (DATAAdress == OB_DATA_ADDRESS_DATA0) 967 .loc 1 467 6 968 000c 7B68 ldr r3, [r7, #4] 969 000e 164A ldr r2, .L64 970 0010 9342 cmp r3, r2 971 0012 11D1 bne .L59 468:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 469:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Get value programmed in OB USER Data0 */ 470:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** value = READ_BIT(FLASH->OBR, FLASH_OBR_DATA0) >> FLASH_POSITION_OB_USERDATA0_BIT; 972 .loc 1 470 13 973 0014 154B ldr r3, .L64+4 974 0016 DB69 ldr r3, [r3, #28] 975 0018 03F47F03 and r3, r3, #16711680 976 001c 4FF47F02 mov r2, #16711680 977 0020 BA61 str r2, [r7, #24] 978 .LBB8: 979 .LBB9: 980 .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" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 27 33:Drivers/CMSIS/Include/cmsis_gcc.h **** 34:Drivers/CMSIS/Include/cmsis_gcc.h **** /* Fallback for __has_builtin */ 35:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __has_builtin 36:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __has_builtin(x) (0) 37:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 38:Drivers/CMSIS/Include/cmsis_gcc.h **** 39:Drivers/CMSIS/Include/cmsis_gcc.h **** /* CMSIS compiler specific defines */ 40:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ASM 41:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __ASM __asm 42:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 43:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __INLINE 44:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __INLINE inline 45:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 46:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_INLINE 47:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_INLINE static inline 48:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 49:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __STATIC_FORCEINLINE 50:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline 51:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 52:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __NO_RETURN 53:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __NO_RETURN __attribute__((__noreturn__)) 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" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 28 90:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; 91:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 92:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(add 93:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 94:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_WRITE 95:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 96:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 97:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 98:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; 99:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 100:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))- 101:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 102:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __UNALIGNED_UINT32_READ 103:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic push 104:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wpacked" 105:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic ignored "-Wattributes" 106:Drivers/CMSIS/Include/cmsis_gcc.h **** __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; 107:Drivers/CMSIS/Include/cmsis_gcc.h **** #pragma GCC diagnostic pop 108:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(add 109:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 110:Drivers/CMSIS/Include/cmsis_gcc.h **** #ifndef __ALIGNED 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 **** /** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 29 147:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Get Control Register 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 30 204:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 31 261:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 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 **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 32 318:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 33 375:Drivers/CMSIS/Include/cmsis_gcc.h **** 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)) || \ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 34 432:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ 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. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 35 489:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] basePri Base Priority value to set 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 **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 36 546:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("MRS %0, faultmask_ns" : "=r" (result) ); 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 37 603:Drivers/CMSIS/Include/cmsis_gcc.h **** } 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 **** { ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 38 660:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1))) 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 **** /** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 39 717:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Set Main Stack Pointer Limit 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 */ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 40 774:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_arm_get_fpscr(); 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 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 41 831:Drivers/CMSIS/Include/cmsis_gcc.h **** 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"); 869:Drivers/CMSIS/Include/cmsis_gcc.h **** } 870:Drivers/CMSIS/Include/cmsis_gcc.h **** 871:Drivers/CMSIS/Include/cmsis_gcc.h **** 872:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 873:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Synchronization Barrier 874:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Acts as a special kind of Data Memory Barrier. 875:Drivers/CMSIS/Include/cmsis_gcc.h **** It completes when all explicit memory accesses before this instruction complete. 876:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 877:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DSB(void) 878:Drivers/CMSIS/Include/cmsis_gcc.h **** { 879:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dsb 0xF":::"memory"); 880:Drivers/CMSIS/Include/cmsis_gcc.h **** } 881:Drivers/CMSIS/Include/cmsis_gcc.h **** 882:Drivers/CMSIS/Include/cmsis_gcc.h **** 883:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 884:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Data Memory Barrier 885:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Ensures the apparent order of the explicit memory operations before 886:Drivers/CMSIS/Include/cmsis_gcc.h **** and after the instruction, without ensuring their completion. 887:Drivers/CMSIS/Include/cmsis_gcc.h **** */ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 42 888:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE void __DMB(void) 889:Drivers/CMSIS/Include/cmsis_gcc.h **** { 890:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("dmb 0xF":::"memory"); 891:Drivers/CMSIS/Include/cmsis_gcc.h **** } 892:Drivers/CMSIS/Include/cmsis_gcc.h **** 893:Drivers/CMSIS/Include/cmsis_gcc.h **** 894:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 895:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (32 bit) 896:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in unsigned integer value. For example, 0x12345678 becomes 0x785 897:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse 898:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value 899:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 900:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV(uint32_t value) 901:Drivers/CMSIS/Include/cmsis_gcc.h **** { 902:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) 903:Drivers/CMSIS/Include/cmsis_gcc.h **** return __builtin_bswap32(value); 904:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 905:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 906:Drivers/CMSIS/Include/cmsis_gcc.h **** 907:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); 908:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 909:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 910:Drivers/CMSIS/Include/cmsis_gcc.h **** } 911:Drivers/CMSIS/Include/cmsis_gcc.h **** 912:Drivers/CMSIS/Include/cmsis_gcc.h **** 913:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 914:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) 915:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order within each halfword of a word. For example, 0x12345678 becomes 916:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse 917:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value 918:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 919:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __REV16(uint32_t value) 920:Drivers/CMSIS/Include/cmsis_gcc.h **** { 921:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 922:Drivers/CMSIS/Include/cmsis_gcc.h **** 923:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); 924:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 925:Drivers/CMSIS/Include/cmsis_gcc.h **** } 926:Drivers/CMSIS/Include/cmsis_gcc.h **** 927:Drivers/CMSIS/Include/cmsis_gcc.h **** 928:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 929:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse byte order (16 bit) 930:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the byte order in a 16-bit value and returns the signed 16-bit result. For exam 931:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse 932:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value 933:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 934:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE int16_t __REVSH(int16_t value) 935:Drivers/CMSIS/Include/cmsis_gcc.h **** { 936:Drivers/CMSIS/Include/cmsis_gcc.h **** #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8) 937:Drivers/CMSIS/Include/cmsis_gcc.h **** return (int16_t)__builtin_bswap16(value); 938:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 939:Drivers/CMSIS/Include/cmsis_gcc.h **** int16_t result; 940:Drivers/CMSIS/Include/cmsis_gcc.h **** 941:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) ); 942:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 943:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 944:Drivers/CMSIS/Include/cmsis_gcc.h **** } ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 43 945:Drivers/CMSIS/Include/cmsis_gcc.h **** 946:Drivers/CMSIS/Include/cmsis_gcc.h **** 947:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 948:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Rotate Right in unsigned value (32 bit) 949:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Rotate Right (immediate) provides the value of the contents of a register rotated by a v 950:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op1 Value to rotate 951:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] op2 Number of Bits to rotate 952:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Rotated value 953:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 954:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __ROR(uint32_t op1, uint32_t op2) 955:Drivers/CMSIS/Include/cmsis_gcc.h **** { 956:Drivers/CMSIS/Include/cmsis_gcc.h **** op2 %= 32U; 957:Drivers/CMSIS/Include/cmsis_gcc.h **** if (op2 == 0U) 958:Drivers/CMSIS/Include/cmsis_gcc.h **** { 959:Drivers/CMSIS/Include/cmsis_gcc.h **** return op1; 960:Drivers/CMSIS/Include/cmsis_gcc.h **** } 961:Drivers/CMSIS/Include/cmsis_gcc.h **** return (op1 >> op2) | (op1 << (32U - op2)); 962:Drivers/CMSIS/Include/cmsis_gcc.h **** } 963:Drivers/CMSIS/Include/cmsis_gcc.h **** 964:Drivers/CMSIS/Include/cmsis_gcc.h **** 965:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 966:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Breakpoint 967:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Causes the processor to enter Debug state. 968:Drivers/CMSIS/Include/cmsis_gcc.h **** Debug tools can use this to investigate system state when the instruction at a particula 969:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value is ignored by the processor. 970:Drivers/CMSIS/Include/cmsis_gcc.h **** If required, a debugger can use it to store additional information about the break 971:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 972:Drivers/CMSIS/Include/cmsis_gcc.h **** #define __BKPT(value) __ASM volatile ("bkpt "#value) 973:Drivers/CMSIS/Include/cmsis_gcc.h **** 974:Drivers/CMSIS/Include/cmsis_gcc.h **** 975:Drivers/CMSIS/Include/cmsis_gcc.h **** /** 976:Drivers/CMSIS/Include/cmsis_gcc.h **** \brief Reverse bit order of value 977:Drivers/CMSIS/Include/cmsis_gcc.h **** \details Reverses the bit order of the given value. 978:Drivers/CMSIS/Include/cmsis_gcc.h **** \param [in] value Value to reverse 979:Drivers/CMSIS/Include/cmsis_gcc.h **** \return Reversed value 980:Drivers/CMSIS/Include/cmsis_gcc.h **** */ 981:Drivers/CMSIS/Include/cmsis_gcc.h **** __STATIC_FORCEINLINE uint32_t __RBIT(uint32_t value) 982:Drivers/CMSIS/Include/cmsis_gcc.h **** { 983:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t result; 984:Drivers/CMSIS/Include/cmsis_gcc.h **** 985:Drivers/CMSIS/Include/cmsis_gcc.h **** #if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ 986:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \ 987:Drivers/CMSIS/Include/cmsis_gcc.h **** (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) ) 988:Drivers/CMSIS/Include/cmsis_gcc.h **** __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); 981 .loc 2 988 4 982 0022 BA69 ldr r2, [r7, #24] 983 .syntax unified 984 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 985 0024 92FAA2F2 rbit r2, r2 986 @ 0 "" 2 987 .thumb 988 .syntax unified 989 0028 7A61 str r2, [r7, #20] 989:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 990:Drivers/CMSIS/Include/cmsis_gcc.h **** uint32_t s = (4U /*sizeof(v)*/ * 8U) - 1U; /* extra shift needed at end */ 991:Drivers/CMSIS/Include/cmsis_gcc.h **** 992:Drivers/CMSIS/Include/cmsis_gcc.h **** result = value; /* r will be reversed bits of v; first get LSB of v */ ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 44 993:Drivers/CMSIS/Include/cmsis_gcc.h **** for (value >>= 1U; value != 0U; value >>= 1U) 994:Drivers/CMSIS/Include/cmsis_gcc.h **** { 995:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= 1U; 996:Drivers/CMSIS/Include/cmsis_gcc.h **** result |= value & 1U; 997:Drivers/CMSIS/Include/cmsis_gcc.h **** s--; 998:Drivers/CMSIS/Include/cmsis_gcc.h **** } 999:Drivers/CMSIS/Include/cmsis_gcc.h **** result <<= s; /* shift when v's highest bits are zero */ 1000:Drivers/CMSIS/Include/cmsis_gcc.h **** #endif 1001:Drivers/CMSIS/Include/cmsis_gcc.h **** return result; 990 .loc 2 1001 10 991 002a 7A69 ldr r2, [r7, #20] 992 .LBE9: 993 .LBE8: 994 .loc 1 470 54 995 002c B2FA82F2 clz r2, r2 996 0030 D2B2 uxtb r2, r2 997 .loc 1 470 11 998 0032 D340 lsrs r3, r3, r2 999 0034 FB61 str r3, [r7, #28] 1000 0036 10E0 b .L61 1001 .L59: 471:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 472:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** else 473:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 474:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Get value programmed in OB USER Data1 */ 475:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** value = READ_BIT(FLASH->OBR, FLASH_OBR_DATA1) >> FLASH_POSITION_OB_USERDATA1_BIT; 1002 .loc 1 475 13 1003 0038 0C4B ldr r3, .L64+4 1004 003a DB69 ldr r3, [r3, #28] 1005 003c 03F07F43 and r3, r3, #-16777216 1006 0040 4FF07F42 mov r2, #-16777216 1007 0044 3A61 str r2, [r7, #16] 1008 .LBB10: 1009 .LBB11: 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 1010 .loc 2 988 4 1011 0046 3A69 ldr r2, [r7, #16] 1012 .syntax unified 1013 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 1014 0048 92FAA2F2 rbit r2, r2 1015 @ 0 "" 2 1016 .thumb 1017 .syntax unified 1018 004c FA60 str r2, [r7, #12] 1019 .loc 2 1001 10 1020 004e FA68 ldr r2, [r7, #12] 1021 .LBE11: 1022 .LBE10: 1023 .loc 1 475 54 1024 0050 B2FA82F2 clz r2, r2 1025 0054 D2B2 uxtb r2, r2 1026 .loc 1 475 11 1027 0056 D340 lsrs r3, r3, r2 1028 0058 FB61 str r3, [r7, #28] 1029 .L61: 476:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 477:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 45 478:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return value; 1030 .loc 1 478 10 1031 005a FB69 ldr r3, [r7, #28] 479:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1032 .loc 1 479 1 1033 005c 1846 mov r0, r3 1034 005e 2437 adds r7, r7, #36 1035 .LCFI28: 1036 .cfi_def_cfa_offset 4 1037 0060 BD46 mov sp, r7 1038 .LCFI29: 1039 .cfi_def_cfa_register 13 1040 @ sp needed 1041 0062 5DF8047B ldr r7, [sp], #4 1042 .LCFI30: 1043 .cfi_restore 7 1044 .cfi_def_cfa_offset 0 1045 0066 7047 bx lr 1046 .L65: 1047 .align 2 1048 .L64: 1049 0068 04F8FF1F .word 536868868 1050 006c 00200240 .word 1073881088 1051 .cfi_endproc 1052 .LFE135: 1054 .section .text.FLASH_MassErase,"ax",%progbits 1055 .align 1 1056 .syntax unified 1057 .thumb 1058 .thumb_func 1060 FLASH_MassErase: 1061 .LFB136: 480:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 481:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 482:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 483:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 484:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 485:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 486:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 487:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 488:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 489:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @addtogroup FLASHEx_Private_Functions 490:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 491:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 492:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 493:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 494:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Full erase of FLASH memory Bank 495:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 496:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval None 497:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 498:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static void FLASH_MassErase(void) 499:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1062 .loc 1 499 1 1063 .cfi_startproc 1064 @ args = 0, pretend = 0, frame = 0 1065 @ frame_needed = 1, uses_anonymous_args = 0 1066 @ link register save eliminated. ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 46 1067 0000 80B4 push {r7} 1068 .LCFI31: 1069 .cfi_def_cfa_offset 4 1070 .cfi_offset 7, -4 1071 0002 00AF add r7, sp, #0 1072 .LCFI32: 1073 .cfi_def_cfa_register 7 500:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 501:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1074 .loc 1 501 20 1075 0004 094B ldr r3, .L67 1076 0006 0022 movs r2, #0 1077 0008 DA61 str r2, [r3, #28] 502:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 503:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Only bank1 will be erased*/ 504:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_MER); 1078 .loc 1 504 5 1079 000a 094B ldr r3, .L67+4 1080 000c 1B69 ldr r3, [r3, #16] 1081 000e 084A ldr r2, .L67+4 1082 0010 43F00403 orr r3, r3, #4 1083 0014 1361 str r3, [r2, #16] 505:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_STRT); 1084 .loc 1 505 5 1085 0016 064B ldr r3, .L67+4 1086 0018 1B69 ldr r3, [r3, #16] 1087 001a 054A ldr r2, .L67+4 1088 001c 43F04003 orr r3, r3, #64 1089 0020 1361 str r3, [r2, #16] 506:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1090 .loc 1 506 1 1091 0022 00BF nop 1092 0024 BD46 mov sp, r7 1093 .LCFI33: 1094 .cfi_def_cfa_register 13 1095 @ sp needed 1096 0026 5DF8047B ldr r7, [sp], #4 1097 .LCFI34: 1098 .cfi_restore 7 1099 .cfi_def_cfa_offset 0 1100 002a 7047 bx lr 1101 .L68: 1102 .align 2 1103 .L67: 1104 002c 00000000 .word pFlash 1105 0030 00200240 .word 1073881088 1106 .cfi_endproc 1107 .LFE136: 1109 .section .text.FLASH_OB_EnableWRP,"ax",%progbits 1110 .align 1 1111 .syntax unified 1112 .thumb 1113 .thumb_func 1115 FLASH_OB_EnableWRP: 1116 .LFB137: 507:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 508:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 47 509:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Enable the write protection of the desired pages 510:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note An option byte erase is done automatically in this function. 511:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note When the memory read protection level is selected (RDP level = 1), 512:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * it is not possible to program or erase the flash page i if 513:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 514:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 515:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param WriteProtectPage specifies the page(s) to be write protected. 516:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The value of this parameter depend on device used within the same series 517:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL status 518:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 519:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_EnableWRP(uint32_t WriteProtectPage) 520:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1117 .loc 1 520 1 1118 .cfi_startproc 1119 @ args = 0, pretend = 0, frame = 24 1120 @ frame_needed = 1, uses_anonymous_args = 0 1121 0000 80B5 push {r7, lr} 1122 .LCFI35: 1123 .cfi_def_cfa_offset 8 1124 .cfi_offset 7, -8 1125 .cfi_offset 14, -4 1126 0002 86B0 sub sp, sp, #24 1127 .LCFI36: 1128 .cfi_def_cfa_offset 32 1129 0004 00AF add r7, sp, #0 1130 .LCFI37: 1131 .cfi_def_cfa_register 7 1132 0006 7860 str r0, [r7, #4] 521:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1133 .loc 1 521 21 1134 0008 0023 movs r3, #0 1135 000a FB75 strb r3, [r7, #23] 522:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP0_Data = 0xFFFFU; 1136 .loc 1 522 12 1137 000c 4FF6FF73 movw r3, #65535 1138 0010 BB82 strh r3, [r7, #20] @ movhi 523:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP1_WRP1) 524:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP1_Data = 0xFFFFU; 1139 .loc 1 524 12 1140 0012 4FF6FF73 movw r3, #65535 1141 0016 7B82 strh r3, [r7, #18] @ movhi 525:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP1_WRP1 */ 526:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP2_WRP2) 527:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP2_Data = 0xFFFFU; 1142 .loc 1 527 12 1143 0018 4FF6FF73 movw r3, #65535 1144 001c 3B82 strh r3, [r7, #16] @ movhi 528:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP2_WRP2 */ 529:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP3_WRP3) 530:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP3_Data = 0xFFFFU; 1145 .loc 1 530 12 1146 001e 4FF6FF73 movw r3, #65535 1147 0022 FB81 strh r3, [r7, #14] @ movhi 531:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP3_WRP3 */ 532:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 533:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 534:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_WRP(WriteProtectPage)); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 48 1148 .loc 1 534 3 1149 0024 7B68 ldr r3, [r7, #4] 1150 0026 002B cmp r3, #0 1151 0028 04D1 bne .L70 1152 .loc 1 534 3 is_stmt 0 discriminator 1 1153 002a 40F21621 movw r1, #534 1154 002e 4648 ldr r0, .L77 1155 0030 FFF7FEFF bl assert_failed 1156 .L70: 535:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 536:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Get current write protected pages and the new pages to be protected ******/ 537:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WriteProtectPage = (uint32_t)(~((~FLASH_OB_GetWRP()) | WriteProtectPage)); 1157 .loc 1 537 37 is_stmt 1 1158 0034 FFF7FEFF bl FLASH_OB_GetWRP 1159 0038 0246 mov r2, r0 1160 .loc 1 537 33 1161 003a 7B68 ldr r3, [r7, #4] 1162 003c DB43 mvns r3, r3 1163 .loc 1 537 20 1164 003e 1340 ands r3, r3, r2 1165 0040 7B60 str r3, [r7, #4] 538:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 539:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES0TO15MASK) 540:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO15MASK); 1166 .loc 1 540 15 1167 0042 7B68 ldr r3, [r7, #4] 1168 0044 9BB2 uxth r3, r3 1169 .loc 1 540 13 1170 0046 DBB2 uxtb r3, r3 1171 0048 BB82 strh r3, [r7, #20] @ movhi 541:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES0TO31MASK */ 542:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 543:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES16TO31MASK) 544:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES16TO31MASK) >> 8U); 1172 .loc 1 544 70 1173 004a 7B68 ldr r3, [r7, #4] 1174 004c 1B0A lsrs r3, r3, #8 1175 .loc 1 544 15 1176 004e 9BB2 uxth r3, r3 1177 .loc 1 544 13 1178 0050 DBB2 uxtb r3, r3 1179 0052 7B82 strh r3, [r7, #18] @ movhi 545:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES32TO63MASK */ 546:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 547:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES32TO47MASK) 548:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO47MASK) >> 16U); 1180 .loc 1 548 70 1181 0054 7B68 ldr r3, [r7, #4] 1182 0056 1B0C lsrs r3, r3, #16 1183 .loc 1 548 15 1184 0058 9BB2 uxth r3, r3 1185 .loc 1 548 13 1186 005a DBB2 uxtb r3, r3 1187 005c 3B82 strh r3, [r7, #16] @ movhi 549:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES32TO47MASK */ 550:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 551:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES48TO127MASK) ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 49 552:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO127MASK) >> 24U); 1188 .loc 1 552 71 1189 005e 7B68 ldr r3, [r7, #4] 1190 0060 1B0E lsrs r3, r3, #24 1191 .loc 1 552 13 1192 0062 FB81 strh r3, [r7, #14] @ movhi 553:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #elif defined(OB_WRP_PAGES48TO255MASK) 554:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO255MASK) >> 24U); 555:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES48TO63MASK */ 556:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 557:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 558:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1193 .loc 1 558 12 1194 0064 4CF25030 movw r0, #50000 1195 0068 FFF7FEFF bl FLASH_WaitForLastOperation 1196 006c 0346 mov r3, r0 1197 006e FB75 strb r3, [r7, #23] 559:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 560:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 1198 .loc 1 560 5 1199 0070 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1200 0072 002B cmp r3, #0 1201 0074 62D1 bne .L71 561:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 562:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 563:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1202 .loc 1 563 22 1203 0076 354B ldr r3, .L77+4 1204 0078 0022 movs r2, #0 1205 007a DA61 str r2, [r3, #28] 564:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 565:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* To be able to write again option byte, need to perform a option byte erase */ 566:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = HAL_FLASHEx_OBErase(); 1206 .loc 1 566 14 1207 007c FFF7FEFF bl HAL_FLASHEx_OBErase 1208 0080 0346 mov r3, r0 1209 0082 FB75 strb r3, [r7, #23] 567:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status == HAL_OK) 1210 .loc 1 567 8 1211 0084 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1212 0086 002B cmp r3, #0 1213 0088 58D1 bne .L71 568:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 569:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Enable write protection */ 570:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 1214 .loc 1 570 7 1215 008a 314B ldr r3, .L77+8 1216 008c 1B69 ldr r3, [r3, #16] 1217 008e 304A ldr r2, .L77+8 1218 0090 43F01003 orr r3, r3, #16 1219 0094 1361 str r3, [r2, #16] 571:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 572:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP0_WRP0) 573:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(WRP0_Data != 0xFFU) 1220 .loc 1 573 9 1221 0096 BB8A ldrh r3, [r7, #20] 1222 0098 FF2B cmp r3, #255 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 50 1223 009a 0DD0 beq .L72 574:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 575:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP0 &= WRP0_Data; 1224 .loc 1 575 18 1225 009c 2D4B ldr r3, .L77+12 1226 009e 1B89 ldrh r3, [r3, #8] @ movhi 1227 00a0 9AB2 uxth r2, r3 1228 00a2 2C49 ldr r1, .L77+12 1229 00a4 BB8A ldrh r3, [r7, #20] @ movhi 1230 00a6 1340 ands r3, r3, r2 1231 00a8 9BB2 uxth r3, r3 1232 00aa 0B81 strh r3, [r1, #8] @ movhi 576:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 577:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 578:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1233 .loc 1 578 18 1234 00ac 4CF25030 movw r0, #50000 1235 00b0 FFF7FEFF bl FLASH_WaitForLastOperation 1236 00b4 0346 mov r3, r0 1237 00b6 FB75 strb r3, [r7, #23] 1238 .L72: 579:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 580:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP0_WRP0 */ 581:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 582:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP1_WRP1) 583:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((status == HAL_OK) && (WRP1_Data != 0xFFU)) 1239 .loc 1 583 9 1240 00b8 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1241 00ba 002B cmp r3, #0 1242 00bc 10D1 bne .L73 1243 .loc 1 583 29 discriminator 1 1244 00be 7B8A ldrh r3, [r7, #18] 1245 00c0 FF2B cmp r3, #255 1246 00c2 0DD0 beq .L73 584:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 585:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP1 &= WRP1_Data; 1247 .loc 1 585 18 1248 00c4 234B ldr r3, .L77+12 1249 00c6 5B89 ldrh r3, [r3, #10] @ movhi 1250 00c8 9AB2 uxth r2, r3 1251 00ca 2249 ldr r1, .L77+12 1252 00cc 7B8A ldrh r3, [r7, #18] @ movhi 1253 00ce 1340 ands r3, r3, r2 1254 00d0 9BB2 uxth r3, r3 1255 00d2 4B81 strh r3, [r1, #10] @ movhi 586:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 587:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 588:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1256 .loc 1 588 18 1257 00d4 4CF25030 movw r0, #50000 1258 00d8 FFF7FEFF bl FLASH_WaitForLastOperation 1259 00dc 0346 mov r3, r0 1260 00de FB75 strb r3, [r7, #23] 1261 .L73: 589:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 590:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP1_WRP1 */ 591:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 51 592:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP2_WRP2) 593:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((status == HAL_OK) && (WRP2_Data != 0xFFU)) 1262 .loc 1 593 9 1263 00e0 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1264 00e2 002B cmp r3, #0 1265 00e4 10D1 bne .L74 1266 .loc 1 593 29 discriminator 1 1267 00e6 3B8A ldrh r3, [r7, #16] 1268 00e8 FF2B cmp r3, #255 1269 00ea 0DD0 beq .L74 594:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 595:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP2 &= WRP2_Data; 1270 .loc 1 595 18 1271 00ec 194B ldr r3, .L77+12 1272 00ee 9B89 ldrh r3, [r3, #12] @ movhi 1273 00f0 9AB2 uxth r2, r3 1274 00f2 1849 ldr r1, .L77+12 1275 00f4 3B8A ldrh r3, [r7, #16] @ movhi 1276 00f6 1340 ands r3, r3, r2 1277 00f8 9BB2 uxth r3, r3 1278 00fa 8B81 strh r3, [r1, #12] @ movhi 596:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 597:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 598:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1279 .loc 1 598 18 1280 00fc 4CF25030 movw r0, #50000 1281 0100 FFF7FEFF bl FLASH_WaitForLastOperation 1282 0104 0346 mov r3, r0 1283 0106 FB75 strb r3, [r7, #23] 1284 .L74: 599:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 600:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP2_WRP2 */ 601:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 602:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP3_WRP3) 603:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((status == HAL_OK) && (WRP3_Data != 0xFFU)) 1285 .loc 1 603 9 1286 0108 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1287 010a 002B cmp r3, #0 1288 010c 10D1 bne .L75 1289 .loc 1 603 29 discriminator 1 1290 010e FB89 ldrh r3, [r7, #14] 1291 0110 FF2B cmp r3, #255 1292 0112 0DD0 beq .L75 604:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 605:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP3 &= WRP3_Data; 1293 .loc 1 605 18 1294 0114 0F4B ldr r3, .L77+12 1295 0116 DB89 ldrh r3, [r3, #14] @ movhi 1296 0118 9AB2 uxth r2, r3 1297 011a 0E49 ldr r1, .L77+12 1298 011c FB89 ldrh r3, [r7, #14] @ movhi 1299 011e 1340 ands r3, r3, r2 1300 0120 9BB2 uxth r3, r3 1301 0122 CB81 strh r3, [r1, #14] @ movhi 606:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 607:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 608:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 52 1302 .loc 1 608 18 1303 0124 4CF25030 movw r0, #50000 1304 0128 FFF7FEFF bl FLASH_WaitForLastOperation 1305 012c 0346 mov r3, r0 1306 012e FB75 strb r3, [r7, #23] 1307 .L75: 609:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 610:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP3_WRP3 */ 611:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 612:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* if the program operation is completed, disable the OPTPG Bit */ 613:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG); 1308 .loc 1 613 7 1309 0130 074B ldr r3, .L77+8 1310 0132 1B69 ldr r3, [r3, #16] 1311 0134 064A ldr r2, .L77+8 1312 0136 23F01003 bic r3, r3, #16 1313 013a 1361 str r3, [r2, #16] 1314 .L71: 614:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 615:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 616:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 617:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 1315 .loc 1 617 10 1316 013c FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 618:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1317 .loc 1 618 1 1318 013e 1846 mov r0, r3 1319 0140 1837 adds r7, r7, #24 1320 .LCFI38: 1321 .cfi_def_cfa_offset 8 1322 0142 BD46 mov sp, r7 1323 .LCFI39: 1324 .cfi_def_cfa_register 13 1325 @ sp needed 1326 0144 80BD pop {r7, pc} 1327 .L78: 1328 0146 00BF .align 2 1329 .L77: 1330 0148 00000000 .word .LC0 1331 014c 00000000 .word pFlash 1332 0150 00200240 .word 1073881088 1333 0154 00F8FF1F .word 536868864 1334 .cfi_endproc 1335 .LFE137: 1337 .section .text.FLASH_OB_DisableWRP,"ax",%progbits 1338 .align 1 1339 .syntax unified 1340 .thumb 1341 .thumb_func 1343 FLASH_OB_DisableWRP: 1344 .LFB138: 619:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 620:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 621:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Disable the write protection of the desired pages 622:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note An option byte erase is done automatically in this function. 623:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note When the memory read protection level is selected (RDP level = 1), 624:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * it is not possible to program or erase the flash page i if ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 53 625:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * debug features are connected or boot code is executed in RAM, even if nWRPi = 1 626:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 627:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param WriteProtectPage specifies the page(s) to be write unprotected. 628:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The value of this parameter depend on device used within the same series 629:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL status 630:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 631:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_DisableWRP(uint32_t WriteProtectPage) 632:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1345 .loc 1 632 1 1346 .cfi_startproc 1347 @ args = 0, pretend = 0, frame = 24 1348 @ frame_needed = 1, uses_anonymous_args = 0 1349 0000 80B5 push {r7, lr} 1350 .LCFI40: 1351 .cfi_def_cfa_offset 8 1352 .cfi_offset 7, -8 1353 .cfi_offset 14, -4 1354 0002 86B0 sub sp, sp, #24 1355 .LCFI41: 1356 .cfi_def_cfa_offset 32 1357 0004 00AF add r7, sp, #0 1358 .LCFI42: 1359 .cfi_def_cfa_register 7 1360 0006 7860 str r0, [r7, #4] 633:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1361 .loc 1 633 21 1362 0008 0023 movs r3, #0 1363 000a FB75 strb r3, [r7, #23] 634:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP0_Data = 0xFFFFU; 1364 .loc 1 634 12 1365 000c 4FF6FF73 movw r3, #65535 1366 0010 BB82 strh r3, [r7, #20] @ movhi 635:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP1_WRP1) 636:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP1_Data = 0xFFFFU; 1367 .loc 1 636 12 1368 0012 4FF6FF73 movw r3, #65535 1369 0016 7B82 strh r3, [r7, #18] @ movhi 637:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP1_WRP1 */ 638:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP2_WRP2) 639:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP2_Data = 0xFFFFU; 1370 .loc 1 639 12 1371 0018 4FF6FF73 movw r3, #65535 1372 001c 3B82 strh r3, [r7, #16] @ movhi 640:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP2_WRP2 */ 641:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP3_WRP3) 642:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint16_t WRP3_Data = 0xFFFFU; 1373 .loc 1 642 12 1374 001e 4FF6FF73 movw r3, #65535 1375 0022 FB81 strh r3, [r7, #14] @ movhi 643:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP3_WRP3 */ 644:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 645:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 646:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_WRP(WriteProtectPage)); 1376 .loc 1 646 3 1377 0024 7B68 ldr r3, [r7, #4] 1378 0026 002B cmp r3, #0 1379 0028 04D1 bne .L80 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 54 1380 .loc 1 646 3 is_stmt 0 discriminator 1 1381 002a 40F28621 movw r1, #646 1382 002e 3B48 ldr r0, .L87 1383 0030 FFF7FEFF bl assert_failed 1384 .L80: 647:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 648:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Get current write protected pages and the new pages to be unprotected ******/ 649:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WriteProtectPage = (FLASH_OB_GetWRP() | WriteProtectPage); 1385 .loc 1 649 23 is_stmt 1 1386 0034 FFF7FEFF bl FLASH_OB_GetWRP 1387 0038 0246 mov r2, r0 1388 .loc 1 649 20 1389 003a 7B68 ldr r3, [r7, #4] 1390 003c 1343 orrs r3, r3, r2 1391 003e 7B60 str r3, [r7, #4] 650:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 651:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES0TO15MASK) 652:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP0_Data = (uint16_t)(WriteProtectPage & OB_WRP_PAGES0TO15MASK); 1392 .loc 1 652 15 1393 0040 7B68 ldr r3, [r7, #4] 1394 0042 9BB2 uxth r3, r3 1395 .loc 1 652 13 1396 0044 DBB2 uxtb r3, r3 1397 0046 BB82 strh r3, [r7, #20] @ movhi 653:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES0TO31MASK */ 654:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 655:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES16TO31MASK) 656:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP1_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES16TO31MASK) >> 8U); 1398 .loc 1 656 70 1399 0048 7B68 ldr r3, [r7, #4] 1400 004a 1B0A lsrs r3, r3, #8 1401 .loc 1 656 15 1402 004c 9BB2 uxth r3, r3 1403 .loc 1 656 13 1404 004e DBB2 uxtb r3, r3 1405 0050 7B82 strh r3, [r7, #18] @ movhi 657:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES32TO63MASK */ 658:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 659:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES32TO47MASK) 660:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP2_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES32TO47MASK) >> 16U); 1406 .loc 1 660 70 1407 0052 7B68 ldr r3, [r7, #4] 1408 0054 1B0C lsrs r3, r3, #16 1409 .loc 1 660 15 1410 0056 9BB2 uxth r3, r3 1411 .loc 1 660 13 1412 0058 DBB2 uxtb r3, r3 1413 005a 3B82 strh r3, [r7, #16] @ movhi 661:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES32TO47MASK */ 662:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 663:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP_PAGES48TO127MASK) 664:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO127MASK) >> 24U); 1414 .loc 1 664 71 1415 005c 7B68 ldr r3, [r7, #4] 1416 005e 1B0E lsrs r3, r3, #24 1417 .loc 1 664 13 1418 0060 FB81 strh r3, [r7, #14] @ movhi ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 55 665:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #elif defined(OB_WRP_PAGES48TO255MASK) 666:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRP3_Data = (uint16_t)((WriteProtectPage & OB_WRP_PAGES48TO255MASK) >> 24U); 667:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP_PAGES48TO63MASK */ 668:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 669:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 670:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 671:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1419 .loc 1 671 12 1420 0062 4CF25030 movw r0, #50000 1421 0066 FFF7FEFF bl FLASH_WaitForLastOperation 1422 006a 0346 mov r3, r0 1423 006c FB75 strb r3, [r7, #23] 672:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 673:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 1424 .loc 1 673 5 1425 006e FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1426 0070 002B cmp r3, #0 1427 0072 4ED1 bne .L81 674:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 675:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 676:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1428 .loc 1 676 22 1429 0074 2A4B ldr r3, .L87+4 1430 0076 0022 movs r2, #0 1431 0078 DA61 str r2, [r3, #28] 677:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 678:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* To be able to write again option byte, need to perform a option byte erase */ 679:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = HAL_FLASHEx_OBErase(); 1432 .loc 1 679 14 1433 007a FFF7FEFF bl HAL_FLASHEx_OBErase 1434 007e 0346 mov r3, r0 1435 0080 FB75 strb r3, [r7, #23] 680:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (status == HAL_OK) 1436 .loc 1 680 8 1437 0082 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1438 0084 002B cmp r3, #0 1439 0086 44D1 bne .L81 681:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 682:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 1440 .loc 1 682 7 1441 0088 264B ldr r3, .L87+8 1442 008a 1B69 ldr r3, [r3, #16] 1443 008c 254A ldr r2, .L87+8 1444 008e 43F01003 orr r3, r3, #16 1445 0092 1361 str r3, [r2, #16] 683:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 684:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP0_WRP0) 685:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(WRP0_Data != 0xFFU) 1446 .loc 1 685 9 1447 0094 BB8A ldrh r3, [r7, #20] 1448 0096 FF2B cmp r3, #255 1449 0098 08D0 beq .L82 686:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 687:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP0 = WRP0_Data; 1450 .loc 1 687 11 1451 009a 234A ldr r2, .L87+12 1452 .loc 1 687 18 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 56 1453 009c BB8A ldrh r3, [r7, #20] @ movhi 1454 009e 1381 strh r3, [r2, #8] @ movhi 688:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 689:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 690:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1455 .loc 1 690 18 1456 00a0 4CF25030 movw r0, #50000 1457 00a4 FFF7FEFF bl FLASH_WaitForLastOperation 1458 00a8 0346 mov r3, r0 1459 00aa FB75 strb r3, [r7, #23] 1460 .L82: 691:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 692:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP0_WRP0 */ 693:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 694:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP1_WRP1) 695:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((status == HAL_OK) && (WRP1_Data != 0xFFU)) 1461 .loc 1 695 9 1462 00ac FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1463 00ae 002B cmp r3, #0 1464 00b0 0BD1 bne .L83 1465 .loc 1 695 29 discriminator 1 1466 00b2 7B8A ldrh r3, [r7, #18] 1467 00b4 FF2B cmp r3, #255 1468 00b6 08D0 beq .L83 696:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 697:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP1 = WRP1_Data; 1469 .loc 1 697 11 1470 00b8 1B4A ldr r2, .L87+12 1471 .loc 1 697 18 1472 00ba 7B8A ldrh r3, [r7, #18] @ movhi 1473 00bc 5381 strh r3, [r2, #10] @ movhi 698:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 699:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 700:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1474 .loc 1 700 18 1475 00be 4CF25030 movw r0, #50000 1476 00c2 FFF7FEFF bl FLASH_WaitForLastOperation 1477 00c6 0346 mov r3, r0 1478 00c8 FB75 strb r3, [r7, #23] 1479 .L83: 701:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 702:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP1_WRP1 */ 703:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 704:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP2_WRP2) 705:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((status == HAL_OK) && (WRP2_Data != 0xFFU)) 1480 .loc 1 705 9 1481 00ca FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1482 00cc 002B cmp r3, #0 1483 00ce 0BD1 bne .L84 1484 .loc 1 705 29 discriminator 1 1485 00d0 3B8A ldrh r3, [r7, #16] 1486 00d2 FF2B cmp r3, #255 1487 00d4 08D0 beq .L84 706:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 707:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP2 = WRP2_Data; 1488 .loc 1 707 11 1489 00d6 144A ldr r2, .L87+12 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 57 1490 .loc 1 707 18 1491 00d8 3B8A ldrh r3, [r7, #16] @ movhi 1492 00da 9381 strh r3, [r2, #12] @ movhi 708:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 709:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 710:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1493 .loc 1 710 18 1494 00dc 4CF25030 movw r0, #50000 1495 00e0 FFF7FEFF bl FLASH_WaitForLastOperation 1496 00e4 0346 mov r3, r0 1497 00e6 FB75 strb r3, [r7, #23] 1498 .L84: 711:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 712:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP2_WRP2 */ 713:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 714:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(OB_WRP3_WRP3) 715:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if((status == HAL_OK) && (WRP3_Data != 0xFFU)) 1499 .loc 1 715 9 1500 00e8 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 1501 00ea 002B cmp r3, #0 1502 00ec 0BD1 bne .L85 1503 .loc 1 715 29 discriminator 1 1504 00ee FB89 ldrh r3, [r7, #14] 1505 00f0 FF2B cmp r3, #255 1506 00f2 08D0 beq .L85 716:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 717:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->WRP3 = WRP3_Data; 1507 .loc 1 717 11 1508 00f4 0C4A ldr r2, .L87+12 1509 .loc 1 717 18 1510 00f6 FB89 ldrh r3, [r7, #14] @ movhi 1511 00f8 D381 strh r3, [r2, #14] @ movhi 718:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 719:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 720:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1512 .loc 1 720 18 1513 00fa 4CF25030 movw r0, #50000 1514 00fe FFF7FEFF bl FLASH_WaitForLastOperation 1515 0102 0346 mov r3, r0 1516 0104 FB75 strb r3, [r7, #23] 1517 .L85: 721:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 722:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* OB_WRP3_WRP3 */ 723:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 724:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* if the program operation is completed, disable the OPTPG Bit */ 725:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG); 1518 .loc 1 725 7 1519 0106 074B ldr r3, .L87+8 1520 0108 1B69 ldr r3, [r3, #16] 1521 010a 064A ldr r2, .L87+8 1522 010c 23F01003 bic r3, r3, #16 1523 0110 1361 str r3, [r2, #16] 1524 .L81: 726:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 727:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 728:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 1525 .loc 1 728 10 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 58 1526 0112 FB7D ldrb r3, [r7, #23] @ zero_extendqisi2 729:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1527 .loc 1 729 1 1528 0114 1846 mov r0, r3 1529 0116 1837 adds r7, r7, #24 1530 .LCFI43: 1531 .cfi_def_cfa_offset 8 1532 0118 BD46 mov sp, r7 1533 .LCFI44: 1534 .cfi_def_cfa_register 13 1535 @ sp needed 1536 011a 80BD pop {r7, pc} 1537 .L88: 1538 .align 2 1539 .L87: 1540 011c 00000000 .word .LC0 1541 0120 00000000 .word pFlash 1542 0124 00200240 .word 1073881088 1543 0128 00F8FF1F .word 536868864 1544 .cfi_endproc 1545 .LFE138: 1547 .section .text.FLASH_OB_RDP_LevelConfig,"ax",%progbits 1548 .align 1 1549 .syntax unified 1550 .thumb 1551 .thumb_func 1553 FLASH_OB_RDP_LevelConfig: 1554 .LFB139: 730:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 731:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 732:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Set the read protection level. 733:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param ReadProtectLevel specifies the read protection level. 734:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * This parameter can be one of the following values: 735:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_0 No protection 736:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory 737:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_2 Full chip protection 738:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note Warning: When enabling OB_RDP level 2 it's no more possible to go back to level 1 or 0 739:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL status 740:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 741:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_RDP_LevelConfig(uint8_t ReadProtectLevel) 742:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1555 .loc 1 742 1 1556 .cfi_startproc 1557 @ args = 0, pretend = 0, frame = 16 1558 @ frame_needed = 1, uses_anonymous_args = 0 1559 0000 80B5 push {r7, lr} 1560 .LCFI45: 1561 .cfi_def_cfa_offset 8 1562 .cfi_offset 7, -8 1563 .cfi_offset 14, -4 1564 0002 84B0 sub sp, sp, #16 1565 .LCFI46: 1566 .cfi_def_cfa_offset 24 1567 0004 00AF add r7, sp, #0 1568 .LCFI47: 1569 .cfi_def_cfa_register 7 1570 0006 0346 mov r3, r0 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 59 1571 0008 FB71 strb r3, [r7, #7] 743:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1572 .loc 1 743 21 1573 000a 0023 movs r3, #0 1574 000c FB73 strb r3, [r7, #15] 744:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 745:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 746:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_RDP_LEVEL(ReadProtectLevel)); 1575 .loc 1 746 3 1576 000e FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1577 0010 AA2B cmp r3, #170 1578 0012 07D0 beq .L90 1579 .loc 1 746 3 is_stmt 0 discriminator 1 1580 0014 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1581 0016 BB2B cmp r3, #187 1582 0018 04D0 beq .L90 1583 .loc 1 746 3 discriminator 2 1584 001a 40F2EA21 movw r1, #746 1585 001e 2248 ldr r0, .L93 1586 0020 FFF7FEFF bl assert_failed 1587 .L90: 747:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 748:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 749:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1588 .loc 1 749 12 is_stmt 1 1589 0024 4CF25030 movw r0, #50000 1590 0028 FFF7FEFF bl FLASH_WaitForLastOperation 1591 002c 0346 mov r3, r0 1592 002e FB73 strb r3, [r7, #15] 750:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 751:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 1593 .loc 1 751 5 1594 0030 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1595 0032 002B cmp r3, #0 1596 0034 33D1 bne .L91 752:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 753:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 754:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1597 .loc 1 754 22 1598 0036 1D4B ldr r3, .L93+4 1599 0038 0022 movs r2, #0 1600 003a DA61 str r2, [r3, #28] 755:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 756:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the previous operation is completed, proceed to erase the option bytes */ 757:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTER); 1601 .loc 1 757 5 1602 003c 1C4B ldr r3, .L93+8 1603 003e 1B69 ldr r3, [r3, #16] 1604 0040 1B4A ldr r2, .L93+8 1605 0042 43F02003 orr r3, r3, #32 1606 0046 1361 str r3, [r2, #16] 758:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_STRT); 1607 .loc 1 758 5 1608 0048 194B ldr r3, .L93+8 1609 004a 1B69 ldr r3, [r3, #16] 1610 004c 184A ldr r2, .L93+8 1611 004e 43F04003 orr r3, r3, #64 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 60 1612 0052 1361 str r3, [r2, #16] 759:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 760:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 761:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1613 .loc 1 761 14 1614 0054 4CF25030 movw r0, #50000 1615 0058 FFF7FEFF bl FLASH_WaitForLastOperation 1616 005c 0346 mov r3, r0 1617 005e FB73 strb r3, [r7, #15] 762:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 763:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the erase operation is completed, disable the OPTER Bit */ 764:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTER); 1618 .loc 1 764 5 1619 0060 134B ldr r3, .L93+8 1620 0062 1B69 ldr r3, [r3, #16] 1621 0064 124A ldr r2, .L93+8 1622 0066 23F02003 bic r3, r3, #32 1623 006a 1361 str r3, [r2, #16] 765:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 766:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 1624 .loc 1 766 7 1625 006c FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1626 006e 002B cmp r3, #0 1627 0070 15D1 bne .L91 767:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 768:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Enable the Option Bytes Programming operation */ 769:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 1628 .loc 1 769 7 1629 0072 0F4B ldr r3, .L93+8 1630 0074 1B69 ldr r3, [r3, #16] 1631 0076 0E4A ldr r2, .L93+8 1632 0078 43F01003 orr r3, r3, #16 1633 007c 1361 str r3, [r2, #16] 770:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 771:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRITE_REG(OB->RDP, ReadProtectLevel); 1634 .loc 1 771 7 1635 007e 0D4B ldr r3, .L93+12 1636 0080 FA79 ldrb r2, [r7, #7] @ zero_extendqisi2 1637 0082 92B2 uxth r2, r2 1638 0084 1A80 strh r2, [r3] @ movhi 772:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 773:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 774:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1639 .loc 1 774 16 1640 0086 4CF25030 movw r0, #50000 1641 008a FFF7FEFF bl FLASH_WaitForLastOperation 1642 008e 0346 mov r3, r0 1643 0090 FB73 strb r3, [r7, #15] 775:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 776:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* if the program operation is completed, disable the OPTPG Bit */ 777:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG); 1644 .loc 1 777 7 1645 0092 074B ldr r3, .L93+8 1646 0094 1B69 ldr r3, [r3, #16] 1647 0096 064A ldr r2, .L93+8 1648 0098 23F01003 bic r3, r3, #16 1649 009c 1361 str r3, [r2, #16] ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 61 1650 .L91: 778:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 779:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 780:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 781:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 1651 .loc 1 781 10 1652 009e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 782:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1653 .loc 1 782 1 1654 00a0 1846 mov r0, r3 1655 00a2 1037 adds r7, r7, #16 1656 .LCFI48: 1657 .cfi_def_cfa_offset 8 1658 00a4 BD46 mov sp, r7 1659 .LCFI49: 1660 .cfi_def_cfa_register 13 1661 @ sp needed 1662 00a6 80BD pop {r7, pc} 1663 .L94: 1664 .align 2 1665 .L93: 1666 00a8 00000000 .word .LC0 1667 00ac 00000000 .word pFlash 1668 00b0 00200240 .word 1073881088 1669 00b4 00F8FF1F .word 536868864 1670 .cfi_endproc 1671 .LFE139: 1673 .section .text.FLASH_OB_UserConfig,"ax",%progbits 1674 .align 1 1675 .syntax unified 1676 .thumb 1677 .thumb_func 1679 FLASH_OB_UserConfig: 1680 .LFB140: 783:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 784:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 785:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Program the FLASH User Option Byte. 786:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note Programming of the OB should be performed only after an erase (otherwise PGERR occurs) 787:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param UserConfig The FLASH User Option Bytes values: IWDG_SW(Bit0), RST_STOP(Bit1), RST_STDBY 788:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * VDDA_Analog_Monitoring(Bit5) and SRAM_Parity_Enable(Bit6). 789:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * And SDADC12_VDD_MONITOR(Bit7) for STM32F373 or STM32F378 . 790:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL status 791:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 792:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_UserConfig(uint8_t UserConfig) 793:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1681 .loc 1 793 1 1682 .cfi_startproc 1683 @ args = 0, pretend = 0, frame = 16 1684 @ frame_needed = 1, uses_anonymous_args = 0 1685 0000 80B5 push {r7, lr} 1686 .LCFI50: 1687 .cfi_def_cfa_offset 8 1688 .cfi_offset 7, -8 1689 .cfi_offset 14, -4 1690 0002 84B0 sub sp, sp, #16 1691 .LCFI51: 1692 .cfi_def_cfa_offset 24 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 62 1693 0004 00AF add r7, sp, #0 1694 .LCFI52: 1695 .cfi_def_cfa_register 7 1696 0006 0346 mov r3, r0 1697 0008 FB71 strb r3, [r7, #7] 794:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_OK; 1698 .loc 1 794 21 1699 000a 0023 movs r3, #0 1700 000c FB73 strb r3, [r7, #15] 795:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 796:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 797:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_IWDG_SOURCE((UserConfig&OB_IWDG_SW))); 1701 .loc 1 797 3 1702 000e FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1703 0010 03F00103 and r3, r3, #1 1704 0014 002B cmp r3, #0 1705 0016 09D1 bne .L96 1706 .loc 1 797 3 is_stmt 0 discriminator 1 1707 0018 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1708 001a 03F00103 and r3, r3, #1 1709 001e 002B cmp r3, #0 1710 0020 04D0 beq .L96 1711 .loc 1 797 3 discriminator 2 1712 0022 40F21D31 movw r1, #797 1713 0026 3C48 ldr r0, .L104 1714 0028 FFF7FEFF bl assert_failed 1715 .L96: 798:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_STOP_SOURCE((UserConfig&OB_STOP_NO_RST))); 1716 .loc 1 798 3 is_stmt 1 1717 002c FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1718 002e 03F00203 and r3, r3, #2 1719 0032 002B cmp r3, #0 1720 0034 09D1 bne .L97 1721 .loc 1 798 3 is_stmt 0 discriminator 1 1722 0036 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1723 0038 03F00203 and r3, r3, #2 1724 003c 002B cmp r3, #0 1725 003e 04D0 beq .L97 1726 .loc 1 798 3 discriminator 2 1727 0040 40F21E31 movw r1, #798 1728 0044 3448 ldr r0, .L104 1729 0046 FFF7FEFF bl assert_failed 1730 .L97: 799:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_STDBY_SOURCE((UserConfig&OB_STDBY_NO_RST))); 1731 .loc 1 799 3 is_stmt 1 1732 004a FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1733 004c 03F00403 and r3, r3, #4 1734 0050 002B cmp r3, #0 1735 0052 09D1 bne .L98 1736 .loc 1 799 3 is_stmt 0 discriminator 1 1737 0054 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1738 0056 03F00403 and r3, r3, #4 1739 005a 002B cmp r3, #0 1740 005c 04D0 beq .L98 1741 .loc 1 799 3 discriminator 2 1742 005e 40F21F31 movw r1, #799 1743 0062 2D48 ldr r0, .L104 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 63 1744 0064 FFF7FEFF bl assert_failed 1745 .L98: 800:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_BOOT1((UserConfig&OB_BOOT1_SET))); 1746 .loc 1 800 3 is_stmt 1 1747 0068 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1748 006a 03F01003 and r3, r3, #16 1749 006e 002B cmp r3, #0 1750 0070 09D0 beq .L99 1751 .loc 1 800 3 is_stmt 0 discriminator 1 1752 0072 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1753 0074 03F01003 and r3, r3, #16 1754 0078 002B cmp r3, #0 1755 007a 04D1 bne .L99 1756 .loc 1 800 3 discriminator 2 1757 007c 4FF44871 mov r1, #800 1758 0080 2548 ldr r0, .L104 1759 0082 FFF7FEFF bl assert_failed 1760 .L99: 801:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_VDDA_ANALOG((UserConfig&OB_VDDA_ANALOG_ON))); 1761 .loc 1 801 3 is_stmt 1 1762 0086 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1763 0088 03F02003 and r3, r3, #32 1764 008c 002B cmp r3, #0 1765 008e 09D1 bne .L100 1766 .loc 1 801 3 is_stmt 0 discriminator 1 1767 0090 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1768 0092 03F02003 and r3, r3, #32 1769 0096 002B cmp r3, #0 1770 0098 04D0 beq .L100 1771 .loc 1 801 3 discriminator 2 1772 009a 40F22131 movw r1, #801 1773 009e 1E48 ldr r0, .L104 1774 00a0 FFF7FEFF bl assert_failed 1775 .L100: 802:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_SRAM_PARITY((UserConfig&OB_SRAM_PARITY_RESET))); 1776 .loc 1 802 3 is_stmt 1 1777 00a4 FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1778 00a6 03F04003 and r3, r3, #64 1779 00aa 002B cmp r3, #0 1780 00ac 09D0 beq .L101 1781 .loc 1 802 3 is_stmt 0 discriminator 1 1782 00ae FB79 ldrb r3, [r7, #7] @ zero_extendqisi2 1783 00b0 03F04003 and r3, r3, #64 1784 00b4 002B cmp r3, #0 1785 00b6 04D1 bne .L101 1786 .loc 1 802 3 discriminator 2 1787 00b8 40F22231 movw r1, #802 1788 00bc 1648 ldr r0, .L104 1789 00be FFF7FEFF bl assert_failed 1790 .L101: 803:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(FLASH_OBR_SDADC12_VDD_MONITOR) 804:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_SDACD_VDD_MONITOR((UserConfig&OB_SDACD_VDD_MONITOR_SET))); 805:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* FLASH_OBR_SDADC12_VDD_MONITOR */ 806:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 807:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 808:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1791 .loc 1 808 12 is_stmt 1 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 64 1792 00c2 4CF25030 movw r0, #50000 1793 00c6 FFF7FEFF bl FLASH_WaitForLastOperation 1794 00ca 0346 mov r3, r0 1795 00cc FB73 strb r3, [r7, #15] 809:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 810:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 1796 .loc 1 810 5 1797 00ce FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1798 00d0 002B cmp r3, #0 1799 00d2 1BD1 bne .L102 811:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 812:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 813:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1800 .loc 1 813 22 1801 00d4 114B ldr r3, .L104+4 1802 00d6 0022 movs r2, #0 1803 00d8 DA61 str r2, [r3, #28] 814:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 815:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Enable the Option Bytes Programming operation */ 816:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 1804 .loc 1 816 5 1805 00da 114B ldr r3, .L104+8 1806 00dc 1B69 ldr r3, [r3, #16] 1807 00de 104A ldr r2, .L104+8 1808 00e0 43F01003 orr r3, r3, #16 1809 00e4 1361 str r3, [r2, #16] 817:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 818:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(FLASH_OBR_SDADC12_VDD_MONITOR) 819:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->USER = (UserConfig | 0x08U); 820:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #else 821:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** OB->USER = (UserConfig | 0x88U); 1810 .loc 1 821 14 1811 00e6 FB79 ldrb r3, [r7, #7] 1812 00e8 63F07703 orn r3, r3, #119 1813 00ec DAB2 uxtb r2, r3 1814 .loc 1 821 7 1815 00ee 0D4B ldr r3, .L104+12 1816 .loc 1 821 14 1817 00f0 92B2 uxth r2, r2 1818 00f2 5A80 strh r2, [r3, #2] @ movhi 822:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif 823:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 824:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 825:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1819 .loc 1 825 14 1820 00f4 4CF25030 movw r0, #50000 1821 00f8 FFF7FEFF bl FLASH_WaitForLastOperation 1822 00fc 0346 mov r3, r0 1823 00fe FB73 strb r3, [r7, #15] 826:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 827:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* if the program operation is completed, disable the OPTPG Bit */ 828:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG); 1824 .loc 1 828 5 1825 0100 074B ldr r3, .L104+8 1826 0102 1B69 ldr r3, [r3, #16] 1827 0104 064A ldr r2, .L104+8 1828 0106 23F01003 bic r3, r3, #16 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 65 1829 010a 1361 str r3, [r2, #16] 1830 .L102: 829:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 830:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 831:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 1831 .loc 1 831 10 1832 010c FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 832:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1833 .loc 1 832 1 1834 010e 1846 mov r0, r3 1835 0110 1037 adds r7, r7, #16 1836 .LCFI53: 1837 .cfi_def_cfa_offset 8 1838 0112 BD46 mov sp, r7 1839 .LCFI54: 1840 .cfi_def_cfa_register 13 1841 @ sp needed 1842 0114 80BD pop {r7, pc} 1843 .L105: 1844 0116 00BF .align 2 1845 .L104: 1846 0118 00000000 .word .LC0 1847 011c 00000000 .word pFlash 1848 0120 00200240 .word 1073881088 1849 0124 00F8FF1F .word 536868864 1850 .cfi_endproc 1851 .LFE140: 1853 .section .text.FLASH_OB_ProgramData,"ax",%progbits 1854 .align 1 1855 .syntax unified 1856 .thumb 1857 .thumb_func 1859 FLASH_OB_ProgramData: 1860 .LFB141: 833:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 834:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 835:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Programs a half word at a specified Option Byte Data address. 836:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @note The function @ref HAL_FLASH_Unlock() should be called before to unlock the FLASH interf 837:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_OB_Unlock() should be called before to unlock the options b 838:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The function @ref HAL_FLASH_OB_Launch() should be called after to force the reload of t 839:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * (system reset will occur) 840:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * Programming of the OB should be performed only after an erase (otherwise PGERR occurs) 841:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param Address specifies the address to be programmed. 842:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * This parameter can be 0x1FFFF804 or 0x1FFFF806. 843:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param Data specifies the data to be programmed. 844:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval HAL status 845:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 846:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static HAL_StatusTypeDef FLASH_OB_ProgramData(uint32_t Address, uint8_t Data) 847:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1861 .loc 1 847 1 1862 .cfi_startproc 1863 @ args = 0, pretend = 0, frame = 16 1864 @ frame_needed = 1, uses_anonymous_args = 0 1865 0000 80B5 push {r7, lr} 1866 .LCFI55: 1867 .cfi_def_cfa_offset 8 1868 .cfi_offset 7, -8 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 66 1869 .cfi_offset 14, -4 1870 0002 84B0 sub sp, sp, #16 1871 .LCFI56: 1872 .cfi_def_cfa_offset 24 1873 0004 00AF add r7, sp, #0 1874 .LCFI57: 1875 .cfi_def_cfa_register 7 1876 0006 7860 str r0, [r7, #4] 1877 0008 0B46 mov r3, r1 1878 000a FB70 strb r3, [r7, #3] 848:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** HAL_StatusTypeDef status = HAL_ERROR; 1879 .loc 1 848 21 1880 000c 0123 movs r3, #1 1881 000e FB73 strb r3, [r7, #15] 849:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 850:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Check the parameters */ 851:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** assert_param(IS_OB_DATA_ADDRESS(Address)); 1882 .loc 1 851 3 1883 0010 7B68 ldr r3, [r7, #4] 1884 0012 194A ldr r2, .L110 1885 0014 9342 cmp r3, r2 1886 0016 08D0 beq .L107 1887 .loc 1 851 3 is_stmt 0 discriminator 1 1888 0018 7B68 ldr r3, [r7, #4] 1889 001a 184A ldr r2, .L110+4 1890 001c 9342 cmp r3, r2 1891 001e 04D0 beq .L107 1892 .loc 1 851 3 discriminator 2 1893 0020 40F25331 movw r1, #851 1894 0024 1648 ldr r0, .L110+8 1895 0026 FFF7FEFF bl assert_failed 1896 .L107: 852:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 853:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 854:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1897 .loc 1 854 12 is_stmt 1 1898 002a 4CF25030 movw r0, #50000 1899 002e FFF7FEFF bl FLASH_WaitForLastOperation 1900 0032 0346 mov r3, r0 1901 0034 FB73 strb r3, [r7, #15] 855:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 856:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if(status == HAL_OK) 1902 .loc 1 856 5 1903 0036 FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 1904 0038 002B cmp r3, #0 1905 003a 18D1 bne .L108 857:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 858:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 859:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 1906 .loc 1 859 22 1907 003c 114B ldr r3, .L110+12 1908 003e 0022 movs r2, #0 1909 0040 DA61 str r2, [r3, #28] 860:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 861:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Enables the Option Bytes Programming operation */ 862:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_OPTPG); 1910 .loc 1 862 5 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 67 1911 0042 114B ldr r3, .L110+16 1912 0044 1B69 ldr r3, [r3, #16] 1913 0046 104A ldr r2, .L110+16 1914 0048 43F01003 orr r3, r3, #16 1915 004c 1361 str r3, [r2, #16] 863:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** *(__IO uint16_t*)Address = Data; 1916 .loc 1 863 6 1917 004e 7B68 ldr r3, [r7, #4] 1918 .loc 1 863 30 1919 0050 FA78 ldrb r2, [r7, #3] @ zero_extendqisi2 1920 0052 92B2 uxth r2, r2 1921 0054 1A80 strh r2, [r3] @ movhi 864:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 865:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Wait for last operation to be completed */ 866:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** status = FLASH_WaitForLastOperation((uint32_t)FLASH_TIMEOUT_VALUE); 1922 .loc 1 866 14 1923 0056 4CF25030 movw r0, #50000 1924 005a FFF7FEFF bl FLASH_WaitForLastOperation 1925 005e 0346 mov r3, r0 1926 0060 FB73 strb r3, [r7, #15] 867:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 868:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* If the program operation is completed, disable the OPTPG Bit */ 869:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** CLEAR_BIT(FLASH->CR, FLASH_CR_OPTPG); 1927 .loc 1 869 5 1928 0062 094B ldr r3, .L110+16 1929 0064 1B69 ldr r3, [r3, #16] 1930 0066 084A ldr r2, .L110+16 1931 0068 23F01003 bic r3, r3, #16 1932 006c 1361 str r3, [r2, #16] 1933 .L108: 870:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 871:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Return the Option Byte Data Program Status */ 872:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return status; 1934 .loc 1 872 10 1935 006e FB7B ldrb r3, [r7, #15] @ zero_extendqisi2 873:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1936 .loc 1 873 1 1937 0070 1846 mov r0, r3 1938 0072 1037 adds r7, r7, #16 1939 .LCFI58: 1940 .cfi_def_cfa_offset 8 1941 0074 BD46 mov sp, r7 1942 .LCFI59: 1943 .cfi_def_cfa_register 13 1944 @ sp needed 1945 0076 80BD pop {r7, pc} 1946 .L111: 1947 .align 2 1948 .L110: 1949 0078 04F8FF1F .word 536868868 1950 007c 06F8FF1F .word 536868870 1951 0080 00000000 .word .LC0 1952 0084 00000000 .word pFlash 1953 0088 00200240 .word 1073881088 1954 .cfi_endproc 1955 .LFE141: 1957 .section .text.FLASH_OB_GetWRP,"ax",%progbits ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 68 1958 .align 1 1959 .syntax unified 1960 .thumb 1961 .thumb_func 1963 FLASH_OB_GetWRP: 1964 .LFB142: 874:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 875:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 876:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Return the FLASH Write Protection Option Bytes value. 877:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval The FLASH Write Protection Option Bytes value 878:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 879:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetWRP(void) 880:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 1965 .loc 1 880 1 1966 .cfi_startproc 1967 @ args = 0, pretend = 0, frame = 0 1968 @ frame_needed = 1, uses_anonymous_args = 0 1969 @ link register save eliminated. 1970 0000 80B4 push {r7} 1971 .LCFI60: 1972 .cfi_def_cfa_offset 4 1973 .cfi_offset 7, -4 1974 0002 00AF add r7, sp, #0 1975 .LCFI61: 1976 .cfi_def_cfa_register 7 881:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Return the FLASH write protection Register value */ 882:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return (uint32_t)(READ_REG(FLASH->WRPR)); 1977 .loc 1 882 21 1978 0004 034B ldr r3, .L114 1979 .loc 1 882 10 1980 0006 1B6A ldr r3, [r3, #32] 883:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 1981 .loc 1 883 1 1982 0008 1846 mov r0, r3 1983 000a BD46 mov sp, r7 1984 .LCFI62: 1985 .cfi_def_cfa_register 13 1986 @ sp needed 1987 000c 5DF8047B ldr r7, [sp], #4 1988 .LCFI63: 1989 .cfi_restore 7 1990 .cfi_def_cfa_offset 0 1991 0010 7047 bx lr 1992 .L115: 1993 0012 00BF .align 2 1994 .L114: 1995 0014 00200240 .word 1073881088 1996 .cfi_endproc 1997 .LFE142: 1999 .section .text.FLASH_OB_GetRDP,"ax",%progbits 2000 .align 1 2001 .syntax unified 2002 .thumb 2003 .thumb_func 2005 FLASH_OB_GetRDP: 2006 .LFB143: 884:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 69 885:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 886:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Returns the FLASH Read Protection level. 887:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval FLASH RDP level 888:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * This parameter can be one of the following values: 889:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_0 No protection 890:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_1 Read protection of the memory 891:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @arg @ref OB_RDP_LEVEL_2 Full chip protection 892:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 893:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static uint32_t FLASH_OB_GetRDP(void) 894:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 2007 .loc 1 894 1 2008 .cfi_startproc 2009 @ args = 0, pretend = 0, frame = 8 2010 @ frame_needed = 1, uses_anonymous_args = 0 2011 @ link register save eliminated. 2012 0000 80B4 push {r7} 2013 .LCFI64: 2014 .cfi_def_cfa_offset 4 2015 .cfi_offset 7, -4 2016 0002 83B0 sub sp, sp, #12 2017 .LCFI65: 2018 .cfi_def_cfa_offset 16 2019 0004 00AF add r7, sp, #0 2020 .LCFI66: 2021 .cfi_def_cfa_register 7 895:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** uint32_t tmp_reg = 0U; 2022 .loc 1 895 12 2023 0006 0023 movs r3, #0 2024 0008 7B60 str r3, [r7, #4] 896:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 897:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Read RDP level bits */ 898:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(FLASH_OBR_RDPRT) 899:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** tmp_reg = READ_BIT(FLASH->OBR, FLASH_OBR_RDPRT); 2025 .loc 1 899 13 2026 000a 0B4B ldr r3, .L120 2027 000c DB69 ldr r3, [r3, #28] 2028 .loc 1 899 11 2029 000e 03F00603 and r3, r3, #6 2030 0012 7B60 str r3, [r7, #4] 900:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #elif defined(FLASH_OBR_LEVEL1_PROT) 901:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** tmp_reg = READ_BIT(FLASH->OBR, (FLASH_OBR_LEVEL1_PROT | FLASH_OBR_LEVEL2_PROT)); 902:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* FLASH_OBR_RDPRT */ 903:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 904:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #if defined(FLASH_OBR_RDPRT) 905:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (tmp_reg == FLASH_OBR_RDPRT_2) 2031 .loc 1 905 6 2032 0014 7B68 ldr r3, [r7, #4] 2033 0016 062B cmp r3, #6 2034 0018 01D1 bne .L117 906:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #elif defined(FLASH_OBR_LEVEL1_PROT) 907:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** if (tmp_reg == FLASH_OBR_LEVEL2_PROT) 908:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** #endif /* FLASH_OBR_RDPRT */ 909:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 910:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return OB_RDP_LEVEL_2; 2035 .loc 1 910 12 2036 001a CC23 movs r3, #204 2037 001c 05E0 b .L118 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 70 2038 .L117: 911:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 912:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** else if (tmp_reg == 0U) 2039 .loc 1 912 11 2040 001e 7B68 ldr r3, [r7, #4] 2041 0020 002B cmp r3, #0 2042 0022 01D1 bne .L119 913:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 914:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return OB_RDP_LEVEL_0; 2043 .loc 1 914 12 2044 0024 AA23 movs r3, #170 2045 0026 00E0 b .L118 2046 .L119: 915:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 916:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** else 917:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 918:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return OB_RDP_LEVEL_1; 2047 .loc 1 918 12 2048 0028 BB23 movs r3, #187 2049 .L118: 919:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 920:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 2050 .loc 1 920 1 2051 002a 1846 mov r0, r3 2052 002c 0C37 adds r7, r7, #12 2053 .LCFI67: 2054 .cfi_def_cfa_offset 4 2055 002e BD46 mov sp, r7 2056 .LCFI68: 2057 .cfi_def_cfa_register 13 2058 @ sp needed 2059 0030 5DF8047B ldr r7, [sp], #4 2060 .LCFI69: 2061 .cfi_restore 7 2062 .cfi_def_cfa_offset 0 2063 0034 7047 bx lr 2064 .L121: 2065 0036 00BF .align 2 2066 .L120: 2067 0038 00200240 .word 1073881088 2068 .cfi_endproc 2069 .LFE143: 2071 .section .text.FLASH_OB_GetUser,"ax",%progbits 2072 .align 1 2073 .syntax unified 2074 .thumb 2075 .thumb_func 2077 FLASH_OB_GetUser: 2078 .LFB144: 921:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 922:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 923:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Return the FLASH User Option Byte value. 924:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval The FLASH User Option Bytes values: IWDG_SW(Bit0), RST_STOP(Bit1), RST_STDBY(Bit2), nB 925:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * VDDA_Analog_Monitoring(Bit5) and SRAM_Parity_Enable(Bit6). 926:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * And SDADC12_VDD_MONITOR(Bit7) for STM32F373 or STM32F378 . 927:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 928:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** static uint8_t FLASH_OB_GetUser(void) ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 71 929:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 2079 .loc 1 929 1 2080 .cfi_startproc 2081 @ args = 0, pretend = 0, frame = 8 2082 @ frame_needed = 1, uses_anonymous_args = 0 2083 @ link register save eliminated. 2084 0000 80B4 push {r7} 2085 .LCFI70: 2086 .cfi_def_cfa_offset 4 2087 .cfi_offset 7, -4 2088 0002 83B0 sub sp, sp, #12 2089 .LCFI71: 2090 .cfi_def_cfa_offset 16 2091 0004 00AF add r7, sp, #0 2092 .LCFI72: 2093 .cfi_def_cfa_register 7 930:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Return the User Option Byte */ 931:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** return (uint8_t)((READ_REG(FLASH->OBR) & FLASH_OBR_USER) >> FLASH_POSITION_IWDGSW_BIT); 2094 .loc 1 931 21 2095 0006 0B4B ldr r3, .L125 2096 0008 DB69 ldr r3, [r3, #28] 2097 .loc 1 931 42 2098 000a 03F4EE43 and r3, r3, #30464 2099 000e 4FF48072 mov r2, #256 2100 0012 7A60 str r2, [r7, #4] 2101 .LBB12: 2102 .LBB13: 988:Drivers/CMSIS/Include/cmsis_gcc.h **** #else 2103 .loc 2 988 4 2104 0014 7A68 ldr r2, [r7, #4] 2105 .syntax unified 2106 @ 988 "Drivers/CMSIS/Include/cmsis_gcc.h" 1 2107 0016 92FAA2F2 rbit r2, r2 2108 @ 0 "" 2 2109 .thumb 2110 .syntax unified 2111 001a 3A60 str r2, [r7] 2112 .loc 2 1001 10 2113 001c 3A68 ldr r2, [r7] 2114 .LBE13: 2115 .LBE12: 2116 .loc 1 931 63 2117 001e B2FA82F2 clz r2, r2 2118 0022 D2B2 uxtb r2, r2 2119 .loc 1 931 60 2120 0024 D340 lsrs r3, r3, r2 2121 .loc 1 931 10 2122 0026 DBB2 uxtb r3, r3 932:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 2123 .loc 1 932 1 2124 0028 1846 mov r0, r3 2125 002a 0C37 adds r7, r7, #12 2126 .LCFI73: 2127 .cfi_def_cfa_offset 4 2128 002c BD46 mov sp, r7 2129 .LCFI74: 2130 .cfi_def_cfa_register 13 ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 72 2131 @ sp needed 2132 002e 5DF8047B ldr r7, [sp], #4 2133 .LCFI75: 2134 .cfi_restore 7 2135 .cfi_def_cfa_offset 0 2136 0032 7047 bx lr 2137 .L126: 2138 .align 2 2139 .L125: 2140 0034 00200240 .word 1073881088 2141 .cfi_endproc 2142 .LFE144: 2144 .section .text.FLASH_PageErase,"ax",%progbits 2145 .align 1 2146 .global FLASH_PageErase 2147 .syntax unified 2148 .thumb 2149 .thumb_func 2151 FLASH_PageErase: 2152 .LFB145: 933:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 934:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 935:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 936:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 937:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 938:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 939:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @} 940:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 941:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 942:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @addtogroup FLASH 943:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 944:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 945:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 946:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** @addtogroup FLASH_Private_Functions 947:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @{ 948:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 949:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 950:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /** 951:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @brief Erase the specified FLASH memory page 952:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @param PageAddress FLASH page to erase 953:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * The value of this parameter depend on device used within the same series 954:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * 955:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** * @retval None 956:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** */ 957:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** void FLASH_PageErase(uint32_t PageAddress) 958:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** { 2153 .loc 1 958 1 2154 .cfi_startproc 2155 @ args = 0, pretend = 0, frame = 8 2156 @ frame_needed = 1, uses_anonymous_args = 0 2157 @ link register save eliminated. 2158 0000 80B4 push {r7} 2159 .LCFI76: 2160 .cfi_def_cfa_offset 4 2161 .cfi_offset 7, -4 2162 0002 83B0 sub sp, sp, #12 2163 .LCFI77: ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 73 2164 .cfi_def_cfa_offset 16 2165 0004 00AF add r7, sp, #0 2166 .LCFI78: 2167 .cfi_def_cfa_register 7 2168 0006 7860 str r0, [r7, #4] 959:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Clean the error context */ 960:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** pFlash.ErrorCode = HAL_FLASH_ERROR_NONE; 2169 .loc 1 960 20 2170 0008 0B4B ldr r3, .L128 2171 000a 0022 movs r2, #0 2172 000c DA61 str r2, [r3, #28] 961:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** 962:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** /* Proceed to erase the page */ 963:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_PER); 2173 .loc 1 963 5 2174 000e 0B4B ldr r3, .L128+4 2175 0010 1B69 ldr r3, [r3, #16] 2176 0012 0A4A ldr r2, .L128+4 2177 0014 43F00203 orr r3, r3, #2 2178 0018 1361 str r3, [r2, #16] 964:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** WRITE_REG(FLASH->AR, PageAddress); 2179 .loc 1 964 5 2180 001a 084A ldr r2, .L128+4 2181 001c 7B68 ldr r3, [r7, #4] 2182 001e 5361 str r3, [r2, #20] 965:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** SET_BIT(FLASH->CR, FLASH_CR_STRT); 2183 .loc 1 965 5 2184 0020 064B ldr r3, .L128+4 2185 0022 1B69 ldr r3, [r3, #16] 2186 0024 054A ldr r2, .L128+4 2187 0026 43F04003 orr r3, r3, #64 2188 002a 1361 str r3, [r2, #16] 966:Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_flash_ex.c **** } 2189 .loc 1 966 1 2190 002c 00BF nop 2191 002e 0C37 adds r7, r7, #12 2192 .LCFI79: 2193 .cfi_def_cfa_offset 4 2194 0030 BD46 mov sp, r7 2195 .LCFI80: 2196 .cfi_def_cfa_register 13 2197 @ sp needed 2198 0032 5DF8047B ldr r7, [sp], #4 2199 .LCFI81: 2200 .cfi_restore 7 2201 .cfi_def_cfa_offset 0 2202 0036 7047 bx lr 2203 .L129: 2204 .align 2 2205 .L128: 2206 0038 00000000 .word pFlash 2207 003c 00200240 .word 1073881088 2208 .cfi_endproc 2209 .LFE145: 2211 .text 2212 .Letext0: 2213 .file 3 "d:\\arm-gcc\\arm-none-eabi\\include\\machine\\_default_types.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 74 2214 .file 4 "d:\\arm-gcc\\arm-none-eabi\\include\\sys\\_stdint.h" 2215 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" 2216 .file 6 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_def.h" 2217 .file 7 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_flash.h" 2218 .file 8 "Drivers/STM32F3xx_HAL_Driver/Inc/stm32f3xx_hal_flash_ex.h" ARM GAS C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s page 75 DEFINED SYMBOLS *ABS*:00000000 stm32f3xx_hal_flash_ex.c C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:20 .rodata:00000000 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:25 .text.HAL_FLASHEx_Erase:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:31 .text.HAL_FLASHEx_Erase:00000000 HAL_FLASHEx_Erase C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1060 .text.FLASH_MassErase:00000000 FLASH_MassErase C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2151 .text.FLASH_PageErase:00000000 FLASH_PageErase C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:304 .text.HAL_FLASHEx_Erase:0000019c $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:315 .text.HAL_FLASHEx_Erase_IT:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:321 .text.HAL_FLASHEx_Erase_IT:00000000 HAL_FLASHEx_Erase_IT C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:547 .text.HAL_FLASHEx_Erase_IT:00000148 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:558 .text.HAL_FLASHEx_OBErase:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:564 .text.HAL_FLASHEx_OBErase:00000000 HAL_FLASHEx_OBErase C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2005 .text.FLASH_OB_GetRDP:00000000 FLASH_OB_GetRDP C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1553 .text.FLASH_OB_RDP_LevelConfig:00000000 FLASH_OB_RDP_LevelConfig C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:654 .text.HAL_FLASHEx_OBErase:0000007c $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:660 .text.HAL_FLASHEx_OBProgram:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:666 .text.HAL_FLASHEx_OBProgram:00000000 HAL_FLASHEx_OBProgram C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1115 .text.FLASH_OB_EnableWRP:00000000 FLASH_OB_EnableWRP C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1343 .text.FLASH_OB_DisableWRP:00000000 FLASH_OB_DisableWRP C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1679 .text.FLASH_OB_UserConfig:00000000 FLASH_OB_UserConfig C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1859 .text.FLASH_OB_ProgramData:00000000 FLASH_OB_ProgramData C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:872 .text.HAL_FLASHEx_OBProgram:00000120 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:878 .text.HAL_FLASHEx_OBGetConfig:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:884 .text.HAL_FLASHEx_OBGetConfig:00000000 HAL_FLASHEx_OBGetConfig C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1963 .text.FLASH_OB_GetWRP:00000000 FLASH_OB_GetWRP C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2077 .text.FLASH_OB_GetUser:00000000 FLASH_OB_GetUser C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:940 .text.HAL_FLASHEx_OBGetUserData:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:946 .text.HAL_FLASHEx_OBGetUserData:00000000 HAL_FLASHEx_OBGetUserData C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1049 .text.HAL_FLASHEx_OBGetUserData:00000068 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1055 .text.FLASH_MassErase:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1104 .text.FLASH_MassErase:0000002c $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1110 .text.FLASH_OB_EnableWRP:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1330 .text.FLASH_OB_EnableWRP:00000148 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1338 .text.FLASH_OB_DisableWRP:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1540 .text.FLASH_OB_DisableWRP:0000011c $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1548 .text.FLASH_OB_RDP_LevelConfig:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1666 .text.FLASH_OB_RDP_LevelConfig:000000a8 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1674 .text.FLASH_OB_UserConfig:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1846 .text.FLASH_OB_UserConfig:00000118 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1854 .text.FLASH_OB_ProgramData:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1949 .text.FLASH_OB_ProgramData:00000078 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1958 .text.FLASH_OB_GetWRP:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:1995 .text.FLASH_OB_GetWRP:00000014 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2000 .text.FLASH_OB_GetRDP:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2067 .text.FLASH_OB_GetRDP:00000038 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2072 .text.FLASH_OB_GetUser:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2140 .text.FLASH_OB_GetUser:00000034 $d C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2145 .text.FLASH_PageErase:00000000 $t C:\Users\zl835\AppData\Local\Temp\ccATaoGR.s:2206 .text.FLASH_PageErase:00000038 $d UNDEFINED SYMBOLS assert_failed FLASH_WaitForLastOperation pFlash