ARM GAS /tmp/ccwdC0Nl.s page 1 1 .cpu cortex-m4 2 .eabi_attribute 27, 1 3 .eabi_attribute 28, 1 4 .eabi_attribute 20, 1 5 .eabi_attribute 21, 1 6 .eabi_attribute 23, 3 7 .eabi_attribute 24, 1 8 .eabi_attribute 25, 1 9 .eabi_attribute 26, 1 10 .eabi_attribute 30, 1 11 .eabi_attribute 34, 1 12 .eabi_attribute 18, 4 13 .file "system_stm32f4xx.c" 14 .text 15 .Ltext0: 16 .cfi_sections .debug_frame 17 .section .text.SystemInit,"ax",%progbits 18 .align 1 19 .global SystemInit 20 .syntax unified 21 .thumb 22 .thumb_func 23 .fpu fpv4-sp-d16 25 SystemInit: 26 .LFB130: 27 .file 1 "Src/system_stm32f4xx.c" 1:Src/system_stm32f4xx.c **** /** 2:Src/system_stm32f4xx.c **** ****************************************************************************** 3:Src/system_stm32f4xx.c **** * @file system_stm32f4xx.c 4:Src/system_stm32f4xx.c **** * @author MCD Application Team 5:Src/system_stm32f4xx.c **** * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File. 6:Src/system_stm32f4xx.c **** * 7:Src/system_stm32f4xx.c **** * This file provides two functions and one global variable to be called from 8:Src/system_stm32f4xx.c **** * user application: 9:Src/system_stm32f4xx.c **** * - SystemInit(): This function is called at startup just after reset and 10:Src/system_stm32f4xx.c **** * before branch to main program. This call is made inside 11:Src/system_stm32f4xx.c **** * the "startup_stm32f4xx.s" file. 12:Src/system_stm32f4xx.c **** * 13:Src/system_stm32f4xx.c **** * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used 14:Src/system_stm32f4xx.c **** * by the user application to setup the SysTick 15:Src/system_stm32f4xx.c **** * timer or configure other parameters. 16:Src/system_stm32f4xx.c **** * 17:Src/system_stm32f4xx.c **** * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must 18:Src/system_stm32f4xx.c **** * be called whenever the core clock is changed 19:Src/system_stm32f4xx.c **** * during program execution. 20:Src/system_stm32f4xx.c **** * 21:Src/system_stm32f4xx.c **** * 22:Src/system_stm32f4xx.c **** ****************************************************************************** 23:Src/system_stm32f4xx.c **** * @attention 24:Src/system_stm32f4xx.c **** * 25:Src/system_stm32f4xx.c **** *

© COPYRIGHT 2017 STMicroelectronics

26:Src/system_stm32f4xx.c **** * 27:Src/system_stm32f4xx.c **** * Redistribution and use in source and binary forms, with or without modification, 28:Src/system_stm32f4xx.c **** * are permitted provided that the following conditions are met: 29:Src/system_stm32f4xx.c **** * 1. Redistributions of source code must retain the above copyright notice, 30:Src/system_stm32f4xx.c **** * this list of conditions and the following disclaimer. 31:Src/system_stm32f4xx.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, ARM GAS /tmp/ccwdC0Nl.s page 2 32:Src/system_stm32f4xx.c **** * this list of conditions and the following disclaimer in the documentation 33:Src/system_stm32f4xx.c **** * and/or other materials provided with the distribution. 34:Src/system_stm32f4xx.c **** * 3. Neither the name of STMicroelectronics nor the names of its contributors 35:Src/system_stm32f4xx.c **** * may be used to endorse or promote products derived from this software 36:Src/system_stm32f4xx.c **** * without specific prior written permission. 37:Src/system_stm32f4xx.c **** * 38:Src/system_stm32f4xx.c **** * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 39:Src/system_stm32f4xx.c **** * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 40:Src/system_stm32f4xx.c **** * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 41:Src/system_stm32f4xx.c **** * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 42:Src/system_stm32f4xx.c **** * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 43:Src/system_stm32f4xx.c **** * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 44:Src/system_stm32f4xx.c **** * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 45:Src/system_stm32f4xx.c **** * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 46:Src/system_stm32f4xx.c **** * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 47:Src/system_stm32f4xx.c **** * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 48:Src/system_stm32f4xx.c **** * 49:Src/system_stm32f4xx.c **** ****************************************************************************** 50:Src/system_stm32f4xx.c **** */ 51:Src/system_stm32f4xx.c **** 52:Src/system_stm32f4xx.c **** /** @addtogroup CMSIS 53:Src/system_stm32f4xx.c **** * @{ 54:Src/system_stm32f4xx.c **** */ 55:Src/system_stm32f4xx.c **** 56:Src/system_stm32f4xx.c **** /** @addtogroup stm32f4xx_system 57:Src/system_stm32f4xx.c **** * @{ 58:Src/system_stm32f4xx.c **** */ 59:Src/system_stm32f4xx.c **** 60:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_Includes 61:Src/system_stm32f4xx.c **** * @{ 62:Src/system_stm32f4xx.c **** */ 63:Src/system_stm32f4xx.c **** 64:Src/system_stm32f4xx.c **** 65:Src/system_stm32f4xx.c **** #include "stm32f4xx.h" 66:Src/system_stm32f4xx.c **** 67:Src/system_stm32f4xx.c **** #if !defined (HSE_VALUE) 68:Src/system_stm32f4xx.c **** #define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */ 69:Src/system_stm32f4xx.c **** #endif /* HSE_VALUE */ 70:Src/system_stm32f4xx.c **** 71:Src/system_stm32f4xx.c **** #if !defined (HSI_VALUE) 72:Src/system_stm32f4xx.c **** #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/ 73:Src/system_stm32f4xx.c **** #endif /* HSI_VALUE */ 74:Src/system_stm32f4xx.c **** 75:Src/system_stm32f4xx.c **** /** 76:Src/system_stm32f4xx.c **** * @} 77:Src/system_stm32f4xx.c **** */ 78:Src/system_stm32f4xx.c **** 79:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_TypesDefinitions 80:Src/system_stm32f4xx.c **** * @{ 81:Src/system_stm32f4xx.c **** */ 82:Src/system_stm32f4xx.c **** 83:Src/system_stm32f4xx.c **** /** 84:Src/system_stm32f4xx.c **** * @} 85:Src/system_stm32f4xx.c **** */ 86:Src/system_stm32f4xx.c **** 87:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_Defines 88:Src/system_stm32f4xx.c **** * @{ ARM GAS /tmp/ccwdC0Nl.s page 3 89:Src/system_stm32f4xx.c **** */ 90:Src/system_stm32f4xx.c **** 91:Src/system_stm32f4xx.c **** /************************* Miscellaneous Configuration ************************/ 92:Src/system_stm32f4xx.c **** /*!< Uncomment the following line if you need to use external SRAM or SDRAM as data memory */ 93:Src/system_stm32f4xx.c **** #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)\ 94:Src/system_stm32f4xx.c **** || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ 95:Src/system_stm32f4xx.c **** || defined(STM32F469xx) || defined(STM32F479xx) || defined(STM32F412Zx) || defined(STM32F412Vx) 96:Src/system_stm32f4xx.c **** /* #define DATA_IN_ExtSRAM */ 97:Src/system_stm32f4xx.c **** #endif /* STM32F40xxx || STM32F41xxx || STM32F42xxx || STM32F43xxx || STM32F469xx || STM32F479xx || 98:Src/system_stm32f4xx.c **** STM32F412Zx || STM32F412Vx */ 99:Src/system_stm32f4xx.c **** 100:Src/system_stm32f4xx.c **** #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)\ 101:Src/system_stm32f4xx.c **** || defined(STM32F446xx) || defined(STM32F469xx) || defined(STM32F479xx) 102:Src/system_stm32f4xx.c **** /* #define DATA_IN_ExtSDRAM */ 103:Src/system_stm32f4xx.c **** #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx || STM32F446xx || STM32F469xx || 104:Src/system_stm32f4xx.c **** STM32F479xx */ 105:Src/system_stm32f4xx.c **** 106:Src/system_stm32f4xx.c **** /*!< Uncomment the following line if you need to relocate your vector Table in 107:Src/system_stm32f4xx.c **** Internal SRAM. */ 108:Src/system_stm32f4xx.c **** /* #define VECT_TAB_SRAM */ 109:Src/system_stm32f4xx.c **** #define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. 110:Src/system_stm32f4xx.c **** This value must be a multiple of 0x200. */ 111:Src/system_stm32f4xx.c **** /******************************************************************************/ 112:Src/system_stm32f4xx.c **** 113:Src/system_stm32f4xx.c **** /** 114:Src/system_stm32f4xx.c **** * @} 115:Src/system_stm32f4xx.c **** */ 116:Src/system_stm32f4xx.c **** 117:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_Macros 118:Src/system_stm32f4xx.c **** * @{ 119:Src/system_stm32f4xx.c **** */ 120:Src/system_stm32f4xx.c **** 121:Src/system_stm32f4xx.c **** /** 122:Src/system_stm32f4xx.c **** * @} 123:Src/system_stm32f4xx.c **** */ 124:Src/system_stm32f4xx.c **** 125:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_Variables 126:Src/system_stm32f4xx.c **** * @{ 127:Src/system_stm32f4xx.c **** */ 128:Src/system_stm32f4xx.c **** /* This variable is updated in three ways: 129:Src/system_stm32f4xx.c **** 1) by calling CMSIS function SystemCoreClockUpdate() 130:Src/system_stm32f4xx.c **** 2) by calling HAL API function HAL_RCC_GetHCLKFreq() 131:Src/system_stm32f4xx.c **** 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency 132:Src/system_stm32f4xx.c **** Note: If you use this function to configure the system clock; then there 133:Src/system_stm32f4xx.c **** is no need to call the 2 first functions listed above, since SystemCoreClock 134:Src/system_stm32f4xx.c **** variable is updated automatically. 135:Src/system_stm32f4xx.c **** */ 136:Src/system_stm32f4xx.c **** uint32_t SystemCoreClock = 16000000; 137:Src/system_stm32f4xx.c **** const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; 138:Src/system_stm32f4xx.c **** const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4}; 139:Src/system_stm32f4xx.c **** /** 140:Src/system_stm32f4xx.c **** * @} 141:Src/system_stm32f4xx.c **** */ 142:Src/system_stm32f4xx.c **** 143:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_FunctionPrototypes 144:Src/system_stm32f4xx.c **** * @{ 145:Src/system_stm32f4xx.c **** */ ARM GAS /tmp/ccwdC0Nl.s page 4 146:Src/system_stm32f4xx.c **** 147:Src/system_stm32f4xx.c **** #if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) 148:Src/system_stm32f4xx.c **** static void SystemInit_ExtMemCtl(void); 149:Src/system_stm32f4xx.c **** #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ 150:Src/system_stm32f4xx.c **** 151:Src/system_stm32f4xx.c **** /** 152:Src/system_stm32f4xx.c **** * @} 153:Src/system_stm32f4xx.c **** */ 154:Src/system_stm32f4xx.c **** 155:Src/system_stm32f4xx.c **** /** @addtogroup STM32F4xx_System_Private_Functions 156:Src/system_stm32f4xx.c **** * @{ 157:Src/system_stm32f4xx.c **** */ 158:Src/system_stm32f4xx.c **** 159:Src/system_stm32f4xx.c **** /** 160:Src/system_stm32f4xx.c **** * @brief Setup the microcontroller system 161:Src/system_stm32f4xx.c **** * Initialize the FPU setting, vector table location and External memory 162:Src/system_stm32f4xx.c **** * configuration. 163:Src/system_stm32f4xx.c **** * @param None 164:Src/system_stm32f4xx.c **** * @retval None 165:Src/system_stm32f4xx.c **** */ 166:Src/system_stm32f4xx.c **** void SystemInit(void) 167:Src/system_stm32f4xx.c **** { 28 .loc 1 167 0 29 .cfi_startproc 30 @ args = 0, pretend = 0, frame = 0 31 @ frame_needed = 0, uses_anonymous_args = 0 32 @ link register save eliminated. 168:Src/system_stm32f4xx.c **** /* FPU settings ------------------------------------------------------------*/ 169:Src/system_stm32f4xx.c **** #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) 170:Src/system_stm32f4xx.c **** SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ 33 .loc 1 170 0 34 0000 0F49 ldr r1, .L2 35 0002 D1F88830 ldr r3, [r1, #136] 36 0006 43F47003 orr r3, r3, #15728640 37 000a C1F88830 str r3, [r1, #136] 171:Src/system_stm32f4xx.c **** #endif 172:Src/system_stm32f4xx.c **** /* Reset the RCC clock configuration to the default reset state ------------*/ 173:Src/system_stm32f4xx.c **** /* Set HSION bit */ 174:Src/system_stm32f4xx.c **** RCC->CR |= (uint32_t)0x00000001; 38 .loc 1 174 0 39 000e 0D4B ldr r3, .L2+4 40 0010 1A68 ldr r2, [r3] 41 0012 42F00102 orr r2, r2, #1 42 0016 1A60 str r2, [r3] 175:Src/system_stm32f4xx.c **** 176:Src/system_stm32f4xx.c **** /* Reset CFGR register */ 177:Src/system_stm32f4xx.c **** RCC->CFGR = 0x00000000; 43 .loc 1 177 0 44 0018 0020 movs r0, #0 45 001a 9860 str r0, [r3, #8] 178:Src/system_stm32f4xx.c **** 179:Src/system_stm32f4xx.c **** /* Reset HSEON, CSSON and PLLON bits */ 180:Src/system_stm32f4xx.c **** RCC->CR &= (uint32_t)0xFEF6FFFF; 46 .loc 1 180 0 47 001c 1A68 ldr r2, [r3] 48 001e 22F08472 bic r2, r2, #17301504 49 0022 22F48032 bic r2, r2, #65536 ARM GAS /tmp/ccwdC0Nl.s page 5 50 0026 1A60 str r2, [r3] 181:Src/system_stm32f4xx.c **** 182:Src/system_stm32f4xx.c **** /* Reset PLLCFGR register */ 183:Src/system_stm32f4xx.c **** RCC->PLLCFGR = 0x24003010; 51 .loc 1 183 0 52 0028 074A ldr r2, .L2+8 53 002a 5A60 str r2, [r3, #4] 184:Src/system_stm32f4xx.c **** 185:Src/system_stm32f4xx.c **** /* Reset HSEBYP bit */ 186:Src/system_stm32f4xx.c **** RCC->CR &= (uint32_t)0xFFFBFFFF; 54 .loc 1 186 0 55 002c 1A68 ldr r2, [r3] 56 002e 22F48022 bic r2, r2, #262144 57 0032 1A60 str r2, [r3] 187:Src/system_stm32f4xx.c **** 188:Src/system_stm32f4xx.c **** /* Disable all interrupts */ 189:Src/system_stm32f4xx.c **** RCC->CIR = 0x00000000; 58 .loc 1 189 0 59 0034 D860 str r0, [r3, #12] 190:Src/system_stm32f4xx.c **** 191:Src/system_stm32f4xx.c **** #if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM) 192:Src/system_stm32f4xx.c **** SystemInit_ExtMemCtl(); 193:Src/system_stm32f4xx.c **** #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */ 194:Src/system_stm32f4xx.c **** 195:Src/system_stm32f4xx.c **** /* Configure the Vector Table location add offset address ------------------*/ 196:Src/system_stm32f4xx.c **** #ifdef VECT_TAB_SRAM 197:Src/system_stm32f4xx.c **** SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ 198:Src/system_stm32f4xx.c **** #else 199:Src/system_stm32f4xx.c **** SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ 60 .loc 1 199 0 61 0036 4FF00063 mov r3, #134217728 62 003a 8B60 str r3, [r1, #8] 63 003c 7047 bx lr 64 .L3: 65 003e 00BF .align 2 66 .L2: 67 0040 00ED00E0 .word -536810240 68 0044 00380240 .word 1073887232 69 0048 10300024 .word 603992080 70 .cfi_endproc 71 .LFE130: 73 .section .text.SystemCoreClockUpdate,"ax",%progbits 74 .align 1 75 .global SystemCoreClockUpdate 76 .syntax unified 77 .thumb 78 .thumb_func 79 .fpu fpv4-sp-d16 81 SystemCoreClockUpdate: 82 .LFB131: 200:Src/system_stm32f4xx.c **** #endif 201:Src/system_stm32f4xx.c **** } 202:Src/system_stm32f4xx.c **** 203:Src/system_stm32f4xx.c **** /** 204:Src/system_stm32f4xx.c **** * @brief Update SystemCoreClock variable according to Clock Register Values. 205:Src/system_stm32f4xx.c **** * The SystemCoreClock variable contains the core clock (HCLK), it can 206:Src/system_stm32f4xx.c **** * be used by the user application to setup the SysTick timer or configure ARM GAS /tmp/ccwdC0Nl.s page 6 207:Src/system_stm32f4xx.c **** * other parameters. 208:Src/system_stm32f4xx.c **** * 209:Src/system_stm32f4xx.c **** * @note Each time the core clock (HCLK) changes, this function must be called 210:Src/system_stm32f4xx.c **** * to update SystemCoreClock variable value. Otherwise, any configuration 211:Src/system_stm32f4xx.c **** * based on this variable will be incorrect. 212:Src/system_stm32f4xx.c **** * 213:Src/system_stm32f4xx.c **** * @note - The system frequency computed by this function is not the real 214:Src/system_stm32f4xx.c **** * frequency in the chip. It is calculated based on the predefined 215:Src/system_stm32f4xx.c **** * constant and the selected clock source: 216:Src/system_stm32f4xx.c **** * 217:Src/system_stm32f4xx.c **** * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) 218:Src/system_stm32f4xx.c **** * 219:Src/system_stm32f4xx.c **** * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) 220:Src/system_stm32f4xx.c **** * 221:Src/system_stm32f4xx.c **** * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) 222:Src/system_stm32f4xx.c **** * or HSI_VALUE(*) multiplied/divided by the PLL factors. 223:Src/system_stm32f4xx.c **** * 224:Src/system_stm32f4xx.c **** * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value 225:Src/system_stm32f4xx.c **** * 16 MHz) but the real value may vary depending on the variations 226:Src/system_stm32f4xx.c **** * in voltage and temperature. 227:Src/system_stm32f4xx.c **** * 228:Src/system_stm32f4xx.c **** * (**) HSE_VALUE is a constant defined in stm32f4xx_hal_conf.h file (its value 229:Src/system_stm32f4xx.c **** * depends on the application requirements), user has to ensure that HSE_VALUE 230:Src/system_stm32f4xx.c **** * is same as the real frequency of the crystal used. Otherwise, this function 231:Src/system_stm32f4xx.c **** * may have wrong result. 232:Src/system_stm32f4xx.c **** * 233:Src/system_stm32f4xx.c **** * - The result of this function could be not correct when using fractional 234:Src/system_stm32f4xx.c **** * value for HSE crystal. 235:Src/system_stm32f4xx.c **** * 236:Src/system_stm32f4xx.c **** * @param None 237:Src/system_stm32f4xx.c **** * @retval None 238:Src/system_stm32f4xx.c **** */ 239:Src/system_stm32f4xx.c **** void SystemCoreClockUpdate(void) 240:Src/system_stm32f4xx.c **** { 83 .loc 1 240 0 84 .cfi_startproc 85 @ args = 0, pretend = 0, frame = 0 86 @ frame_needed = 0, uses_anonymous_args = 0 87 @ link register save eliminated. 88 .LVL0: 241:Src/system_stm32f4xx.c **** uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2; 242:Src/system_stm32f4xx.c **** 243:Src/system_stm32f4xx.c **** /* Get SYSCLK source -------------------------------------------------------*/ 244:Src/system_stm32f4xx.c **** tmp = RCC->CFGR & RCC_CFGR_SWS; 89 .loc 1 244 0 90 0000 224B ldr r3, .L14 91 0002 9B68 ldr r3, [r3, #8] 92 0004 03F00C03 and r3, r3, #12 93 .LVL1: 245:Src/system_stm32f4xx.c **** 246:Src/system_stm32f4xx.c **** switch (tmp) 94 .loc 1 246 0 95 0008 042B cmp r3, #4 96 000a 14D0 beq .L6 97 000c 082B cmp r3, #8 98 000e 16D0 beq .L7 99 0010 1BB1 cbz r3, .L13 ARM GAS /tmp/ccwdC0Nl.s page 7 247:Src/system_stm32f4xx.c **** { 248:Src/system_stm32f4xx.c **** case 0x00: /* HSI used as system clock source */ 249:Src/system_stm32f4xx.c **** SystemCoreClock = HSI_VALUE; 250:Src/system_stm32f4xx.c **** break; 251:Src/system_stm32f4xx.c **** case 0x04: /* HSE used as system clock source */ 252:Src/system_stm32f4xx.c **** SystemCoreClock = HSE_VALUE; 253:Src/system_stm32f4xx.c **** break; 254:Src/system_stm32f4xx.c **** case 0x08: /* PLL used as system clock source */ 255:Src/system_stm32f4xx.c **** 256:Src/system_stm32f4xx.c **** /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N 257:Src/system_stm32f4xx.c **** SYSCLK = PLL_VCO / PLL_P 258:Src/system_stm32f4xx.c **** */ 259:Src/system_stm32f4xx.c **** pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22; 260:Src/system_stm32f4xx.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; 261:Src/system_stm32f4xx.c **** 262:Src/system_stm32f4xx.c **** if (pllsource != 0) 263:Src/system_stm32f4xx.c **** { 264:Src/system_stm32f4xx.c **** /* HSE used as PLL clock source */ 265:Src/system_stm32f4xx.c **** pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); 266:Src/system_stm32f4xx.c **** } 267:Src/system_stm32f4xx.c **** else 268:Src/system_stm32f4xx.c **** { 269:Src/system_stm32f4xx.c **** /* HSI used as PLL clock source */ 270:Src/system_stm32f4xx.c **** pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6); 271:Src/system_stm32f4xx.c **** } 272:Src/system_stm32f4xx.c **** 273:Src/system_stm32f4xx.c **** pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2; 274:Src/system_stm32f4xx.c **** SystemCoreClock = pllvco/pllp; 275:Src/system_stm32f4xx.c **** break; 276:Src/system_stm32f4xx.c **** default: 277:Src/system_stm32f4xx.c **** SystemCoreClock = HSI_VALUE; 100 .loc 1 277 0 101 0012 1F4A ldr r2, .L14+4 102 0014 1F4B ldr r3, .L14+8 103 .LVL2: 104 0016 1A60 str r2, [r3] 278:Src/system_stm32f4xx.c **** break; 105 .loc 1 278 0 106 0018 02E0 b .L9 107 .LVL3: 108 .L13: 249:Src/system_stm32f4xx.c **** break; 109 .loc 1 249 0 110 001a 1D4A ldr r2, .L14+4 111 001c 1D4B ldr r3, .L14+8 112 .LVL4: 113 001e 1A60 str r2, [r3] 114 .LVL5: 115 .L9: 279:Src/system_stm32f4xx.c **** } 280:Src/system_stm32f4xx.c **** /* Compute HCLK frequency --------------------------------------------------*/ 281:Src/system_stm32f4xx.c **** /* Get HCLK prescaler */ 282:Src/system_stm32f4xx.c **** tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)]; 116 .loc 1 282 0 117 0020 1A4B ldr r3, .L14 118 0022 9B68 ldr r3, [r3, #8] 119 0024 C3F30313 ubfx r3, r3, #4, #4 ARM GAS /tmp/ccwdC0Nl.s page 8 120 0028 1B4A ldr r2, .L14+12 121 002a D15C ldrb r1, [r2, r3] @ zero_extendqisi2 122 .LVL6: 283:Src/system_stm32f4xx.c **** /* HCLK frequency */ 284:Src/system_stm32f4xx.c **** SystemCoreClock >>= tmp; 123 .loc 1 284 0 124 002c 194A ldr r2, .L14+8 125 002e 1368 ldr r3, [r2] 126 0030 CB40 lsrs r3, r3, r1 127 0032 1360 str r3, [r2] 128 0034 7047 bx lr 129 .LVL7: 130 .L6: 252:Src/system_stm32f4xx.c **** break; 131 .loc 1 252 0 132 0036 194A ldr r2, .L14+16 133 0038 164B ldr r3, .L14+8 134 .LVL8: 135 003a 1A60 str r2, [r3] 253:Src/system_stm32f4xx.c **** case 0x08: /* PLL used as system clock source */ 136 .loc 1 253 0 137 003c F0E7 b .L9 138 .LVL9: 139 .L7: 259:Src/system_stm32f4xx.c **** pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM; 140 .loc 1 259 0 141 003e 134B ldr r3, .L14 142 .LVL10: 143 0040 5A68 ldr r2, [r3, #4] 144 .LVL11: 260:Src/system_stm32f4xx.c **** 145 .loc 1 260 0 146 0042 5B68 ldr r3, [r3, #4] 147 0044 03F03F03 and r3, r3, #63 148 .LVL12: 262:Src/system_stm32f4xx.c **** { 149 .loc 1 262 0 150 0048 12F4800F tst r2, #4194304 151 004c 13D0 beq .L10 265:Src/system_stm32f4xx.c **** } 152 .loc 1 265 0 153 004e 134A ldr r2, .L14+16 154 .LVL13: 155 0050 B2FBF3F2 udiv r2, r2, r3 156 0054 0D4B ldr r3, .L14 157 .LVL14: 158 0056 5B68 ldr r3, [r3, #4] 159 0058 C3F38813 ubfx r3, r3, #6, #9 160 005c 03FB02F3 mul r3, r3, r2 161 .LVL15: 162 .L11: 273:Src/system_stm32f4xx.c **** SystemCoreClock = pllvco/pllp; 163 .loc 1 273 0 164 0060 0A4A ldr r2, .L14 165 0062 5268 ldr r2, [r2, #4] 166 0064 C2F30142 ubfx r2, r2, #16, #2 167 0068 0132 adds r2, r2, #1 ARM GAS /tmp/ccwdC0Nl.s page 9 168 006a 5200 lsls r2, r2, #1 169 .LVL16: 274:Src/system_stm32f4xx.c **** break; 170 .loc 1 274 0 171 006c B3FBF2F3 udiv r3, r3, r2 172 .LVL17: 173 0070 084A ldr r2, .L14+8 174 .LVL18: 175 0072 1360 str r3, [r2] 275:Src/system_stm32f4xx.c **** default: 176 .loc 1 275 0 177 0074 D4E7 b .L9 178 .LVL19: 179 .L10: 270:Src/system_stm32f4xx.c **** } 180 .loc 1 270 0 181 0076 064A ldr r2, .L14+4 182 .LVL20: 183 0078 B2FBF3F2 udiv r2, r2, r3 184 007c 034B ldr r3, .L14 185 .LVL21: 186 007e 5B68 ldr r3, [r3, #4] 187 0080 C3F38813 ubfx r3, r3, #6, #9 188 0084 03FB02F3 mul r3, r3, r2 189 .LVL22: 190 0088 EAE7 b .L11 191 .L15: 192 008a 00BF .align 2 193 .L14: 194 008c 00380240 .word 1073887232 195 0090 0024F400 .word 16000000 196 0094 00000000 .word .LANCHOR0 197 0098 00000000 .word .LANCHOR1 198 009c 40787D01 .word 25000000 199 .cfi_endproc 200 .LFE131: 202 .global APBPrescTable 203 .global AHBPrescTable 204 .global SystemCoreClock 205 .section .data.SystemCoreClock,"aw",%progbits 206 .align 2 207 .set .LANCHOR0,. + 0 210 SystemCoreClock: 211 0000 0024F400 .word 16000000 212 .section .rodata.AHBPrescTable,"a",%progbits 213 .align 2 214 .set .LANCHOR1,. + 0 217 AHBPrescTable: 218 0000 00 .byte 0 219 0001 00 .byte 0 220 0002 00 .byte 0 221 0003 00 .byte 0 222 0004 00 .byte 0 223 0005 00 .byte 0 224 0006 00 .byte 0 225 0007 00 .byte 0 226 0008 01 .byte 1 ARM GAS /tmp/ccwdC0Nl.s page 10 227 0009 02 .byte 2 228 000a 03 .byte 3 229 000b 04 .byte 4 230 000c 06 .byte 6 231 000d 07 .byte 7 232 000e 08 .byte 8 233 000f 09 .byte 9 234 .section .rodata.APBPrescTable,"a",%progbits 235 .align 2 238 APBPrescTable: 239 0000 00 .byte 0 240 0001 00 .byte 0 241 0002 00 .byte 0 242 0003 00 .byte 0 243 0004 01 .byte 1 244 0005 02 .byte 2 245 0006 03 .byte 3 246 0007 04 .byte 4 247 .text 248 .Letext0: 249 .file 2 "/usr/include/newlib/machine/_default_types.h" 250 .file 3 "/usr/include/newlib/sys/_stdint.h" 251 .file 4 "Drivers/CMSIS/Include/core_cm4.h" 252 .file 5 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h" 253 .file 6 "Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h" ARM GAS /tmp/ccwdC0Nl.s page 11 DEFINED SYMBOLS *ABS*:0000000000000000 system_stm32f4xx.c /tmp/ccwdC0Nl.s:18 .text.SystemInit:0000000000000000 $t /tmp/ccwdC0Nl.s:25 .text.SystemInit:0000000000000000 SystemInit /tmp/ccwdC0Nl.s:67 .text.SystemInit:0000000000000040 $d /tmp/ccwdC0Nl.s:74 .text.SystemCoreClockUpdate:0000000000000000 $t /tmp/ccwdC0Nl.s:81 .text.SystemCoreClockUpdate:0000000000000000 SystemCoreClockUpdate /tmp/ccwdC0Nl.s:194 .text.SystemCoreClockUpdate:000000000000008c $d /tmp/ccwdC0Nl.s:238 .rodata.APBPrescTable:0000000000000000 APBPrescTable /tmp/ccwdC0Nl.s:217 .rodata.AHBPrescTable:0000000000000000 AHBPrescTable /tmp/ccwdC0Nl.s:210 .data.SystemCoreClock:0000000000000000 SystemCoreClock /tmp/ccwdC0Nl.s:206 .data.SystemCoreClock:0000000000000000 $d /tmp/ccwdC0Nl.s:213 .rodata.AHBPrescTable:0000000000000000 $d /tmp/ccwdC0Nl.s:235 .rodata.APBPrescTable:0000000000000000 $d .debug_frame:0000000000000010 $d NO UNDEFINED SYMBOLS