ARM GAS /tmp/cc0EV5A6.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 "system_stm32f3xx.c" 16 .text 17 .Ltext0: 18 .cfi_sections .debug_frame 19 .file 1 "Core/Src/system_stm32f3xx.c" 20 .global SystemCoreClock 21 .section .data.SystemCoreClock,"aw" 22 .align 2 25 SystemCoreClock: 26 0000 00127A00 .word 8000000 27 .global AHBPrescTable 28 .section .rodata.AHBPrescTable,"a" 29 .align 2 32 AHBPrescTable: 33 0000 00000000 .ascii "\000\000\000\000\000\000\000\000\001\002\003\004\006" 33 00000000 33 01020304 33 06 34 000d 070809 .ascii "\007\010\011" 35 .global APBPrescTable 36 .section .rodata.APBPrescTable,"a" 37 .align 2 40 APBPrescTable: 41 0000 00000000 .ascii "\000\000\000\000\001\002\003\004" 41 01020304 42 .section .text.SystemInit,"ax",%progbits 43 .align 1 44 .global SystemInit 45 .syntax unified 46 .thumb 47 .thumb_func 49 SystemInit: 50 .LFB130: 1:Core/Src/system_stm32f3xx.c **** /** 2:Core/Src/system_stm32f3xx.c **** ****************************************************************************** 3:Core/Src/system_stm32f3xx.c **** * @file system_stm32f3xx.c 4:Core/Src/system_stm32f3xx.c **** * @author MCD Application Team 5:Core/Src/system_stm32f3xx.c **** * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. 6:Core/Src/system_stm32f3xx.c **** * 7:Core/Src/system_stm32f3xx.c **** * 1. This file provides two functions and one global variable to be called from 8:Core/Src/system_stm32f3xx.c **** * user application: 9:Core/Src/system_stm32f3xx.c **** * - SystemInit(): This function is called at startup just after reset and 10:Core/Src/system_stm32f3xx.c **** * before branch to main program. This call is made inside ARM GAS /tmp/cc0EV5A6.s page 2 11:Core/Src/system_stm32f3xx.c **** * the "startup_stm32f3xx.s" file. 12:Core/Src/system_stm32f3xx.c **** * 13:Core/Src/system_stm32f3xx.c **** * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used 14:Core/Src/system_stm32f3xx.c **** * by the user application to setup the SysTick 15:Core/Src/system_stm32f3xx.c **** * timer or configure other parameters. 16:Core/Src/system_stm32f3xx.c **** * 17:Core/Src/system_stm32f3xx.c **** * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must 18:Core/Src/system_stm32f3xx.c **** * be called whenever the core clock is changed 19:Core/Src/system_stm32f3xx.c **** * during program execution. 20:Core/Src/system_stm32f3xx.c **** * 21:Core/Src/system_stm32f3xx.c **** * 2. After each device reset the HSI (8 MHz) is used as system clock source. 22:Core/Src/system_stm32f3xx.c **** * Then SystemInit() function is called, in "startup_stm32f3xx.s" file, to 23:Core/Src/system_stm32f3xx.c **** * configure the system clock before to branch to main program. 24:Core/Src/system_stm32f3xx.c **** * 25:Core/Src/system_stm32f3xx.c **** * 3. This file configures the system clock as follows: 26:Core/Src/system_stm32f3xx.c **** *============================================================================= 27:Core/Src/system_stm32f3xx.c **** * Supported STM32F3xx device 28:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 29:Core/Src/system_stm32f3xx.c **** * System Clock source | HSI 30:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 31:Core/Src/system_stm32f3xx.c **** * SYSCLK(Hz) | 8000000 32:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 33:Core/Src/system_stm32f3xx.c **** * HCLK(Hz) | 8000000 34:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 35:Core/Src/system_stm32f3xx.c **** * AHB Prescaler | 1 36:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 37:Core/Src/system_stm32f3xx.c **** * APB2 Prescaler | 1 38:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 39:Core/Src/system_stm32f3xx.c **** * APB1 Prescaler | 1 40:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 41:Core/Src/system_stm32f3xx.c **** * USB Clock | DISABLE 42:Core/Src/system_stm32f3xx.c **** *----------------------------------------------------------------------------- 43:Core/Src/system_stm32f3xx.c **** *============================================================================= 44:Core/Src/system_stm32f3xx.c **** ****************************************************************************** 45:Core/Src/system_stm32f3xx.c **** * @attention 46:Core/Src/system_stm32f3xx.c **** * 47:Core/Src/system_stm32f3xx.c **** * Copyright (c) 2016 STMicroelectronics. 48:Core/Src/system_stm32f3xx.c **** * All rights reserved. 49:Core/Src/system_stm32f3xx.c **** * 50:Core/Src/system_stm32f3xx.c **** * This software is licensed under terms that can be found in the LICENSE file 51:Core/Src/system_stm32f3xx.c **** * in the root directory of this software component. 52:Core/Src/system_stm32f3xx.c **** * If no LICENSE file comes with this software, it is provided AS-IS. 53:Core/Src/system_stm32f3xx.c **** * 54:Core/Src/system_stm32f3xx.c **** ****************************************************************************** 55:Core/Src/system_stm32f3xx.c **** */ 56:Core/Src/system_stm32f3xx.c **** 57:Core/Src/system_stm32f3xx.c **** /** @addtogroup CMSIS 58:Core/Src/system_stm32f3xx.c **** * @{ 59:Core/Src/system_stm32f3xx.c **** */ 60:Core/Src/system_stm32f3xx.c **** 61:Core/Src/system_stm32f3xx.c **** /** @addtogroup stm32f3xx_system 62:Core/Src/system_stm32f3xx.c **** * @{ 63:Core/Src/system_stm32f3xx.c **** */ 64:Core/Src/system_stm32f3xx.c **** 65:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_Includes 66:Core/Src/system_stm32f3xx.c **** * @{ 67:Core/Src/system_stm32f3xx.c **** */ ARM GAS /tmp/cc0EV5A6.s page 3 68:Core/Src/system_stm32f3xx.c **** 69:Core/Src/system_stm32f3xx.c **** #include "stm32f3xx.h" 70:Core/Src/system_stm32f3xx.c **** 71:Core/Src/system_stm32f3xx.c **** /** 72:Core/Src/system_stm32f3xx.c **** * @} 73:Core/Src/system_stm32f3xx.c **** */ 74:Core/Src/system_stm32f3xx.c **** 75:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_TypesDefinitions 76:Core/Src/system_stm32f3xx.c **** * @{ 77:Core/Src/system_stm32f3xx.c **** */ 78:Core/Src/system_stm32f3xx.c **** 79:Core/Src/system_stm32f3xx.c **** /** 80:Core/Src/system_stm32f3xx.c **** * @} 81:Core/Src/system_stm32f3xx.c **** */ 82:Core/Src/system_stm32f3xx.c **** 83:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_Defines 84:Core/Src/system_stm32f3xx.c **** * @{ 85:Core/Src/system_stm32f3xx.c **** */ 86:Core/Src/system_stm32f3xx.c **** #if !defined (HSE_VALUE) 87:Core/Src/system_stm32f3xx.c **** #define HSE_VALUE ((uint32_t)8000000) /*!< Default value of the External oscillator in Hz. 88:Core/Src/system_stm32f3xx.c **** This value can be provided and adapted by the user 89:Core/Src/system_stm32f3xx.c **** #endif /* HSE_VALUE */ 90:Core/Src/system_stm32f3xx.c **** 91:Core/Src/system_stm32f3xx.c **** #if !defined (HSI_VALUE) 92:Core/Src/system_stm32f3xx.c **** #define HSI_VALUE ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz. 93:Core/Src/system_stm32f3xx.c **** This value can be provided and adapted by the user 94:Core/Src/system_stm32f3xx.c **** #endif /* HSI_VALUE */ 95:Core/Src/system_stm32f3xx.c **** 96:Core/Src/system_stm32f3xx.c **** /* Note: Following vector table addresses must be defined in line with linker 97:Core/Src/system_stm32f3xx.c **** configuration. */ 98:Core/Src/system_stm32f3xx.c **** /*!< Uncomment the following line if you need to relocate the vector table 99:Core/Src/system_stm32f3xx.c **** anywhere in Flash or Sram, else the vector table is kept at the automatic 100:Core/Src/system_stm32f3xx.c **** remap of boot address selected */ 101:Core/Src/system_stm32f3xx.c **** /* #define USER_VECT_TAB_ADDRESS */ 102:Core/Src/system_stm32f3xx.c **** 103:Core/Src/system_stm32f3xx.c **** #if defined(USER_VECT_TAB_ADDRESS) 104:Core/Src/system_stm32f3xx.c **** /*!< Uncomment the following line if you need to relocate your vector Table 105:Core/Src/system_stm32f3xx.c **** in Sram else user remap will be done in Flash. */ 106:Core/Src/system_stm32f3xx.c **** /* #define VECT_TAB_SRAM */ 107:Core/Src/system_stm32f3xx.c **** #if defined(VECT_TAB_SRAM) 108:Core/Src/system_stm32f3xx.c **** #define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. 109:Core/Src/system_stm32f3xx.c **** This value must be a multiple of 0x200. */ 110:Core/Src/system_stm32f3xx.c **** #define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. 111:Core/Src/system_stm32f3xx.c **** This value must be a multiple of 0x200. */ 112:Core/Src/system_stm32f3xx.c **** #else 113:Core/Src/system_stm32f3xx.c **** #define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. 114:Core/Src/system_stm32f3xx.c **** This value must be a multiple of 0x200. */ 115:Core/Src/system_stm32f3xx.c **** #define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. 116:Core/Src/system_stm32f3xx.c **** This value must be a multiple of 0x200. */ 117:Core/Src/system_stm32f3xx.c **** #endif /* VECT_TAB_SRAM */ 118:Core/Src/system_stm32f3xx.c **** #endif /* USER_VECT_TAB_ADDRESS */ 119:Core/Src/system_stm32f3xx.c **** 120:Core/Src/system_stm32f3xx.c **** /******************************************************************************/ 121:Core/Src/system_stm32f3xx.c **** /** 122:Core/Src/system_stm32f3xx.c **** * @} 123:Core/Src/system_stm32f3xx.c **** */ 124:Core/Src/system_stm32f3xx.c **** ARM GAS /tmp/cc0EV5A6.s page 4 125:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_Macros 126:Core/Src/system_stm32f3xx.c **** * @{ 127:Core/Src/system_stm32f3xx.c **** */ 128:Core/Src/system_stm32f3xx.c **** 129:Core/Src/system_stm32f3xx.c **** /** 130:Core/Src/system_stm32f3xx.c **** * @} 131:Core/Src/system_stm32f3xx.c **** */ 132:Core/Src/system_stm32f3xx.c **** 133:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_Variables 134:Core/Src/system_stm32f3xx.c **** * @{ 135:Core/Src/system_stm32f3xx.c **** */ 136:Core/Src/system_stm32f3xx.c **** /* This variable is updated in three ways: 137:Core/Src/system_stm32f3xx.c **** 1) by calling CMSIS function SystemCoreClockUpdate() 138:Core/Src/system_stm32f3xx.c **** 2) by calling HAL API function HAL_RCC_GetHCLKFreq() 139:Core/Src/system_stm32f3xx.c **** 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency 140:Core/Src/system_stm32f3xx.c **** Note: If you use this function to configure the system clock there is no need to 141:Core/Src/system_stm32f3xx.c **** call the 2 first functions listed above, since SystemCoreClock variable is 142:Core/Src/system_stm32f3xx.c **** updated automatically. 143:Core/Src/system_stm32f3xx.c **** */ 144:Core/Src/system_stm32f3xx.c **** uint32_t SystemCoreClock = 8000000; 145:Core/Src/system_stm32f3xx.c **** 146:Core/Src/system_stm32f3xx.c **** const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; 147:Core/Src/system_stm32f3xx.c **** const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; 148:Core/Src/system_stm32f3xx.c **** 149:Core/Src/system_stm32f3xx.c **** /** 150:Core/Src/system_stm32f3xx.c **** * @} 151:Core/Src/system_stm32f3xx.c **** */ 152:Core/Src/system_stm32f3xx.c **** 153:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_FunctionPrototypes 154:Core/Src/system_stm32f3xx.c **** * @{ 155:Core/Src/system_stm32f3xx.c **** */ 156:Core/Src/system_stm32f3xx.c **** 157:Core/Src/system_stm32f3xx.c **** /** 158:Core/Src/system_stm32f3xx.c **** * @} 159:Core/Src/system_stm32f3xx.c **** */ 160:Core/Src/system_stm32f3xx.c **** 161:Core/Src/system_stm32f3xx.c **** /** @addtogroup STM32F3xx_System_Private_Functions 162:Core/Src/system_stm32f3xx.c **** * @{ 163:Core/Src/system_stm32f3xx.c **** */ 164:Core/Src/system_stm32f3xx.c **** 165:Core/Src/system_stm32f3xx.c **** /** 166:Core/Src/system_stm32f3xx.c **** * @brief Setup the microcontroller system 167:Core/Src/system_stm32f3xx.c **** * @param None 168:Core/Src/system_stm32f3xx.c **** * @retval None 169:Core/Src/system_stm32f3xx.c **** */ 170:Core/Src/system_stm32f3xx.c **** void SystemInit(void) 171:Core/Src/system_stm32f3xx.c **** { 51 .loc 1 171 1 52 .cfi_startproc 53 @ args = 0, pretend = 0, frame = 0 54 @ frame_needed = 1, uses_anonymous_args = 0 55 @ link register save eliminated. 56 0000 80B4 push {r7} 57 .cfi_def_cfa_offset 4 58 .cfi_offset 7, -4 59 0002 00AF add r7, sp, #0 60 .cfi_def_cfa_register 7 ARM GAS /tmp/cc0EV5A6.s page 5 172:Core/Src/system_stm32f3xx.c **** /* FPU settings --------------------------------------------------------------*/ 173:Core/Src/system_stm32f3xx.c **** #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) 174:Core/Src/system_stm32f3xx.c **** SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ 61 .loc 1 174 6 62 0004 064B ldr r3, .L2 63 0006 D3F88830 ldr r3, [r3, #136] 64 000a 054A ldr r2, .L2 65 .loc 1 174 14 66 000c 43F47003 orr r3, r3, #15728640 67 0010 C2F88830 str r3, [r2, #136] 175:Core/Src/system_stm32f3xx.c **** #endif 176:Core/Src/system_stm32f3xx.c **** 177:Core/Src/system_stm32f3xx.c **** /* Configure the Vector Table location -------------------------------------*/ 178:Core/Src/system_stm32f3xx.c **** #if defined(USER_VECT_TAB_ADDRESS) 179:Core/Src/system_stm32f3xx.c **** SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM 180:Core/Src/system_stm32f3xx.c **** #endif /* USER_VECT_TAB_ADDRESS */ 181:Core/Src/system_stm32f3xx.c **** } 68 .loc 1 181 1 69 0014 00BF nop 70 0016 BD46 mov sp, r7 71 .cfi_def_cfa_register 13 72 @ sp needed 73 0018 5DF8047B ldr r7, [sp], #4 74 .cfi_restore 7 75 .cfi_def_cfa_offset 0 76 001c 7047 bx lr 77 .L3: 78 001e 00BF .align 2 79 .L2: 80 0020 00ED00E0 .word -536810240 81 .cfi_endproc 82 .LFE130: 84 .section .text.SystemCoreClockUpdate,"ax",%progbits 85 .align 1 86 .global SystemCoreClockUpdate 87 .syntax unified 88 .thumb 89 .thumb_func 91 SystemCoreClockUpdate: 92 .LFB131: 182:Core/Src/system_stm32f3xx.c **** 183:Core/Src/system_stm32f3xx.c **** /** 184:Core/Src/system_stm32f3xx.c **** * @brief Update SystemCoreClock variable according to Clock Register Values. 185:Core/Src/system_stm32f3xx.c **** * The SystemCoreClock variable contains the core clock (HCLK), it can 186:Core/Src/system_stm32f3xx.c **** * be used by the user application to setup the SysTick timer or configure 187:Core/Src/system_stm32f3xx.c **** * other parameters. 188:Core/Src/system_stm32f3xx.c **** * 189:Core/Src/system_stm32f3xx.c **** * @note Each time the core clock (HCLK) changes, this function must be called 190:Core/Src/system_stm32f3xx.c **** * to update SystemCoreClock variable value. Otherwise, any configuration 191:Core/Src/system_stm32f3xx.c **** * based on this variable will be incorrect. 192:Core/Src/system_stm32f3xx.c **** * 193:Core/Src/system_stm32f3xx.c **** * @note - The system frequency computed by this function is not the real 194:Core/Src/system_stm32f3xx.c **** * frequency in the chip. It is calculated based on the predefined 195:Core/Src/system_stm32f3xx.c **** * constant and the selected clock source: 196:Core/Src/system_stm32f3xx.c **** * 197:Core/Src/system_stm32f3xx.c **** * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) 198:Core/Src/system_stm32f3xx.c **** * ARM GAS /tmp/cc0EV5A6.s page 6 199:Core/Src/system_stm32f3xx.c **** * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) 200:Core/Src/system_stm32f3xx.c **** * 201:Core/Src/system_stm32f3xx.c **** * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) 202:Core/Src/system_stm32f3xx.c **** * or HSI_VALUE(*) multiplied/divided by the PLL factors. 203:Core/Src/system_stm32f3xx.c **** * 204:Core/Src/system_stm32f3xx.c **** * (*) HSI_VALUE is a constant defined in stm32f3xx_hal.h file (default value 205:Core/Src/system_stm32f3xx.c **** * 8 MHz) but the real value may vary depending on the variations 206:Core/Src/system_stm32f3xx.c **** * in voltage and temperature. 207:Core/Src/system_stm32f3xx.c **** * 208:Core/Src/system_stm32f3xx.c **** * (**) HSE_VALUE is a constant defined in stm32f3xx_hal.h file (default value 209:Core/Src/system_stm32f3xx.c **** * 8 MHz), user has to ensure that HSE_VALUE is same as the real 210:Core/Src/system_stm32f3xx.c **** * frequency of the crystal used. Otherwise, this function may 211:Core/Src/system_stm32f3xx.c **** * have wrong result. 212:Core/Src/system_stm32f3xx.c **** * 213:Core/Src/system_stm32f3xx.c **** * - The result of this function could be not correct when using fractional 214:Core/Src/system_stm32f3xx.c **** * value for HSE crystal. 215:Core/Src/system_stm32f3xx.c **** * 216:Core/Src/system_stm32f3xx.c **** * @param None 217:Core/Src/system_stm32f3xx.c **** * @retval None 218:Core/Src/system_stm32f3xx.c **** */ 219:Core/Src/system_stm32f3xx.c **** void SystemCoreClockUpdate (void) 220:Core/Src/system_stm32f3xx.c **** { 93 .loc 1 220 1 94 .cfi_startproc 95 @ args = 0, pretend = 0, frame = 16 96 @ frame_needed = 1, uses_anonymous_args = 0 97 @ link register save eliminated. 98 0000 80B4 push {r7} 99 .cfi_def_cfa_offset 4 100 .cfi_offset 7, -4 101 0002 85B0 sub sp, sp, #20 102 .cfi_def_cfa_offset 24 103 0004 00AF add r7, sp, #0 104 .cfi_def_cfa_register 7 221:Core/Src/system_stm32f3xx.c **** uint32_t tmp = 0, pllmull = 0, pllsource = 0, predivfactor = 0; 105 .loc 1 221 12 106 0006 0023 movs r3, #0 107 0008 FB60 str r3, [r7, #12] 108 .loc 1 221 21 109 000a 0023 movs r3, #0 110 000c BB60 str r3, [r7, #8] 111 .loc 1 221 34 112 000e 0023 movs r3, #0 113 0010 7B60 str r3, [r7, #4] 114 .loc 1 221 49 115 0012 0023 movs r3, #0 116 0014 3B60 str r3, [r7] 222:Core/Src/system_stm32f3xx.c **** 223:Core/Src/system_stm32f3xx.c **** /* Get SYSCLK source -------------------------------------------------------*/ 224:Core/Src/system_stm32f3xx.c **** tmp = RCC->CFGR & RCC_CFGR_SWS; 117 .loc 1 224 12 118 0016 2D4B ldr r3, .L12 119 0018 5B68 ldr r3, [r3, #4] 120 .loc 1 224 7 121 001a 03F00C03 and r3, r3, #12 122 001e FB60 str r3, [r7, #12] 225:Core/Src/system_stm32f3xx.c **** ARM GAS /tmp/cc0EV5A6.s page 7 226:Core/Src/system_stm32f3xx.c **** switch (tmp) 123 .loc 1 226 3 124 0020 FB68 ldr r3, [r7, #12] 125 0022 082B cmp r3, #8 126 0024 11D0 beq .L5 127 0026 FB68 ldr r3, [r7, #12] 128 0028 082B cmp r3, #8 129 002a 36D8 bhi .L6 130 002c FB68 ldr r3, [r7, #12] 131 002e 002B cmp r3, #0 132 0030 03D0 beq .L7 133 0032 FB68 ldr r3, [r7, #12] 134 0034 042B cmp r3, #4 135 0036 04D0 beq .L8 136 0038 2FE0 b .L6 137 .L7: 227:Core/Src/system_stm32f3xx.c **** { 228:Core/Src/system_stm32f3xx.c **** case RCC_CFGR_SWS_HSI: /* HSI used as system clock */ 229:Core/Src/system_stm32f3xx.c **** SystemCoreClock = HSI_VALUE; 138 .loc 1 229 23 139 003a 254B ldr r3, .L12+4 140 003c 254A ldr r2, .L12+8 141 003e 1A60 str r2, [r3] 230:Core/Src/system_stm32f3xx.c **** break; 142 .loc 1 230 7 143 0040 2FE0 b .L9 144 .L8: 231:Core/Src/system_stm32f3xx.c **** case RCC_CFGR_SWS_HSE: /* HSE used as system clock */ 232:Core/Src/system_stm32f3xx.c **** SystemCoreClock = HSE_VALUE; 145 .loc 1 232 23 146 0042 234B ldr r3, .L12+4 147 0044 244A ldr r2, .L12+12 148 0046 1A60 str r2, [r3] 233:Core/Src/system_stm32f3xx.c **** break; 149 .loc 1 233 7 150 0048 2BE0 b .L9 151 .L5: 234:Core/Src/system_stm32f3xx.c **** case RCC_CFGR_SWS_PLL: /* PLL used as system clock */ 235:Core/Src/system_stm32f3xx.c **** /* Get PLL clock source and multiplication factor ----------------------*/ 236:Core/Src/system_stm32f3xx.c **** pllmull = RCC->CFGR & RCC_CFGR_PLLMUL; 152 .loc 1 236 20 153 004a 204B ldr r3, .L12 154 004c 5B68 ldr r3, [r3, #4] 155 .loc 1 236 15 156 004e 03F47013 and r3, r3, #3932160 157 0052 BB60 str r3, [r7, #8] 237:Core/Src/system_stm32f3xx.c **** pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; 158 .loc 1 237 22 159 0054 1D4B ldr r3, .L12 160 0056 5B68 ldr r3, [r3, #4] 161 .loc 1 237 17 162 0058 03F48033 and r3, r3, #65536 163 005c 7B60 str r3, [r7, #4] 238:Core/Src/system_stm32f3xx.c **** pllmull = ( pllmull >> 18) + 2; 164 .loc 1 238 27 165 005e BB68 ldr r3, [r7, #8] 166 0060 9B0C lsrs r3, r3, #18 ARM GAS /tmp/cc0EV5A6.s page 8 167 .loc 1 238 15 168 0062 0233 adds r3, r3, #2 169 0064 BB60 str r3, [r7, #8] 239:Core/Src/system_stm32f3xx.c **** 240:Core/Src/system_stm32f3xx.c **** #if defined (STM32F302xE) || defined (STM32F303xE) || defined (STM32F398xx) 241:Core/Src/system_stm32f3xx.c **** predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; 242:Core/Src/system_stm32f3xx.c **** if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV) 243:Core/Src/system_stm32f3xx.c **** { 244:Core/Src/system_stm32f3xx.c **** /* HSE oscillator clock selected as PREDIV1 clock entry */ 245:Core/Src/system_stm32f3xx.c **** SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull; 246:Core/Src/system_stm32f3xx.c **** } 247:Core/Src/system_stm32f3xx.c **** else 248:Core/Src/system_stm32f3xx.c **** { 249:Core/Src/system_stm32f3xx.c **** /* HSI oscillator clock selected as PREDIV1 clock entry */ 250:Core/Src/system_stm32f3xx.c **** SystemCoreClock = (HSI_VALUE / predivfactor) * pllmull; 251:Core/Src/system_stm32f3xx.c **** } 252:Core/Src/system_stm32f3xx.c **** #else 253:Core/Src/system_stm32f3xx.c **** if (pllsource == RCC_CFGR_PLLSRC_HSI_DIV2) 170 .loc 1 253 10 171 0066 7B68 ldr r3, [r7, #4] 172 0068 002B cmp r3, #0 173 006a 06D1 bne .L10 254:Core/Src/system_stm32f3xx.c **** { 255:Core/Src/system_stm32f3xx.c **** /* HSI oscillator clock divided by 2 selected as PLL clock entry */ 256:Core/Src/system_stm32f3xx.c **** SystemCoreClock = (HSI_VALUE >> 1) * pllmull; 174 .loc 1 256 44 175 006c BB68 ldr r3, [r7, #8] 176 006e 1B4A ldr r2, .L12+16 177 0070 02FB03F3 mul r3, r2, r3 178 .loc 1 256 25 179 0074 164A ldr r2, .L12+4 180 0076 1360 str r3, [r2] 257:Core/Src/system_stm32f3xx.c **** } 258:Core/Src/system_stm32f3xx.c **** else 259:Core/Src/system_stm32f3xx.c **** { 260:Core/Src/system_stm32f3xx.c **** predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1; 261:Core/Src/system_stm32f3xx.c **** /* HSE oscillator clock selected as PREDIV1 clock entry */ 262:Core/Src/system_stm32f3xx.c **** SystemCoreClock = (HSE_VALUE / predivfactor) * pllmull; 263:Core/Src/system_stm32f3xx.c **** } 264:Core/Src/system_stm32f3xx.c **** #endif /* STM32F302xE || STM32F303xE || STM32F398xx */ 265:Core/Src/system_stm32f3xx.c **** break; 181 .loc 1 265 7 182 0078 13E0 b .L9 183 .L10: 260:Core/Src/system_stm32f3xx.c **** /* HSE oscillator clock selected as PREDIV1 clock entry */ 184 .loc 1 260 28 185 007a 144B ldr r3, .L12 186 007c DB6A ldr r3, [r3, #44] 260:Core/Src/system_stm32f3xx.c **** /* HSE oscillator clock selected as PREDIV1 clock entry */ 187 .loc 1 260 36 188 007e 03F00F03 and r3, r3, #15 260:Core/Src/system_stm32f3xx.c **** /* HSE oscillator clock selected as PREDIV1 clock entry */ 189 .loc 1 260 22 190 0082 0133 adds r3, r3, #1 191 0084 3B60 str r3, [r7] 262:Core/Src/system_stm32f3xx.c **** } 192 .loc 1 262 38 ARM GAS /tmp/cc0EV5A6.s page 9 193 0086 144A ldr r2, .L12+12 194 0088 3B68 ldr r3, [r7] 195 008a B2FBF3F3 udiv r3, r2, r3 262:Core/Src/system_stm32f3xx.c **** } 196 .loc 1 262 54 197 008e BA68 ldr r2, [r7, #8] 198 0090 02FB03F3 mul r3, r2, r3 262:Core/Src/system_stm32f3xx.c **** } 199 .loc 1 262 25 200 0094 0E4A ldr r2, .L12+4 201 0096 1360 str r3, [r2] 202 .loc 1 265 7 203 0098 03E0 b .L9 204 .L6: 266:Core/Src/system_stm32f3xx.c **** default: /* HSI used as system clock */ 267:Core/Src/system_stm32f3xx.c **** SystemCoreClock = HSI_VALUE; 205 .loc 1 267 23 206 009a 0D4B ldr r3, .L12+4 207 009c 0D4A ldr r2, .L12+8 208 009e 1A60 str r2, [r3] 268:Core/Src/system_stm32f3xx.c **** break; 209 .loc 1 268 7 210 00a0 00BF nop 211 .L9: 269:Core/Src/system_stm32f3xx.c **** } 270:Core/Src/system_stm32f3xx.c **** /* Compute HCLK clock frequency ----------------*/ 271:Core/Src/system_stm32f3xx.c **** /* Get HCLK prescaler */ 272:Core/Src/system_stm32f3xx.c **** tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; 212 .loc 1 272 28 213 00a2 0A4B ldr r3, .L12 214 00a4 5B68 ldr r3, [r3, #4] 215 .loc 1 272 52 216 00a6 1B09 lsrs r3, r3, #4 217 00a8 03F00F03 and r3, r3, #15 218 .loc 1 272 22 219 00ac 0C4A ldr r2, .L12+20 220 00ae D35C ldrb r3, [r2, r3] @ zero_extendqisi2 221 .loc 1 272 7 222 00b0 FB60 str r3, [r7, #12] 273:Core/Src/system_stm32f3xx.c **** /* HCLK clock frequency */ 274:Core/Src/system_stm32f3xx.c **** SystemCoreClock >>= tmp; 223 .loc 1 274 19 224 00b2 074B ldr r3, .L12+4 225 00b4 1A68 ldr r2, [r3] 226 00b6 FB68 ldr r3, [r7, #12] 227 00b8 22FA03F3 lsr r3, r2, r3 228 00bc 044A ldr r2, .L12+4 229 00be 1360 str r3, [r2] 275:Core/Src/system_stm32f3xx.c **** } 230 .loc 1 275 1 231 00c0 00BF nop 232 00c2 1437 adds r7, r7, #20 233 .cfi_def_cfa_offset 4 234 00c4 BD46 mov sp, r7 235 .cfi_def_cfa_register 13 236 @ sp needed 237 00c6 5DF8047B ldr r7, [sp], #4 ARM GAS /tmp/cc0EV5A6.s page 10 238 .cfi_restore 7 239 .cfi_def_cfa_offset 0 240 00ca 7047 bx lr 241 .L13: 242 .align 2 243 .L12: 244 00cc 00100240 .word 1073876992 245 00d0 00000000 .word SystemCoreClock 246 00d4 00127A00 .word 8000000 247 00d8 0024F400 .word 16000000 248 00dc 00093D00 .word 4000000 249 00e0 00000000 .word AHBPrescTable 250 .cfi_endproc 251 .LFE131: 253 .text 254 .Letext0: 255 .file 2 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 256 .file 3 "/nix/store/p8vkamc9b2vlibs9aw76vnasdbifhcbm-gcc-arm-embedded-13.2.rel1/arm-none-eabi/incl 257 .file 4 "Drivers/CMSIS/Include/core_cm4.h" 258 .file 5 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/system_stm32f3xx.h" 259 .file 6 "Drivers/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h" ARM GAS /tmp/cc0EV5A6.s page 11 DEFINED SYMBOLS *ABS*:00000000 system_stm32f3xx.c /tmp/cc0EV5A6.s:25 .data.SystemCoreClock:00000000 SystemCoreClock /tmp/cc0EV5A6.s:22 .data.SystemCoreClock:00000000 $d /tmp/cc0EV5A6.s:32 .rodata.AHBPrescTable:00000000 AHBPrescTable /tmp/cc0EV5A6.s:29 .rodata.AHBPrescTable:00000000 $d /tmp/cc0EV5A6.s:40 .rodata.APBPrescTable:00000000 APBPrescTable /tmp/cc0EV5A6.s:37 .rodata.APBPrescTable:00000000 $d /tmp/cc0EV5A6.s:43 .text.SystemInit:00000000 $t /tmp/cc0EV5A6.s:49 .text.SystemInit:00000000 SystemInit /tmp/cc0EV5A6.s:80 .text.SystemInit:00000020 $d /tmp/cc0EV5A6.s:85 .text.SystemCoreClockUpdate:00000000 $t /tmp/cc0EV5A6.s:91 .text.SystemCoreClockUpdate:00000000 SystemCoreClockUpdate /tmp/cc0EV5A6.s:244 .text.SystemCoreClockUpdate:000000cc $d NO UNDEFINED SYMBOLS