|
93 | 93 | is no need to call the 2 first functions listed above, since SystemCoreClock |
94 | 94 | variable is updated automatically. |
95 | 95 | */ |
96 | | - uint32_t SystemCoreClock = 48000000UL; |
| 96 | + uint32_t SystemCoreClock = 12000000UL; |
97 | 97 |
|
98 | 98 | const uint32_t AHBPrescTable[16UL] = {0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL, 6UL, 7UL, 8UL, 9UL}; |
99 | 99 | const uint32_t APBPrescTable[8UL] = {0UL, 0UL, 0UL, 0UL, 1UL, 2UL, 3UL, 4UL}; |
@@ -171,26 +171,38 @@ void SystemCoreClockUpdate(void) |
171 | 171 | { |
172 | 172 | uint32_t tmp; |
173 | 173 | uint32_t hsidiv; |
| 174 | + uint32_t sysdiv; |
| 175 | +#if defined(RCC_CR_SYSDIV) |
| 176 | + sysdiv = (uint32_t)(((RCC->CR & RCC_CR_SYSDIV) >> RCC_CR_SYSDIV_Pos) + 1U); |
| 177 | +#else |
| 178 | + sysdiv = 1U; |
| 179 | +#endif /* RCC_CR_SYSDIV */ |
174 | 180 |
|
175 | 181 | /* Get SYSCLK source -------------------------------------------------------*/ |
176 | 182 | switch (RCC->CFGR & RCC_CFGR_SWS) |
177 | 183 | { |
178 | 184 | case RCC_CFGR_SWS_0: /* HSE used as system clock */ |
179 | | - SystemCoreClock = HSE_VALUE; |
| 185 | + SystemCoreClock = (HSE_VALUE / sysdiv); |
| 186 | + break; |
| 187 | + |
| 188 | +#if defined(RCC_HSI48_SUPPORT) |
| 189 | + case RCC_CFGR_SW_1: /* HSI48 used as system clock */ |
| 190 | + SystemCoreClock = (HSI48_VALUE / sysdiv); |
180 | 191 | break; |
| 192 | +#endif /* RCC_HSI48_SUPPORT */ |
181 | 193 |
|
182 | 194 | case (RCC_CFGR_SWS_1 | RCC_CFGR_SWS_0): /* LSI used as system clock */ |
183 | | - SystemCoreClock = LSI_VALUE; |
| 195 | + SystemCoreClock = (LSI_VALUE / sysdiv); |
184 | 196 | break; |
185 | 197 |
|
186 | 198 | case RCC_CFGR_SWS_2: /* LSE used as system clock */ |
187 | | - SystemCoreClock = LSE_VALUE; |
| 199 | + SystemCoreClock = (LSE_VALUE / sysdiv); |
188 | 200 | break; |
189 | 201 |
|
190 | 202 | case 0x00000000U: /* HSI used as system clock */ |
191 | 203 | default: /* HSI used as system clock */ |
192 | 204 | hsidiv = (1UL << ((READ_BIT(RCC->CR, RCC_CR_HSIDIV))>> RCC_CR_HSIDIV_Pos)); |
193 | | - SystemCoreClock = (HSI_VALUE/hsidiv); |
| 205 | + SystemCoreClock = ((HSI_VALUE / sysdiv) / hsidiv); |
194 | 206 | break; |
195 | 207 | } |
196 | 208 | /* Compute HCLK clock frequency --------------------------------------------*/ |
|
0 commit comments