STM32
直播中

王鑫

8年用户 1271经验值
私信 关注
[问答]

PLL中间量无法整除,HAL库计算时钟不够准确是什么原因导致的?

                                                                                                         

  • HAL_RCC_GetSysClockFreq()
算式采用先除后乘的方式,会因此带来计算偏差。

回帖(1)

倪山骋

2024-5-13 18:13:07
在STM32微控制器中,PLL(Phase-Locked Loop,相位锁定环)用于生成系统时钟。HAL(硬件抽象层)库用于简化硬件操作。当PLL中间量无法整除,或者HAL库计算时钟不够准确时,可能的原因有以下几点:

1. **PLL输入频率不稳定**:如果PLL的输入频率不稳定,可能会导致PLL输出频率不准确。这可能是由于外部晶振或内部RC振荡器的不稳定造成的。

2. **PLL配置错误**:在配置PLL时,需要正确设置输入分频器(PLLM)、输出倍频器(PLLN)和输出分频器(PLLP/PLLQ)。如果这些参数设置不正确,可能会导致PLL输出频率不准确。

3. **HAL库时钟源选择错误**:在HAL库中,需要正确选择系统时钟源。如果选择了错误的时钟源,可能会导致时钟计算不准确。

4. **HAL库时钟树配置错误**:在HAL库中,需要正确配置时钟树,包括系统时钟、AHB时钟、APB1/2时钟等。如果时钟树配置错误,可能会导致时钟计算不准确。

5. **硬件问题**:如果微控制器本身存在硬件问题,例如时钟电路损坏,也可能导致时钟计算不准确。

为了解决这个问题,可以尝试以下步骤:

1. **检查PLL输入频率**:确保PLL的输入频率稳定,可以通过更换晶振或使用更稳定的RC振荡器来提高稳定性。

2. **检查PLL配置**:仔细检查PLL的输入分频器、输出倍频器和输出分频器的设置,确保它们的值是正确的。

3. **检查HAL库时钟源选择**:确保在HAL库中选择了正确的系统时钟源。

4. **检查HAL库时钟树配置**:仔细检查HAL库中的时钟树配置,确保系统时钟、AHB时钟、APB1/2时钟等的配置是正确的。

5. **检查硬件**:如果以上步骤都无法解决问题,可能需要检查微控制器的硬件是否存在问题。

通过以上步骤,可以逐步排查并解决PLL中间量无法整除以及HAL库计算时钟不准确的问题。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分