STM32内部时钟

16

我对我的STM32F7设备上的时钟系统感到困惑(来自STMicroelectronics的Cortex-M7微控制器)。参考手册没有充分阐明这些时钟之间的差异:

  • SYSCLK
  • HCLK
  • FCLK

参考手册在第5.2章“时钟”中称:“RCC使用AHB时钟(HCLK)除以8的值来提供Cortex系统定时器(SysTick)的外部时钟。”
但这种说法与CubeMX中的图表相矛盾。请注意,在CubeMX中,我可以自己选择HCLK到“Cortex系统定时器”的分频器,它不一定是8的倍数。

enter image description here


请注意,SYSCLK!= SysTick。SYSCLK是由系统时钟生成单元(SCGU)生成的“系统时钟”,用于驱动CPU和总线。SysTick是ARMv7-M标准的“系统滴答”定时器,通常用作实时操作系统中的时间基准。 - claymation
有趣的@claymation,谢谢你的评论 :-) - K.Mulier
还要查看设备参考手册上的“核心和总线时钟生成”图表,那非常有启发性。 - mohammadsdtmnd
2个回答

13

通常情况下,HCLKFCLK之间唯一的区别就是:

  • HCLK是主CPU时钟,也用于AHB接口。当CPU处于睡眠状态(例如WFI)时,它可以被屏蔽。
  • FCLKHCLK同步,但在CPU进入睡眠状态时不被屏蔽,以便在中断发生时唤醒。

是的,这就是我从图表中理解到的;所谓“门控”,就是指当不需要时可以停止时钟以节省电源。 - Dric512
3
"门控"的意思是它会通过一个门。特别是AND门,查看RCC寄存器中的所有时钟使能位,这些单独的位用于将时钟与单个外设/逻辑块“与”起来(有时也会“与非”)。在逻辑块上停止时钟边缘可以节省大量电力,在“微控制器”中非常常见。虽然很难将Cortex-M7称为微控制器,但它确实属于该类别。 - old_timer
1
注意将某些东西保持在复位状态并仍然启用时钟并不一定意味着低功率或最低功率,因此时钟门用于防止该时钟通过该块级联可能翻转组合门的实现(并消耗功率)。 - old_timer
谢谢@dwelch,这真的澄清了很多 :-) - K.Mulier
现在我知道HCLK被门控了,而FCLK没有。但它们的实际不同用途是什么?FCLK会驱动Cortex内核,而HCLK会驱动外设吗? - K.Mulier
显示剩余4条评论

0
完整的引用(至少是我正在查看的参考手册)是:
RCC使用AHB时钟(HCLK)除以8来提供Cortex系统定时器(SysTick)的外部时钟。SysTick可以使用这个时钟或Cortex时钟(HCLK)工作,可以在SysTick控制和状态寄存器中进行配置。
诚然,这段话措辞不够清晰,但它的意思很简单,就是SysTick接收到HCLK除以8的时钟信号以及未经分频的HCLK信号。然后,您可以选择SysTick应该跟随哪个时钟信号。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接