本帖最后由 wowow 于 2015-4-23 13:08 编辑
stm32f4xx_hal_rcc.c中 HAL_RCC_GetSysClockFreq(),
例如:HSE_VALUE = 24000000, pllm=196,plln=14,pllp=2, 原算法结果sysclockfreq=167,999,930,正确结果是168,000,000
原因在如下行:
pllvco = ((HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> POSITION_VAL(RCC_PLLCFGR_PLLN)));
当HSE_VALUE / pllm结果不是整数时,pllvco结果有误
改成:pllvco = ((uint64_t)HSE_VALUE * plln / pllm);
像这样的bug该向谁报告啊?
2015-04-23:
开源链接:https://git.oschina.net/dingtu/STM32Cube_FW_F4_BugFix
接交点:https://git.oschina.net/dingtu/S ... 34a289be7dfeba36ddb
|