File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -893,7 +893,12 @@ __weak uint32_t HAL_RCC_GetSysClockFreq(void)
893893 if (__HAL_RCC_GET_PLL_OSCSOURCE () != RCC_PLLSOURCE_HSI )
894894 {
895895 /* HSE used as PLL clock source */
896- pllvco = ((HSE_VALUE / pllm ) * ((RCC -> PLLCFGR & RCC_PLLCFGR_PLLN ) >> POSITION_VAL (RCC_PLLCFGR_PLLN )));
896+ //pllvco = ((HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> POSITION_VAL(RCC_PLLCFGR_PLLN)));
897+ // dpgeorge: Adjust the way the arithmetic is done so it retains
898+ // precision for the case that pllm doesn't evenly divide HSE_VALUE.
899+ // Must be sure not to overflow, so divide by 4 first. HSE_VALUE
900+ // should be a multiple of 4 (being a multiple of 100 is enough).
901+ pllvco = ((HSE_VALUE / 4 ) * ((RCC -> PLLCFGR & RCC_PLLCFGR_PLLN ) >> POSITION_VAL (RCC_PLLCFGR_PLLN ))) / pllm * 4 ;
897902 }
898903 else
899904 {
You can’t perform that action at this time.
0 commit comments